Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.21;
Скачать: CL | DM;

Вниз

В чём разница WM_RBUTTONUP и WM_NCRBUTTONUP   Найти похожие ветки 

 
Дед Маздай   (2006-09-10 02:26) [0]

Сабж.

Да и вообще между WM_*** и WM_NC** ?


 
Германн ©   (2006-09-10 02:39) [1]


> В чём разница WM_RBUTTONUP и WM_NCRBUTTONUP [D7]
>
> Дед Маздай   (10.09.06 02:26)
>
> Сабж.
>
> Да и вообще между WM_*** и WM_NC** ?
>

В чём в чём. В NC! Что означает NonClient!
В окне Виндовс есть Клиентская область и НеКлиентская (Имхо системная).


 
Ketmar ©   (2006-09-10 02:40) [2]

заблокируй вторую -- и отвалится первая.


 
Дед Маздай   (2006-09-10 03:01) [3]

усё, понял. а то не знал, какую мессагу ловить.


 
Ketmar ©   (2006-09-10 03:04) [4]

WM_NULL. удобно, а главное -- ошибка в её обработке никак не повлияет на программу.


 
Anatoly Podgoretsky ©   (2006-09-10 14:29) [5]

Дед Маздай   (10.09.06 03:01) [3]
Пользуйся справкой.


 
IceBeerg ©   (2006-09-11 15:57) [6]

Ketmar ©   (10.09.06 3:04) [4]
Ну смотря какая ошибка... ;)


 
Ketmar ©   (2006-09-11 16:11) [7]

> [6] IceBeerg ©   (11.09.06 15:57)
а любая. это сообщение не приходит в нормальных ситуациях. %-)


 
Наиль ©   (2006-09-11 16:28) [8]

Точно не приходит?
В Forms есть такой код

procedure TApplication.WndProc(var Message: TMessage);
...
       WM_NULL:
         CheckSynchronize;
...
End;

function CheckSynchronize(Timeout: Integer = 0): Boolean;
var
 SyncProc: PSyncProc;
 LocalSyncList: TList;
begin
 if GetCurrentThreadID <> MainThreadID then
   raise EThread.CreateResFmt(@SCheckSynchronizeError, [GetCurrentThreadID]);
 if Timeout > 0 then
   WaitForSyncEvent(Timeout)
 else
   ResetSyncEvent;
 LocalSyncList := nil;
 EnterCriticalSection(ThreadLock);
 try
   Integer(LocalSyncList) := InterlockedExchange(Integer(SyncList), Integer(LocalSyncList));
   try
     Result := (LocalSyncList <> nil) and (LocalSyncList.Count > 0);
     if Result then
     begin
       while LocalSyncList.Count > 0 do
       begin
         SyncProc := LocalSyncList[0];
         LocalSyncList.Delete(0);
         LeaveCriticalSection(ThreadLock);
         try
           try
             SyncProc.SyncRec.FMethod;
           except
             SyncProc.SyncRec.FSynchronizeException := AcquireExceptionObject;
           end;
         finally
           EnterCriticalSection(ThreadLock);
         end;
{$IFDEF MSWINDOWS}
         SetEvent(SyncProc.signal);
{$ENDIF}
{$IFDEF LINUX}
         pthread_cond_signal(SyncProc.Signal);
{$ENDIF}
       end;
     end;
   finally
     LocalSyncList.Free;
   end;
 finally
   LeaveCriticalSection(ThreadLock);
 end;
end;


Прокоментируйте.


 
Ketmar ©   (2006-09-11 16:42) [9]

> [8] Наиль ©   (11.09.06 16:28)
ну я же сказал -- "в нормальных ситуациях". %-)



Страницы: 1 вся ветка

Текущий архив: 2007.01.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.049 c
2-1167160588
Серый
2006-12-26 22:16
2007.01.21
Запрет ввода


11-1144316016
BaryVetaL
2006-04-06 13:33
2007.01.21
В догонку к BVLedNumber...


15-1167814095
Сергей7878
2007-01-03 11:48
2007.01.21
На сколько быстрее Sempron 2800 (s754)+int GF6100 чем Socket A Du


15-1167264430
@!!ex
2006-12-28 03:07
2007.01.21
Булевы функции. Классы поста.


8-1148966463
-=Germe$=-
2006-05-30 09:21
2007.01.21
сплайн-интерполяция