Что делает (WM_NCLBUTTONDOWN)? - PullRequest
3 голосов
/ 09 января 2012

Я изучал пример создания круглой формы в Visual Basic 6 и остановился на коде: Public Const WM_NCLBUTTONDOWN = &HA1 Я только знаю, что это сообщение для окон, переданное какConst ...

Что я хочу знать:

  • что такое & HA1?

  • что делает Const WM_NCLBUTTONDOWN?какое сообщение он отправляет в Windows?

  • что-нибудь еще об этом.

Пожалуйста, спасибо

Ответы [ 3 ]

9 голосов
/ 09 января 2012

Вы работаете с сообщениями, которые Windows отправляет окну, чтобы сообщить вашему коду, что произошло что-то интересное.Эта константа будет использоваться в методе WndProc () формы, который запускается, когда Windows отправляет сообщение.

Сообщение WM_NCLBUTTONDOWN является одним из этих сообщений.WM = оконное сообщение.NC = Non Client, часть окна, которая не является клиентской областью, границами и строкой заголовка.L = Левая кнопка, вы можете выяснить BUTTONDOWN.

Эти сообщения объявлены в файле Windows SDK.Он будет у вас на компьютере, версия этого файла для VS2008 находится в C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Include \ WinUser.h.Откройте его с помощью текстового редактора или VS, чтобы увидеть, что внутри.Найдите идентификатор сообщения, чтобы найти эту строку:

 #define WM_NCLBUTTONDOWN                0x00A1

Windows SDK был написан для работы с программами на Си.#define эквивалентен Const в VB.NET.Префикс 0x означает «шестнадцатеричный» на языке C, как & H в VB.NET.Калькулятор Windows полезен для преобразования шестнадцатеричных значений в десятичные и обратно, используйте View + Programmer.Вы увидите причину, по которой & H используется в программе VB.NET, эти константы начинаются с шестнадцатеричного значения в объявлении ядра.Но Private Const WM_NCLBUTTONDOWN = 161 будет работать так же хорошо (10 x 16 + 1).

Так что в WndProc () вы бы использовали оператор Select Case или If для обнаружения сообщения.И вы можете сделать что-то особенное, когда пользователь нажимает левую кнопку мыши в строке заголовка окна.Если вы проигнорируете это, тогда MyBase.WndProc(m) запустится, и произойдет обычная вещь: Windows запускает модальный цикл, который позволяет пользователю перемещать окно.На самом деле очень редко когда вы хотите остановить или изменить это поведение, пользователи довольно любят это поведение по умолчанию, поскольку все окна в Windows ведут себя таким образом.Единственное сообщение, поведение которого вы обычно хотите настроить, - это WM_NCHITTEST.Очень полезно, чтобы придать окну бескрайнее поведение.Но это другая история.

3 голосов
/ 09 января 2012
  • Это шестнадцатеричный целочисленный литерал

  • Он объявляет константу;на самом деле он ничего не делает.
    Сообщение WM_NCLBUTTONDOWN отправляется, когда пользователь нажимает левую кнопку мыши, когда курсор находится в области, не являющейся клиентом окна.Это сообщение отправляется в окно, содержащее курсор

1 голос
/ 09 января 2012
  • &HA1 означает шестнадцатеричное число A1, то есть 161 (хотя вы обычно будете видеть константы сообщений Windows, представленные в шестнадцатеричном формате). Чаще всего вы увидите это как 0xA1 (или 0x00A1), поскольку именно так шестнадцатеричное число будет представлено в C или C ++ (API-интерфейс Windows изначально был написан для C).
  • Вы не будете отправлять WM_NCLBUTTONDOWN в Windows; это наоборот. Windows отправит вам WM_NCLBUTTONDOWN.

Если вы хотите узнать, для чего нужен WM_NCLBUTTONDOWN, документация - это просто поиск в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...