Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Minimized Box  (Прочитано 10304 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 20-06-2005 13:34 » 

Люди, тормоз   Так больше нельзя... - какое сообщение приходит и куда (должно по логике в CMainFrame) при нажатии на форме символа минимизации окна?
У меня есть SDI, который стартует немодальное окошечко. Соответственно, если основное окно (приложение) минимизируется, мне надо реагировать и минимизировать и это самое окошечко (немодальный диалог).
Так же мне надо знать при создании этого самого окошечка, в каком состоянии находится сейчас приложение - в нормальном (пусть даже неактивном) или свернутом.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 20-06-2005 14:32 » 

Само приложение получает через функцию WinMain переменную int nCmdShow. Которая говорит приложению, в каком состоянии надо создавать окно. Потом уже, как правило, эта переменная транслируется в главное окно, как параметр создания окна. Чтобы узнать состояние окна в любой промежуток времени есть функция GetWindowPlacement http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/getwindowplacement.asp
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #2 : 20-06-2005 14:37 » 

Перед изменением состояния отображения в окно приходит сообшение WM_SHOWWINDOW
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowmessages/wm_showwindow.asp
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #3 : 20-06-2005 14:51 » 

Finch,

во-первых, спасибо! Далее, вспомнила, что еще есть функция IsIconic(), которая определяет, свернуто окно или нет.
По поводу WM_SHOWWINDOW - это была моя первая идея, но почему-то туда я не попадаю... (я ее вставила в CMainFrame).
Я сейчас смотрю WM_ACTIVATE и WM_ACTIVATEАПП - в чем разница, т.к. они оба срабатывают при минимизации / максимизации окна.
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 20-06-2005 15:30 » 

Malaja, это чуть другое сообшение. Это сообшение посылается главному окну. Когда оно становится активным. Или когда оно теряет активность. Под активным понимается - получает фокус ввода.
« Последнее редактирование: 20-06-2005 15:34 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #5 : 21-06-2005 06:31 » 

Finch,

угу, уже поняла ;-( Факир был пьян и фокус не удался Ага А какое же тогда срабатывает при минимизации???
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #6 : 21-06-2005 08:12 » 

Народ, так, не знаю, что еще, но самое простое - WM_SIZE! И там опрашивать IsIconic().
Если кто-то все же знает более правильное решение - напишите пожалуйста, буду очень благодарна!
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 21-06-2005 17:23 » 

WM_SYSCOMMAND. Но с ним надо быть осторожным. Перехватила, сделала свои дела и надо отдать выполнение на DefWindowProc
Цитата
A window receives this message when the user chooses a command from the window menu (also known as the System menu or Control menu) or when the user chooses the Maximize button or Minimize button.

WM_SYSCOMMAND 
uCmdType = wParam;        // type of system command requested
xPos = LOWORD(lParam);    // horizontal postion, in screen coordinates
yPos = HIWORD(lParam);    // vertical postion, in screen coordinates
 

Parameters

uCmdType

Specifies the type of system command requested. This can be one of these values:

Value   Meaning
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 low-order word of lParam identifies the window to activate.
SC_HSCROLL   Scrolls horizontally.
SC_KEYMENU   Retrieves the window menu as a result of a keystroke.
SC_MAXIMIZE (or SC_ZOOM)   Maximizes the window.
SC_MINIMIZE (or SC_ICON)   Minimizes the window.
SC_MONITORPOWER   Windows 95 only: Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.
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   Executes or activates Windows Task Manager.
SC_VSCROLL   Scrolls vertically.
 

xPos

Specifies the horizontal position of the cursor, in screen coordinates, if a window menu command is chosen with the mouse. Otherwise, the xPos parameter is not used.

yPos

Specifies the vertical position of the cursor, in screen coordinates, if a window menu command is chosen with the mouse. This parameter is -1 if the command is chosen using a system accelerator, or zero if using a mnenomic.

 

Return Values

An application should return zero if it processes this message.

Remarks

The DefWindowProc function carries out the window menu request for the predefined actions specified in the previous table.
In WM_SYSCOMMAND messages, the four low-order bits of the uCmdType parameter are used internally by Windows. To obtain the correct result when testing the value of uCmdType, an application must combine the value 0xFFF0 with the uCmdType value by using the bitwise AND operator.
The menu items in a window menu can be modified by using the GetSystemMenu, AppendMenu, InsertMenu, ModifyMenu, InsertMenuItem, and SetMenuItem functions. Applications that modify the window menu must process WM_SYSCOMMAND messages.

An application can carry out any system command at any time by passing a WM_SYSCOMMAND message to DefWindowProc. Any WM_SYSCOMMAND messages not handled by the application must be passed to DefWindowProc. Any command values added by an application must be processed by the application and cannot be passed to DefWindowProc.
Accelerator keys that are defined to choose items from the window menu are translated into WM_SYSCOMMAND messages; all other accelerator keystrokes are translated into WM_COMMAND messages.
« Последнее редактирование: 21-06-2005 17:25 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #8 : 22-06-2005 10:32 » 

Finch,

Спасибочки!!!  Целую Я помнила, что что-то было, но вот что - вспомнить не могла Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines