Как заменить шаблон у диалога?
Привет. У меня есть модальный диалог(создаю через DialogBox) могу ли я во время работы программы заменить его шаблон?
Можно просто по ID - элемента управления получить его HWND=GetDlgItem(hDlg, ID) и тоже изменять его как хочешь.
Можно просто создать в шаблоне заранее все єлементы, но те которые вначале не нужны сделать флаг visible- false а потом по мере надобности делать ShowWindow(GetDlgItem(hDlg, ID), SW_SHOW);или прятатьShowWindow(GetDlgItem(hDlg, ID), SW_HIDE);
Я щас так и делаю через ShowWindow - но это некрасиво, негибко и вообще неудобно когда у тебя на шаблоне мешанина разных контролов. У меня 2 диалога всего - 5 контролов - и то смотрится плохо - а если б 20 диалогов? А поподробнее про CreateWindow - это как? Насколько я знаю там просто создается обычный диалог поверх существующего и все. Ну как у меня раньше и было.
Ну а дальше CreateWindow вернет те HWND созданного контрола и ты сможешь с ним делать все шо захош!
Например
Код:
hButton_Close=CreateWindow("BUTTON", "Выход", WS_CHILD |WS_VISIBLE | BS_PUSHBUTTON , 0, 0, 32, 32, hDlg, (HMENU) BUTTON_SHUTDOWN, NULL, NULL);
будет создана кнопка
а так
Код:
hProgress=CreateWindowEx(0, PROGRESS_CLASS, (LPSTR)NULL, WS_CHILD | WS_VISIBLE | PBS_SMOOTH, 0, 0, 100, 20, hDlg, (HMENU)0, hInst, NULL);
Полоса прогресса!
А что мешает создать диалоги со стилем WS_CHILD и менять их в основном диалоге?
Для этого придется заводить основной диалог). У меня просто один диалог щас на все.