Текущий архив: 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.46 MB
Время: 0.033 c