Главная страница
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.045 c
15-1167231770
Ega23
2006-12-27 18:02
2007.01.21
А вот про ShortCut вопрос:


3-1161961260
Juju
2006-10-27 19:01
2007.01.21
Погрешности в Float полях... (Access + ADO + Delphi 7)


9-1142413694
:-))
2006-03-15 12:08
2007.01.21
Изучение DelphiX


15-1166914973
Denisich
2006-12-24 02:02
2007.01.21
Установка acs24


15-1167118831
BiN
2006-12-26 10:40
2007.01.21
The Guess Who, American Woman