在 MFC 应用程序中动态创建控件
Create a control dynamically in an MFC application
根据 Microsoft 中的 link,应该可以定义一个 CButton 并指定其父级 window (CDialog),而无需将 CButton 作为 Dialog 的成员, 但我做不到。
因此,如果 myButton 是 CDialog 派生 (myCDialog) 的成员 class,则以下代码有效:
BOOL myCDialog::OnInitDialog() {
CDialog::OnInitDialog();
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), this, 1000);
...
}
但是说到动态创建,我希望能够动态创建任意多个按钮(我不能定义为class成员,因为我不知道有多少!)
我在 另一个 class 中尝试了以下代码,将指向 myCDialog 的指针作为父 window,类似于 link,但它失败了:
CButton myButton;
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), pmyCDialog, 1000);
那么,如何创建动态控件而不将它们定义为 CDialog 的成员class?
”(我不能把他们定义为class成员,因为我不知道有多少!)”
您可以创建 CButton 或 CButton* 的数组或向量作为 class 成员。当你调用它的创建时,为它们每个分配一个不同的 ID。
根据 Microsoft 中的 link,应该可以定义一个 CButton 并指定其父级 window (CDialog),而无需将 CButton 作为 Dialog 的成员, 但我做不到。
因此,如果 myButton 是 CDialog 派生 (myCDialog) 的成员 class,则以下代码有效:
BOOL myCDialog::OnInitDialog() {
CDialog::OnInitDialog();
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), this, 1000);
...
}
但是说到动态创建,我希望能够动态创建任意多个按钮(我不能定义为class成员,因为我不知道有多少!)
我在 另一个 class 中尝试了以下代码,将指向 myCDialog 的指针作为父 window,类似于 link,但它失败了:
CButton myButton;
myButton.Create(_T("My button"), WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(10, 20, 100, 50), pmyCDialog, 1000);
那么,如何创建动态控件而不将它们定义为 CDialog 的成员class?
”(我不能把他们定义为class成员,因为我不知道有多少!)”
您可以创建 CButton 或 CButton* 的数组或向量作为 class 成员。当你调用它的创建时,为它们每个分配一个不同的 ID。