Страница 1 из 1

Как получить от листера WM_EXITSIZEMOVE?

Добавлено: Чт фев 26, 2009 14:08
Worros
Или любой другой способ вытащить итоговые координаты, полученные по окончании ресайза окошка листера.

Re: Как получить от листера WM_EXITSIZEMOVE ?

Добавлено: Чт фев 26, 2009 17:57
Dec
Worros писал(а):Или любой другой способ вытащить итоговые координаты, полученные по окончании ресайза окошка листера.
Попробуйте так:

Код: Выделить всё

...
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;

Добавлено: Чт фев 26, 2009 20:16
Worros
Работает, спасибо!
Не знал, что сабклассинг можно так каскадировать.

Добавлено: Чт фев 26, 2009 23:01
Worros
Есть проблемы с несколькими экземплярами плагина.
Как выкручиваться?

Добавлено: Пт фев 27, 2009 09:19
Dec
Worros писал(а):Есть проблемы с несколькими экземплярами плагина.
Как выкручиваться?
Какие проблемы

Добавлено: Пт фев 27, 2009 11:22
Worros
У меня NewWindowProc глобальной получилась :( со всеми вытекающими последствиями: исключения так и сыплются, и визуальные артефакты при переключении между окнами листера с плагином.

Добавлено: Пт фев 27, 2009 12:38
Dec
Среда программирования?

Добавлено: Пт фев 27, 2009 14:00
Worros
VS2003

Добавлено: Пт фев 27, 2009 15:13
Dec
Если скину свой исходник на Delphi, то сможете разобраться?

Добавлено: Пт фев 27, 2009 15:21
Worros
Попробую :)
Спасибо заранее. Мыло сброшу в личку.

Добавлено: Пт фев 27, 2009 19:59
Worros
Получил, спасибо.

Насколько я понимаю, Delphi позволяет не поморщившись объявить одну оконную процедуру внутри другой. VC такого не допускает. После длительного гугления я нашёл максимум пример того, как после танцев с бубнами можно загнать WNDPROC внутрь класса. Но как этот пример следует привести к моему случаю (WNDPROC внутри WNDPROC) я не понял :( Мне такое не по зубам.

Добавлено: Вс мар 01, 2009 22:15
VadiMGP
Worros писал(а):объявить одну оконную процедуру внутри другой.
A зачем это нужно?

Добавлено: Вс мар 01, 2009 23:55
Worros
VadiMGP писал(а):
Worros писал(а):объявить одну оконную процедуру внутри другой.
A зачем это нужно?
Да, я поторопился с выводами. Не нужно это. Мне Dec уже объяснил мою ошибку.