在运行时在MFC的派生类中添加控件

Adding controls at runtime in from derived class in MFC

本文关键字:添加 控件 派生 运行时 MFC      更新时间:2023-10-16

我有两个类。类DialogBase继承自CDialog类DialogDerived继承自DialogBase。

BOOL DialodDervied::OnInitDialog()
{
     CDialogBase::OnInitDialog();
     //Add Dynamic Control to Main Dialog from here
}

我想动态地添加一个复选框在对话框(CDialogBase),当它是通过派生类调用。这可能吗?如果是,怎么做?

声明成员变量CButton m_ctrl_chk,重写dialddervied::OnCreate(),并添加如下代码

int DialodDervied::OnCreate(LPCREATESTRUCT lpCreateStruct)
{    if (CDialogEx::OnCreate(lpCreateStruct) == -1)
        return -1;
    m_ctrl_chk.Create(_T("Checkmate"), WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_AUTOCHECKBOX,
        CRect(5, 5, 100, 20), this, 1234); // the 1234 value is the ID of the control
    return 0;
}

使用类似的类(CEdit, CStatic, CButton,…)以同样的方式创建其他类型的控件