View previous topic :: View next topic |
Author |
Message |
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Thu Feb 26, 2009 15:08 Post subject: Как получить от листера WM_EXITSIZEMOVE? |
|
|
Или любой другой способ вытащить итоговые координаты, полученные по окончании ресайза окошка листера. |
|
Back to top |
|
|
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Thu Feb 26, 2009 18:57 Post subject: Re: Как получить от листера WM_EXITSIZEMOVE ? |
|
|
Worros wrote: | Или любой другой способ вытащить итоговые координаты, полученные по окончании ресайза окошка листера. |
Попробуйте так:
Code: | ...
FOldWndProc := SetWindowLong(ListerWindow, GWL_WNDPROC, integer(@NewWindowProc));
...
function NewWindowProc(AWindow: HWND; AMsg: UINT; AWParam: WPARAM; ALParam: LPARAM): LRESULT; stdcall;
var R: TRect;
begin
FOldWndProc(AWindow, AMsg, AWParam, ALParam);
if AMsg = WM_EXITSIZEMOVE then
begin
GetWindowRect(AWindow, R);
end;
end; |
|
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Thu Feb 26, 2009 21:16 Post subject: |
|
|
Работает, спасибо!
Не знал, что сабклассинг можно так каскадировать. |
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Fri Feb 27, 2009 00:01 Post subject: |
|
|
Есть проблемы с несколькими экземплярами плагина.
Как выкручиваться? |
|
Back to top |
|
|
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Fri Feb 27, 2009 10:19 Post subject: |
|
|
Worros wrote: | Есть проблемы с несколькими экземплярами плагина.
Как выкручиваться? |
Какие проблемы |
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Fri Feb 27, 2009 12:22 Post subject: |
|
|
У меня NewWindowProc глобальной получилась со всеми вытекающими последствиями: исключения так и сыплются, и визуальные артефакты при переключении между окнами листера с плагином. |
|
Back to top |
|
|
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Fri Feb 27, 2009 13:38 Post subject: |
|
|
Среда программирования? |
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Fri Feb 27, 2009 15:00 Post subject: |
|
|
VS2003 |
|
Back to top |
|
|
Dec
Joined: 07 Sep 2006 Posts: 466
|
(Separately) Posted: Fri Feb 27, 2009 16:13 Post subject: |
|
|
Если скину свой исходник на Delphi, то сможете разобраться? |
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Fri Feb 27, 2009 16:21 Post subject: |
|
|
Попробую
Спасибо заранее. Мыло сброшу в личку. |
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Fri Feb 27, 2009 20:59 Post subject: |
|
|
Получил, спасибо.
Насколько я понимаю, Delphi позволяет не поморщившись объявить одну оконную процедуру внутри другой. VC такого не допускает. После длительного гугления я нашёл максимум пример того, как после танцев с бубнами можно загнать WNDPROC внутрь класса. Но как этот пример следует привести к моему случаю (WNDPROC внутри WNDPROC) я не понял Мне такое не по зубам. |
|
Back to top |
|
|
VadiMGP
Joined: 21 Mar 2007 Posts: 1625
|
(Separately) Posted: Sun Mar 01, 2009 23:15 Post subject: |
|
|
Worros wrote: | объявить одну оконную процедуру внутри другой. | A зачем это нужно? |
|
Back to top |
|
|
Worros
Joined: 19 Jan 2007 Posts: 1123
|
(Separately) Posted: Mon Mar 02, 2009 00:55 Post subject: |
|
|
VadiMGP wrote: | Worros wrote: | объявить одну оконную процедуру внутри другой. | A зачем это нужно? |
Да, я поторопился с выводами. Не нужно это. Мне Dec уже объяснил мою ошибку. |
|
Back to top |
|
|
|