Динамически созданная кнопка не отображается в MFC

Итак, у меня есть этот код

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

но он ничего не делает (созданная кнопка не видна после создания). Что мне не хватает?

РЕДАКТИРОВАТЬ: код находится в функции OnInitDialog приложения на основе диалога. Что он должен сделать, это отобразить кнопку.

4 ответа

Ваш CButton создан с автоматической продолжительностью хранения. Так что он уничтожается, когда OnInitDialog возвращается. (Это делается до того, как диалог станет видимым.) Вместо этого сделайте CButton переменной-членом.

Мой опыт: ничего не отображается, если ваш диалог унаследован от CDHtmlDialog, но работает нормально с обычным CDialog. Так что измените первую строку в OnInitDialog ()

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

и, конечно, переменная кнопки должна быть глобальной или классной, а не локальной.

Значения под CRect предоставлено неверно, оно должно быть CRect(120, 100, 220, 130),

Это зависит от объявления 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,

Другие вопросы по тегам