Создаем окно в главном окне.
g1_r1_des = CreateWindowEx(0, "Window1", "Окно 1",
WS_CHILD|WS_CLIPSIBLINGS,
350,
0,
1000, 650,
firstdes,
NULL,
hThisInstance,
NULL);
отображаем окно
case WM_COMMAND:
switch (LOWORD(wparam))
{
case BTN_G1_R1:
SetWindowPos(g1_r1_des, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE); // задаем расположение выше всех окон, остальное по default (настройки при создании окна)
ShowWindow(g1_r1_des, SW_SHOWNORMAL); // показываем окно в координатах и размерах по default (настройки при создании окна)
UpdateWindow(g1_r1_des);
break;
Делаем смену стиля с WS_CHILD на WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN по чекбоксу
case WM_COMMAND:
{
BOOL checked1 = IsDlgButtonChecked(hwnd, ID_CHECKBOX1);
if (LOWORD(wparam) == ID_CHECKBOX1) {
if (checked1) {
CheckDlgButton(hwnd, ID_CHECKBOX1, BST_UNCHECKED);
SetWindowLong (g1_r1_des,GWL_STYLE,(LONG) WS_CHILD|WS_CLIPSIBLINGS);
SetWindowPos(g1_r1_des, HWND_TOP,350, 0, 1000, 650, SWP_SHOWWINDOW);
UpdateWindow(g1_r1_des);
}
else {
CheckDlgButton(hwnd, ID_CHECKBOX1, BST_CHECKED);
SetWindowLong (g1_r1_des,GWL_STYLE,(LONG) WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_MINIMIZEBOX|WS_MAXIMIZEBOX|WS_CLIPCHILDREN);
ShowWindow(g1_r1_des, SW_SHOW);
UpdateWindow(g1_r1_des);
}
}
break;
}
Окно не покидает пределы родительского окна. Как это исправить?
Если создать отдельное окно изначально а затем сменить стиль на CHILD то окно превратится в дочернее но не вернется в родительское а будет висеть посреди экрана вне зависимости от родительского.