Я делаю настраиваемую строку заголовка с настраиваемыми кнопками рисования, удаляя панель окна по умолчанию с помощью SetWindowLong (hWndParent, GWL_STYLE, 0). Сейчас все идет хорошо, за исключением того, что я застрял в том, чтобы свести окно к минимуму, программно щелкая панель задач. Я пытаюсь WM_ACTIVATEAPP прямо сейчас, но окно не может правильно свернуть.
Это код для WM_ACTIVATEAPP для главного окна:
case WM_ACTIVATEAPP:
if(LOWORD(wParam) == FALSE)
SendMessage(hWndParent,WM_SYSCOMMAND,SC_MINIMIZE,NULL);
break;
Когда вы щелкаете левой кнопкой мыши на панели задач, она минимизируется, НО после того, как вы отпустили щелчок .. окно будет восстановлено .. Чего-то не хватает? Я хочу, чтобы он был минимальным после отпускания клика.
Примечания: Я не вставляю код окна активации, потому что окно, кажется, может восстановиться, щелкнув панель задач после сворачивания с помощью пользовательской кнопки рисования.
Вы, вероятно, также не обрабатываете WM_NCACTIVATE. Попробуйте обработать это, как это:
case WM_NCACTIVATE:
break;
case WM_ACTIVATEAPP:
if (LOWORD(wParam) == FALSE)
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, NULL);
break;
Редактировать:
Я, должно быть, пропустил ту часть вашего вопроса, где вы сказали, что удалили панель по умолчанию, установив стиль на 0. Это определенно не правильный способ сделать это, вы должны сделать что-то вроде этого, как было найдено Вот:
LONG lStyle = GetWindowLong(hWnd, GWL_STYLE);
lStyle &= ~(WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU);
SetWindowLong(hWnd, GWL_STYLE, lStyle);
После этого вам больше не нужно обрабатывать WM_ACTIVATEAPP или WM_NCACTIVATE, чтобы правильно свернуть / развернуть окно.
Других решений пока нет …