Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

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

 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Thu Feb 26, 2009 15:08    Post subject: Как получить от листера WM_EXITSIZEMOVE? Reply with quote

Или любой другой способ вытащить итоговые координаты, полученные по окончании ресайза окошка листера.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Thu Feb 26, 2009 18:57    Post subject: Re: Как получить от листера WM_EXITSIZEMOVE ? Reply with quote

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
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Thu Feb 26, 2009 21:16    Post subject: Reply with quote

Работает, спасибо!
Не знал, что сабклассинг можно так каскадировать.
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Fri Feb 27, 2009 00:01    Post subject: Reply with quote

Есть проблемы с несколькими экземплярами плагина.
Как выкручиваться?
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Fri Feb 27, 2009 10:19    Post subject: Reply with quote

Worros wrote:
Есть проблемы с несколькими экземплярами плагина.
Как выкручиваться?

Какие проблемы
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Fri Feb 27, 2009 12:22    Post subject: Reply with quote

У меня NewWindowProc глобальной получилась Sad со всеми вытекающими последствиями: исключения так и сыплются, и визуальные артефакты при переключении между окнами листера с плагином.
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Fri Feb 27, 2009 13:38    Post subject: Reply with quote

Среда программирования?
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Fri Feb 27, 2009 15:00    Post subject: Reply with quote

VS2003
Back to top
View user's profile Send private message
Dec



Joined: 07 Sep 2006
Posts: 466

Post (Separately) Posted: Fri Feb 27, 2009 16:13    Post subject: Reply with quote

Если скину свой исходник на Delphi, то сможете разобраться?
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Fri Feb 27, 2009 16:21    Post subject: Reply with quote

Попробую Smile
Спасибо заранее. Мыло сброшу в личку.
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Fri Feb 27, 2009 20:59    Post subject: Reply with quote

Получил, спасибо.

Насколько я понимаю, Delphi позволяет не поморщившись объявить одну оконную процедуру внутри другой. VC такого не допускает. После длительного гугления я нашёл максимум пример того, как после танцев с бубнами можно загнать WNDPROC внутрь класса. Но как этот пример следует привести к моему случаю (WNDPROC внутри WNDPROC) я не понял Sad Мне такое не по зубам.
Back to top
View user's profile Send private message
VadiMGP



Joined: 21 Mar 2007
Posts: 1625

Post (Separately) Posted: Sun Mar 01, 2009 23:15    Post subject: Reply with quote

Worros wrote:
объявить одну оконную процедуру внутри другой.
A зачем это нужно?
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Mon Mar 02, 2009 00:55    Post subject: Reply with quote

VadiMGP wrote:
Worros wrote:
объявить одну оконную процедуру внутри другой.
A зачем это нужно?

Да, я поторопился с выводами. Не нужно это. Мне Dec уже объяснил мою ошибку.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group