Пишу на "чистом" Win API. Делаю свой контрол. Написал оконную функцию для него, зарегистрировал класс. В VCшном редакторе ресурсов добавил Custom control со стилем 0x50a10000
(WS_CHILD|WS_BORDER|WS_VSCROLL|WS_VISIBLE|WS_TABSTOP), прописал имя своего класс.
Все нормально работает, тока вот в эту оконную функцию не приходят сообщения WM_SETFOCUS, WM_KILLFOCUS, WM_ACTIVATE, а они мне ой как нужны...
Если субклассировать от какого-нибудь EditBox'а, то эти сообщения приходят. Тока я не хочу субклассировать :о(
Памагите, плз...
Все очевидное становится очевидным когда в него тыкают носом :о/
U>- для не обрабатывемых сообщений, и Вы это имеете ввиду?
Да есть у меня ентот DefWindowProc...
Оконная процедура у меня имеет вид
LONG WINAPI MyWndProc ( HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
switch(msg){
case ...:
break;
case ...:
break;
default:
return DefWindowProc(hWnd,msg,wp,lp);
}
return false;
}
ставил вместо "return false" "return DefWindowProc(hWnd,msg,wp,lp)" — таже фигня. блин две недели ковыряюсь никак не пойму в чем прикол. Не посылаются сообщения, ну хоть тресни :о(
Все очевидное становится очевидным когда в него тыкают носом :о/
Здравствуйте Atsy, Вы писали:
A>Пишу на "чистом" Win API. Делаю свой контрол. Написал оконную функцию для него, зарегистрировал класс. В VCшном редакторе ресурсов добавил Custom control со стилем 0x50a10000 A>(WS_CHILD|WS_BORDER|WS_VSCROLL|WS_VISIBLE|WS_TABSTOP), прописал имя своего класс. A>Все нормально работает, тока вот в эту оконную функцию не приходят сообщения WM_SETFOCUS, WM_KILLFOCUS, WM_ACTIVATE, а они мне ой как нужны...
Здравствуйте Atsy, Вы писали:
A>Здравствуйте Alex Fedotov, Вы писали:
AF>>А когда, ты ожидаешь, чтобы они приходили?
A>Хочу чтобы приходили после того, как я ткнусь мышой в этот контрол. Ну или после нажатия TAB (хотя это в далеком будущем :о) ).
E меня было так — при тыканьем мыши фокус тоже не устанавливался — тогда я его в обработчике WM_LBUTTONDOWN ставил его вручную -::SetFocus(...)
Здравствуйте Atsy, Вы писали:
A>Здравствуйте Alex Fedotov, Вы писали:
AF>>А когда, ты ожидаешь, чтобы они приходили?
A>Хочу чтобы приходили после того, как я ткнусь мышой в этот контрол. Ну или после нажатия TAB (хотя это в далеком будущем :о) ).
Про DefWindowProc — некоторые, но не все, сообщения приходилось напралвять именно туда.
Ещё завист от зарегистрированного класса окна элемента управления, на что тоже надо обратить внимание. А если не получится, дайте мне Ваш код здесь или письмом на ua1zcl@mail.ru, попробую найти причину.
Здравствуйте Sasparella, Вы писали:
S>E меня было так — при тыканьем мыши фокус тоже не устанавливался — тогда я его в обработчике WM_LBUTTONDOWN ставил его вручную -::SetFocus(...)
S>Может у вас тожесамое?
Спасибо, так работает (блин, как до самого не доперло? :о) )
Только все равно интересно, почему автоматически фокус не передается...
Все очевидное становится очевидным когда в него тыкают носом :о/
Здравствуйте ua1zcl, Вы писали:
U>Про DefWindowProc — некоторые, но не все, сообщения приходилось напралвять именно туда. U>Ещё завист от зарегистрированного класса окна элемента управления, на что тоже надо обратить внимание. А если не получится, дайте мне Ваш код здесь или письмом на ua1zcl@mail.ru, попробую найти причину.
Оконную функцию я писал выше. (не привожу ее полностью из целей экономии размера сообщения ;о) )
Впрочем если по совету Sasparella все заработало, то какой смысл разбираться почему не шлются фокусные сообщения... :о(
P.S. Кстати, когда-то давно я пытался сварганить контрол на билдере и столкнулся с такой-же проблемой...
Все очевидное становится очевидным когда в него тыкают носом :о/
Здравствуйте Atsy!
На http://www.template.fromru.com/zip/Cmdlg.zip я положил проект для BorlandC++5.02.
Там на примере кнопки наглядно показано многое нужное (и не нужное). В конце файла Cmdlg.cpp про собственно кнопку.