Здравствуйте, lehamain, Вы писали:
L>создать кнопку легко:
L>L>CreateWindowEx(0,"Button","But",WS_CHILD | WS_VISIBLE, 100,100,100,30,GetDesktopWindow()->m_hWnd,0,0,NULL);
L>
L>а вот как подцепить на нее обработчик? Раз кнопка создается на рабочем столе, то все сообщения от нее идут десктопу. Можно вроде использовать хук на WM_LBUTTONUP а там определять что это именно та самая кнопка? Есть какие нибудь мысли?
SetWindowLong на десктопе с параметром GWL_WNDPROC должно помочь.
естественно желательно сохранить старое значение. и перенаправлять не интересующие сообщения в родной обработчик.
subclassing это называется
создать кнопку легко:
CreateWindowEx(0,"Button","But",WS_CHILD | WS_VISIBLE, 100,100,100,30,GetDesktopWindow()->m_hWnd,0,0,NULL);
а вот как подцепить на нее обработчик? Раз кнопка создается на рабочем столе, то все сообщения от нее идут десктопу. Можно вроде использовать хук на WM_LBUTTONUP а там определять что это именно та самая кнопка? Есть какие нибудь мысли?
22.08.06 12:48: Перенесено модератором из 'Этюды для программистов' — Кодт
Здравствуйте, lehamain, Вы писали:
L>создать кнопку легко:
L>L>CreateWindowEx(0,"Button","But",WS_CHILD | WS_VISIBLE, 100,100,100,30,GetDesktopWindow()->m_hWnd,0,0,NULL);
L>
L>а вот как подцепить на нее обработчик? Раз кнопка создается на рабочем столе, то все сообщения от нее идут десктопу. Можно вроде использовать хук на WM_LBUTTONUP а там определять что это именно та самая кнопка? Есть какие нибудь мысли?
Гы, равносильно тому, как завести оконную процеду при отсутсвии самого окна(его графической части) — решаемо... решали ...

поиграй с параметрами CreateWindow
Здравствуйте, lehamain, Вы писали:
L>создать кнопку легко:
L>L>CreateWindowEx(0,"Button","But",WS_CHILD | WS_VISIBLE, 100,100,100,30,GetDesktopWindow()->m_hWnd,0,0,NULL);
L>
L>а вот как подцепить на нее обработчик? Раз кнопка создается на рабочем столе, то все сообщения от нее идут десктопу. Можно вроде использовать хук на WM_LBUTTONUP а там определять что это именно та самая кнопка? Есть какие нибудь мысли?
Ставь хук на оконные процедуры, и сравнивай хэндл созданного окна, а там обрабатывай что хошь!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Здравствуйте, _Dreamer, Вы писали:
_D>SetWindowLong на десктопе с параметром GWL_WNDPROC должно помочь.
_D>естественно желательно сохранить старое значение. и перенаправлять _D>не интересующие сообщения в родной обработчик.
_D>subclassing это называется
Гениально!
Все получилось