Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Двойной щелчок мышью: два WM_LBUTTONUP при одном WM_LBUTTONDOWN - как так?  (Прочитано 7339 раз)
0 Пользователей и 1 Гость смотрят эту тему.
malor
Опытный

ru
Offline Offline

« : 30-07-2011 17:08 » 

Делая двойной щелчок в клиентской зоне я проверял какие приходят Message.Msg и получалось что одно WM_LBUTTONDOWN и два WM_LBUTTONUP. Почему?
Код:
implementation

{$R *.dfm}

var countClick :Word;
    Description: Word;

procedure TForm1.Wndproc(var Message: TMessage);
begin

  case Message.Msg of

    WM_LBUTTONDOWN, WM_LBUTTONUP:
    begin
      countClick := countClick + 1;

      Description := Message.Msg;

    end;

  else
    inherited;
  end;

end;

* DClickProject.zip (84.41 Кб - загружено 718 раз.)
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 30-07-2011 17:32 » 

у меня по-одному. правда, в Д7 проверял.
Записан

zubr
Модератор

by
Offline Offline
Пол: Мужской

« Ответ #2 : 30-07-2011 17:36 » 

При получении сообщения WM_LBUTTONDOWN и  WM_LBUTTONUP твоя процедура окна не возвращает управление оригинальной процедуре окна.
Код:
procedure TForm1.Wndproc(var Message: TMessage);
begin

  case Message.Msg of

    WM_LBUTTONDOWN, WM_LBUTTONUP:
    begin
      countClick := countClick + 1;

      Description := Message.Msg;

    end;
  end;

  inherited;
end;
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 30-07-2011 17:40 » 

и поэтому это окно невозможно штатно закрыть, например ) но я так понимаю, что проект чисто тестовый.
Записан

malor
Опытный

ru
Offline Offline

« Ответ #4 : 12-08-2011 07:04 » 

"Win 32. Эфффективная разработка приложений" Юрий Щупак, 2007 г., с.229:
Цитата
"Если класс окна определен без флага CS_DBLCLKS и пользователь делает двойной щелчок левой кнопкой мыши, то оконная процедура последовательно получает сообщения WM_BUTT0ND0WN, WM_LBUTTONUP, WM_LBUTT0ND0WN и WM_LBUTTONUP.
Если класс окна определен с флагом CS_DBLCLKS, то после двойного щелчка оконная процедура получит сообщения WM_LBUTT0ND0WN, WM_LBUTTONUP, WM_LBUTTONDBLCLK и WM_LBUTTONUP. Легко заметить, что в этом случае второе сообщение WM_LBUTT0ND0WN заменяется сообщением WM_LBUTTONDBLCLK."
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines