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 

Изменить размеры листера
Goto page Previous  1, 2, 3
 
Post new topic   Reply to topic    Total Commander Forum Index -> Написание плагинов для Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
VadiMGP



Joined: 21 Mar 2007
Posts: 1625

Post (Separately) Posted: Mon Mar 09, 2009 03:27    Post subject: Reply with quote

Worros wrote:
Где прочитать, как это делается? Я не умею.
Да ничего читать не надо. Просто дробишь код. Вместо
Code:
MoveWindow(gp->DataForThread.ListerWin,20,20,gp->DataForThread.naturewidth,gp->DataForThread.natureheight,true);
пишешь
Code:
HWND hLWnd=gp->DataForThread.ListerWin;
int neww=gp->DataForThread.naturewidth;
int newh=gp->DataForThread.natureheight;
MoveWindow(hLWnd,20,20,neww,newh,true);
И смотришь кто тормозит. Если до вызова MoveWindow, то возможно есть проблема синхронизации доступа к общим переменным из двух разных потоков. Если тормозит сам вызов MoveWindow, то возможно возникает ситуация, когда каждый из двух потоков чего-то ждет.
Worros wrote:
И еще, я припоминаю рекомендацию не посылать из потока SendMessage рабочему окну,
Совершенно верно, не рекомендуется. И именно потому что легко может возникнуть клинч. Можно попробовать послать PostThreadMessage главному потоку и уже там делать MoveWindow.
Worros wrote:
IDE удобнее, чем у VC6 ,
Конечно удобнее, кто бы спорил. Но глючный. Я же спрашивал, почему ты не ставишь более качественный IDE - VS2008.
Back to top
View user's profile Send private message
Worros



Joined: 19 Jan 2007
Posts: 1123

Post (Separately) Posted: Mon Mar 09, 2009 03:36    Post subject: Reply with quote

VadiMGP wrote:
Если же она и в самом деле долго выполняется, то разбивай на более простые действия и хронометрируй их. Так и найдешь кто там такой задумчивый.
.........................................................................
Да ничего читать не надо. Просто дробишь код.
Ну с дроблением то понятно. Я подумал, что нужно хронометрировать по уму, типа профилинга. (я то на глазок)

Проверил. Отвисает именно на MoveWindow(hLWnd,20,20,neww,newh,true);

То есть только перекраивать код? Просто заменить MoveWindow на какой нибудь SetWindowPos или в таком духе не вариант?

Edited : проверил: SetWindowPos тоже тормозит Sad

VadiMGP wrote:
Я же спрашивал, почему ты не ставишь более качественный IDE - VS2008.

2008 мне совершенно не знаком. И знакомиться не очень хочется. Не раз уже вспоминал хорошим словом тех, у кого в исходниках только проект девятки. Под старую студию запаришься переводить Sad
Back to top
View user's profile Send private message
VadiMGP



Joined: 21 Mar 2007
Posts: 1625

Post (Separately) Posted: Mon Mar 09, 2009 03:47    Post subject: Reply with quote

Worros wrote:
То есть только перекраивать код? Просто заменить MoveWindow на какой нибудь SetWindowPos или в таком духе не вариант?
Ну поэкспериментировать можно, вдруг повезет, но я бы не стал.
Между прочим, в MSDN к MoveWindow хорошая ремарка есть
Quote:
If the bRepaint parameter is TRUE, the system sends the WM_PAINT message to the window procedure immediately after moving the window (that is, the MoveWindow function calls the UpdateWindow function). If bRepaint is FALSE, the application must explicitly invalidate or redraw any parts of the window and parent window that need redrawing.

MoveWindow sends the WM_WINDOWPOSCHANGING, WM_WINDOWPOSCHANGED, WM_MOVE, WM_SIZE, and WM_NCCALCSIZE messages to the window.
Значит главный поток должен быть готов обслужить все эти сообщения. Сильно подозреваю, что при SetWindowPos будет та же песня.
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
Goto page Previous  1, 2, 3
Page 3 of 3

 
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