gpt4 book ai didi

c++ - 如何在单击时动态创建多个控件

转载 作者:行者123 更新时间:2023-11-30 04:47:29 24 4
gpt4 key购买 nike

我正在尝试在运行时单击按钮时动态地在 M.F.C 对话框中创建多行控件(编辑框、复选框和删除按钮)。并且所有添加的控件都应该显示在滚动窗口中。但不幸的是我找不到解决这个问题的方法。有人有什么想法吗?

我可以创建一行控件。我的问题是如何在单击“添加”按钮时添加多行,以及如何通过单击同一行上的“删除”按钮来删除该行。

点击添加多次后应该是这样的:

|     Edit Box: Type in a Name          |    |Add| 

|Edit Box| |Name 1 (Edit Box)| |Edit Box| |Delete| ^
|Edit Box| |Name 2 (Edit Box)| |Edit Box| |Delete| |
|Edit Box| |Name 3 (Edit Box)| |Edit Box| |Delete| |
etc... v

这是我的一些代码:

int CSettingDlg::AddControlSet() //Create a single row of controls
{
int d = 3500;
if (m_pStrAdd.IsEmpty() == FALSE)
{
GetDlgItem(IDC_TEST1)->GetWindowRect(&rect);
ScreenToClient(&rect);

EditBox = new CEdit;
EditBox->Create(WS_CHILD | WS_VISIBLE | WS_BORDER | ES_READONLY, rect, this, d++);

//using the same code above to create 2 more Edit box

Delete = new CButton;
Delete->Create(_T("Del"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, rect, this, d++);
return TRUE;
}
}

void CSettingDlg::OnBnClickedAddSettingdlg() //Add button Event handler
{
UpdateData();
AddControlSet();
}

最佳答案

当您在窗口环境中处理动态创建控件时,您应该知道XY 方向以在窗体上绘制/创建控件。

监视器的方向如下:

enter image description here

现在假设您要在以 CRect rect(0, 0, 100, 50); 开头的表单上创建控件

然后单行中的一个控件将放置在此位置(在您的情况下为编辑框),当您在同一行中的编辑框旁边添加删除按钮时,您应该在 X 轴获取删除按钮的新位置。因此下一个位置的矩形将类似于 CRect rect(105, 0, 205, 50);

移动到下一行的方式相同,然后 Y 轴应添加少量坐标以获得下一行的新位置。例如,下一行编辑控件坐标将为 CRect rect(0, 55, 100, 105);

关于c++ - 如何在单击时动态创建多个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56233645/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com