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

时间:2015-06-11 10:02:46

标签: c++ visual-studio-2013 mfc cdialog

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

因此,如果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类的成员的情况下创建动态控件呢?

1 个答案:

答案 0 :(得分:1)

"(我不能将他们定义为班级成员,因为我不知道有多少人!)"

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