![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
В чём разница WM_RBUTTONUP и WM_NCRBUTTONUP [D7]
Дед Маздай © (2006-09-10 02:26:00)Сабж.
Да и вообще между WM_*** и WM_NC** ?
Ketmar (2006-09-11 16:42:00) [1]> [8] Наиль © (11.09.06 16:28)
ну я же сказал -- "в нормальных ситуациях". %-)
Наиль (2006-09-11 16:28:00) [2]Точно не приходит?
В 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:11:00) [3]> [6] IceBeerg © (11.09.06 15:57)
а любая. это сообщение не приходит в нормальных ситуациях. %-)
IceBeerg (2006-09-11 15:57:00) [4]Ketmar © (10.09.06 3:04) [4]
Ну смотря какая ошибка... ;)
Anatoly Podgoretsky (2006-09-10 14:29:00) [5]Дед Маздай (10.09.06 03:01) [3]
Пользуйся справкой.
Ketmar (2006-09-10 03:04:00) [6]WM_NULL. удобно, а главное -- ошибка в её обработке никак не повлияет на программу.
Дед Маздай (2006-09-10 03:01:00) [7]усё, понял. а то не знал, какую мессагу ловить.
Ketmar (2006-09-10 02:40:00) [8]заблокируй вторую -- и отвалится первая.
Германн (2006-09-10 02:39:00) [9]
> В чём разница WM_RBUTTONUP и WM_NCRBUTTONUP [D7]
>
> Дед Маздай (10.09.06 02:26)
>
> Сабж.
>
> Да и вообще между WM_*** и WM_NC** ?
>
В чём в чём. В NC! Что означает NonClient!
В окне Виндовс есть Клиентская область и НеКлиентская (Имхо системная).