2013-09-21 1 views
1

Я создаю пользовательскую панель заголовка с пользовательскими кнопками рисования, удалив панель по умолчанию окна с помощью SetWindowLong (hWndParent, GWL_STYLE, 0). К настоящему времени все идет хорошо, за исключением того, что я зациклился на том, чтобы минимизировать окно, щелкнув программную панель программно. Я пытаюсь WM_ACTIVATEAPP прямо сейчас, но окно не может свести к минимуму.C++ WinAPI Нужна помощь Застроена при создании окна Свернуть с помощью панели задач с левой кнопкой мыши Программно

Это код WM_ACTIVATEAPP для главного окна:

case WM_ACTIVATEAPP: 
    if(LOWORD(wParam) == FALSE) 
     SendMessage(hWndParent,WM_SYSCOMMAND,SC_MINIMIZE,NULL); 
    break; 

Когда вы щелкните левой кнопкой мыши на панели задач, это позволит свести к минимуму, но как только вы выпустили щелчок .. окно будет восстановлен .. Есть ли что-то отсутствует? Я хочу свести его к минимуму после отпускания клика.

Примечания: Я помещаю код окна активации, потому что окно, похоже, может восстановить себя, щелкнув панель задач после сверления с помощью пользовательской кнопки рисования.

ответ

1

Возможно, вы также не обрабатываете WM_NCACTIVATE. Попробуйте его обработки, похожее на это:

case WM_NCACTIVATE: 
    break; 
case WM_ACTIVATEAPP: 
    if (LOWORD(wParam) == FALSE) 
     SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, NULL); 
    break; 

Edit:

Должно быть, я пропустил часть вашего вопроса, где вы сказали, что вы удалили панель по умолчанию, установив стиль в 0. Это, безусловно, не правильный способ сделать это, вы должны сделать что-то вдоль линий этого, как найдено here:

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 правильно минимизировать/развернуть окно.

+0

Я попробовал это сейчас, и он полностью сделал окно неспособным имитировать минимизацию из панели задач вообще. То же самое для простого окна с одной и той же настройкой, а также не может имитировать минимизацию с панели задач. Редактировать: Извините за поздний комментарий, протестировав его прямо сейчас. Edit2: Большое спасибо, что вы меня там спали .. искали решение со вчерашнего дня, и я не знал, что ошибся в настройках стиля в первую очередь. – D13