1

所以我有这个代码

CButton details;
details.Create(_T("details"),WS_CHILD|WS_VISIBLE|WS_TABSTOP|BS_PUSHBUTTON,CRect(120,100,100,30), this, 15000);

但它什么也没做(创建的按钮在创建后不可见)。我错过了什么?

编辑:代码位于基于对话框的应用程序的 OnInitDialog 函数中。它应该做的是显示按钮。

4

4 回答 4

3

您的 CButton 是使用自动存储持续时间创建的。所以它在 OnInitDialog 返回时被销毁。(这是在对话框可见之前。)改为将 CButton 设为成员变量。

于 2013-11-24T19:53:26.117 回答
0

您提供的值CRect不正确,它必须是CRect(120, 100, 220, 130)

于 2014-04-09T12:18:44.107 回答
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.

于 2015-12-30T13:53:23.007 回答
0

我的经验:如果您的对话框是从 CDHtmlDialog 继承的,则不会显示任何内容,但可以正常使用普通 CDialog。所以改变 OnInitDialog() 中的第一行

//CDHtmlDialog::OnInitDialog();
CDialog::OnInitDialog();

当然,按钮变量应该是全局或类成员,而不是本地的。

于 2017-06-09T08:16:07.513 回答