Создать кнопку на рабочем столе и доб к ней обработчик
От: lehamain  
Дата: 21.08.06 17:55
Оценка:
создать кнопку легко:

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: Перенесено модератором из 'Этюды для программистов' — Кодт

Мне известно, что мне ничего не известно... (О. Хайям)
Re: Создать кнопку на рабочем столе и доб к ней обработчик
От: _INDY_ Россия  
Дата: 22.08.06 04:38
Оценка:
Здравствуйте, 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
Per Aspera Ad Astra
Re: Создать кнопку на рабочем столе и доб к ней обработчик
От: _Dreamer Россия  
Дата: 22.08.06 10:04
Оценка: 4 (2)
Здравствуйте, 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 это называется
Re: Создать кнопку на рабочем столе и доб к ней обработчик
От: AraraT Россия  
Дата: 22.08.06 18:42
Оценка:
Здравствуйте, 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>>
Re[2]: Создать кнопку на рабочем столе и доб к ней обработчи
От: lehamain  
Дата: 23.08.06 00:59
Оценка:
Здравствуйте, _Dreamer, Вы писали:


_D>SetWindowLong на десктопе с параметром GWL_WNDPROC должно помочь.

_D>естественно желательно сохранить старое значение. и перенаправлять _D>не интересующие сообщения в родной обработчик.
_D>subclassing это называется

Гениально!
Все получилось

Мне известно, что мне ничего не известно... (О. Хайям)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.