Форум: "WinAPI";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
Вниз
Отличие одинарного клика от двойного в трее Найти похожие ветки
← →
Turbid © (2006-03-30 01:58) [0]У меня имеется следующий код, отлавливающий сообщения на иконку в трее:
procedure TMainForm.WM_ICON(var Msg: TMessage);
begin
case Msg.LParam of
WM_LBUTTONDOWN: {Действие №1};
WM_LBUTTONDBLCLK: {Действие №2};
end;
end;
Проблемма в том, что Действие №1 будет срабатывать всегда. Я пробовал решить эту проблемму следующим способом:
procedure TMainForm.WM_ICON(var Msg: TMessage);
var
ClickMsg: TMsg;
TargetTime: Longint;
begin
case Msg.LParam of
WM_LBUTTONDOWN:
begin
TargetTime := GetTickCount + GetDoubleClickTime;
while GetTickCount < TargetTime do
if PeekMessage(ClickMsg, Handle,
WM_LBUTTONDBLCLK,
WM_LBUTTONDBLCLK,
WM_NOREMOVE) then Exit;
{Действие №1};
end;
WM_LBUTTONDBLCLK: {Действие №2};
end;
end;
Но ничего не выходит - PeekMessage всегда возвращает 0. Спрашивается, в чем ошибка? И если другие способы решения данной проблеммы? Заранее благодарю.
← →
Германн © (2006-03-30 02:32) [1]
> TargetTime := GetTickCount + GetDoubleClickTime;
> while GetTickCount < TargetTime do
>
Ну да. TargetTime всегда больше GetTickCount при данном алгоритме. И что ты ещё хочешь?
← →
Turbid © (2006-03-30 02:38) [2]Ну почему же? Если бы TargetTime было в цикле while, то тогда оно было бы всегда больше.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.012 c