У меня есть небольшой диалог, который я создал с помощью Resource Editor в VS2005. Он будет использоваться как дочерний диалог другого диалога двумя способами ... либо как дочерний элемент, который находится в верхней части диалогового окна, как пользовательский элемент управления, либо как всплывающее окно, которое может выходить за границы родительского окна. , Если я изменяю один стиль в файле RC, оба они работают как положено - просто замените WS_POPUP на WS_CHILD для переключения:
IDD_WIDGET DIALOGEX 0, 0, 221, 78
STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | DS_CONTROL | WS_POPUP | WS_BORDER
EXSTYLE WS_EX_TOOLWINDOW | WS_EX_STATICEDGE
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
PUSHBUTTON "Pre&view",IDC_ACTION_PREVIEW,64,59,50,15
PUSHBUTTON "M&ore",IDC_ACTION_MORE,115,59,50,15
PUSHBUTTON "S&elect",IDC_ACTION_SELECT,168,59,50,15
END
Проблема в том, что я хочу иметь возможность выбрать поведение при создании дочернего диалога во время выполнения в качестве своего рода структуры типа виджета, например, переопределение стиля файла RC
Я пытался:
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_Widget.Create(IDD_WIDGET,this);
DWORD oldstyle = m_Widget.GetStyle();
m_Widget.ModifyStyle(WS_POPUP,WS_CHILD);
DWORD newstyle = m_Widget.GetStyle();
}
Но я не вижу никакой разницы, кроме того, что результат GetStyle изменяется с 0x8400044C
на 0x4400044C
... дочерний диалог виджета запускается невидимым, но когда я его показываю, он сохраняет поведение WS_POPUP. .
Что не так, и как это можно исправить?
Как предполагает Бен, мне интересно, не может ли это быть стиль, который можно изменить после , когда окно создано, но проблема в том, как перехватить структуру шаблона диалога и изменить стиль, прежде чем он будет создан. используется для создания окна?