Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Активация/деактивация окна кнопками на панели зада


Автор: Paspartu 16.7.2008, 19:02
Поможите, седею…
Делаю свое окно…
Активация/деактивация окна кнопками на панели задач...

Вопрос… К примеру на Win XP запустили «блокнот» появился блокнот, на панели задач с низу у нас появилась утопленная кнопка «Безымянный - Блокнот» все OK, кликнули по кнопке – окно свернулась кнопка на панели задач деактивизировалась – тоже все хорошо, вопрос в том что шлется  в этот момент в оконную процедуру? т.к. здесь важен именно первый запуск приложения потому что если ловить спаем то уже приходит WM_ACTIVATEAPP и алгоритм сбивается… пробую ловить WM_ACTIVATE и WM_ACTIVATEAPP… breakpoint поставить в этом случае нельзя, ставлю Beep() причем независимо от параметров активно/деактивно, так вот чудеса… запустили приложение(первый раз) появилась окошко пару раз пробикало акно активизировалось, внизу, на панели задач появилась кнопочка все OK… Но!!! по идее при повторном на нее нажатии также как и у «блокнота» окно должно свернуться, по крайней мере ему должно послаться WM_ACTIVATE чтобы деактивизировать окно, а этого не происходит! Нет ни одного Beep-а ни на WM_ACTIVATE, ни на WM_ACTIVATEAPP, а кнопочка гаснет т.е. деактивизируется… все… мол, типа я свою работу выполнила и т.д. с-ка! Как с этим бороться… что должно послаться окну, когда оно активно при нажатии на кнопку на панели задач?

Автор: Dem_max 17.7.2008, 04:29
Точно не скажу возможно WM_SYSCOMMAND а там параметры:
Parameters
wParam
Specifies the type of system command requested. This parameter can be one of the following values. 
SC_CLOSE
Closes the window.
SC_CONTEXTHELP
Changes the cursor to a question mark with a pointer. If the user then clicks a control in the dialog box, the control receives a WM_HELP message.
SC_DEFAULT
Selects the default item; the user double-clicked the window menu.
SC_HOTKEY
Activates the window associated with the application-specified hot key. The lParam parameter identifies the window to activate.
SC_HSCROLL
Scrolls horizontally.
SC_KEYMENU
Retrieves the window menu as a result of a keystroke. For more information, see the Remarks section.
SC_MAXIMIZE
Maximizes the window.
SC_MINIMIZE
Minimizes the window.
SC_MONITORPOWER
Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer. 

The lParam parameter can have the following values:

1 - the display is going to low power

2 - the display is being shut off
SC_MOUSEMENU
Retrieves the window menu as a result of a mouse click.
SC_MOVE
Moves the window.
SC_NEXTWINDOW
Moves to the next window.
SC_PREVWINDOW
Moves to the previous window.
SC_RESTORE
Restores the window to its normal position and size.
SC_SCREENSAVE
Executes the screen saver application specified in the [boot] section of the System.ini file.
SC_SIZE
Sizes the window.
SC_TASKLIST
Activates the Start menu.
SC_VSCROLL
Scrolls vertically.

Автор: Paspartu 18.7.2008, 01:04
Сделал через SetWindowPlacement()...

Добавлено через 2 минуты и 9 секунд
To Dem_max, спасибо за участие, плюсик пока поставить не могу, я тут совсем недавно... smile 

Автор: Dem_max 18.7.2008, 04:47
Хм. Спрашивал одно, а сделал свосем другое.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)