Нужно окно, при нажатии на которое активное окно не теряет фокус и не деактивируется, а сама форма не активируется. (но Disabled Window не подходит, т.к. надо получать сообщения мыши WM_MOUSEMOVE).
Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает наполовину — мое окно не активируется, но активное окно деактивируется. (каламбур получился)
Пример нужной формы — OnScreenKeyboard из WinME/2000.
Re: Как сделать работающее, но неактивируемое окно?
Здравствуйте denis_ka, Вы писали:
DK> Нужно окно, при нажатии на которое активное окно не теряет фокус и не деактивируется, а сама форма не активируется. (но Disabled Window не подходит, т.к. надо получать сообщения мыши WM_MOUSEMOVE). DK> Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает наполовину — мое окно не активируется, но активное окно деактивируется. (каламбур получился) DK> Пример нужной формы — OnScreenKeyboard из WinME/2000.
Один из вариантов — при полуение мессаги WM_ACTIVATE делать SetForegroundWindow((HWND)lParam)...
ну и для других сообщений то же.
суть в том, что при активации окна происходит возврат предыдущему активному окну...
ЗЫ Можно запустить spy++, натравить на интерисующее окно и посмотреть, какие мессаги пересылаются
Re: Как сделать работающее, но неактивируемое окно?
Здравствуйте denis_ka, Вы писали:
DK> Нужно окно, при нажатии на которое активное окно не теряет фокус и не деактивируется, а сама форма не активируется. (но Disabled Window не подходит, т.к. надо получать сообщения мыши WM_MOUSEMOVE). DK> Пробовал для WM_MOUSEACTIVATE возвращать MA_NOACTIVATEANDEAT, работает наполовину — мое окно не активируется, но активное окно деактивируется. (каламбур получился) DK> Пример нужной формы — OnScreenKeyboard из WinME/2000.
При получении фокуса ввода в окно приходит сообщение WM_SETFOCUS
в качестве параметра wParam у него хандл окна, потерявшего фокус.
попробуй в обработчике сделать SetFocus((HWND) wParam) и возвратить ноль
или просто возвратить ноль.