Динамически созданная кнопка не отображается в 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
,