Как сделать работающее, но неактивируемое окно?
От: denis_ka  
Дата: 07.01.02 20:12
Оценка:
Нужно окно, при нажатии на которое активное окно не теряет фокус и не деактивируется, а сама форма не активируется. (но Disabled Window не подходит, т.к. надо получать сообщения мыши WM_MOUSEMOVE).
Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает наполовину — мое окно не активируется, но активное окно деактивируется. (каламбур получился)
Пример нужной формы — OnScreenKeyboard из WinME/2000.
Re: Как сделать работающее, но неактивируемое окно?
От: VuDZ Россия  
Дата: 07.01.02 22:05
Оценка:
Здравствуйте denis_ka, Вы писали:

DK> Нужно окно, при нажатии на которое активное окно не теряет фокус и не деактивируется, а сама форма не активируется. (но Disabled Window не подходит, т.к. надо получать сообщения мыши WM_MOUSEMOVE).

DK> Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает наполовину — мое окно не активируется, но активное окно деактивируется. (каламбур получился)
DK> Пример нужной формы — OnScreenKeyboard из WinME/2000.

Один из вариантов — при полуение мессаги WM_ACTIVATE делать SetForegroundWindow((HWND)lParam)...
ну и для других сообщений то же.
суть в том, что при активации окна происходит возврат предыдущему активному окну...

ЗЫ Можно запустить spy++, натравить на интерисующее окно и посмотреть, какие мессаги пересылаются
Re: Как сделать работающее, но неактивируемое окно?
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.01.02 22:23
Оценка:
Здравствуйте denis_ka, Вы писали:

DK> Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает


Странно... вроде всегда работало.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Как сделать работающее, но неактивируемое окно?
От: Carface Россия  
Дата: 09.01.02 04:29
Оценка:
Здравствуйте denis_ka, Вы писали:

DK> Нужно окно, при нажатии на которое активное окно не теряет фокус и не деактивируется, а сама форма не активируется. (но Disabled Window не подходит, т.к. надо получать сообщения мыши WM_MOUSEMOVE).

DK> Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает наполовину — мое окно не активируется, но активное окно деактивируется. (каламбур получился)
DK> Пример нужной формы — OnScreenKeyboard из WinME/2000.
При получении фокуса ввода в окно приходит сообщение WM_SETFOCUS
в качестве параметра wParam у него хандл окна, потерявшего фокус.
попробуй в обработчике сделать SetFocus((HWND) wParam) и возвратить ноль
или просто возвратить ноль.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.