所以我有这个代码
CButton details;
details.Create(_T("details"),WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,CRect(120,100,100,30), this, 15000);
但它没有做任何事情(创建后创建的按钮不可见)。我错过了什么?
编辑:代码位于基于对话框的应用程序的OnInitDialog函数中。它应该做的是显示按钮。
答案 0 :(得分:3)
您的CButton是使用自动存储持续时间创建的。所以它在OnInitDialog返回时被销毁。 (在对话框可见之前。)将CButton改为成员变量。
答案 1 :(得分:0)
您提供的CRect
下的值不正确,必须为CRect(120, 100, 220, 130)
。
答案 2 :(得分:0)
这取决于声明CButton details;
!
您必须将CButton details;
声明为一般实例(不是本地实例)
将您的CButton details;
实例定义为常规,因此您的问题将会解决!
波纹管代码工作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
。
答案 3 :(得分:0)
我的经验:如果你的对话框是从CDHtmlDialog继承而没有显示,但是对于普通的CDialog工作正常。因此,更改OnInitDialog()
中的第一行//CDHtmlDialog::OnInitDialog(); CDialog::OnInitDialog();
当然,按钮变量应该是全局或类成员,而不是本地成员。