在 MFC 应用程序中动态创建控件

Create a control dynamically in an MFC application

本文关键字:创建 控件 动态 MFC 应用程序      更新时间:2023-10-16

根据Microsoft的这个链接,应该可以定义一个 CButton 并指定其父窗口 (CDialog),而无需将 CButton 作为对话框的成员,但我做不到。

因此,如果 myButton 是 CDialog 派生 (myCDialog) 类的成员,则以下代码有效:

BOOL myCDialog::OnInitDialog() {
  CDialog::OnInitDialog();
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), this, 1000); 
...
}

但是当我谈论动态创建时,我希望能够动态创建任意数量的按钮(我不能将它们定义为类成员,因为我不知道有多少!

我在另一个类中尝试了以下代码,将指向 myCDialog 的指针作为父窗口,类似于链接中显示的代码,但它失败了:

CButton myButton;
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), pmyCDialog, 1000);

那么,如何在不将它们定义为 CDialog 类成员的情况下创建动态控件呢?

"(我不能将它们定义为类成员,因为我不知道有多少!

您可以将 CButton 或 CButton* 的数组或向量创建为类成员。调用其 Create 时,为每个 ID 分配不同的 ID。