mfc中不显示动态创建的按钮
所以我有这个密码mfc中不显示动态创建的按钮,mfc,cbutton,Mfc,Cbutton,所以我有这个密码 CButton details; details.Create(_T("details"),WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,CRect(120,100,100,30), this, 15000); 但它什么也不做(创建按钮创建后不可见)。我错过了什么 编辑:代码位于基于对话框的应用程序的OnInitDialog函数中。它应该做的是显示按钮。您的CButton是使用自动存储持续时间创建的。因此,当OnInitDialog
CButton details;
details.Create(_T("details"),WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,CRect(120,100,100,30), this, 15000);
但它什么也不做(创建按钮创建后不可见)。我错过了什么
编辑:代码位于基于对话框的应用程序的OnInitDialog函数中。它应该做的是显示按钮。您的CButton是使用自动存储持续时间创建的。因此,当OnInitDialog返回时,它将被销毁。(在对话框可见之前)将CButton改为成员变量。您提供的
correct
下的值不正确,必须correct(120100220130)
这取决于声明CButton详细信息代码>!
您必须声明CButton详细信息代码>作为常规实例(非本地实例)
定义c按钮的详细信息代码>实例作为常规,所以您的问题将得到解决!
以下代码工作100%:
#define BBB 10000
CButton c;
void CThreadsDlg::OnBnClickedButton1()
{
bool a = c.Create(_T("new button"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect(100, 100, 220, 230), this, BBB);
}
如果创建了c
按钮,a
变量将为true
我的经验:如果您的对话框继承自CDHtmlDialog,则不会显示任何内容,但可以正常使用CDialog。因此,更改OnInitDialog()中的第一行
//CDHtmlDialog::OnInitDialog();
CDialog::OnInitDialog();
当然,button变量应该是全局变量或类成员,而不是局部变量 这个问题不能如实回答。您需要提供更多的上下文。详细信息在哪里声明?它是一个班级成员吗?局部变量?您在哪里调用Create
?考虑提供一个说明问题的方法。
//CDHtmlDialog::OnInitDialog();
CDialog::OnInitDialog();