关于Visual Studio:(WM_NCLBUTTONDOWN)是做什么的?

What does ( WM_NCLBUTTONDOWN ) do?

我正在研究如何在Visual Basic 6中制作圆形表单的示例,而我停在了代码处:
Public Const WM_NCLBUTTONDOWN = &HA1
我只知道这是作为Const传递给Windows的消息...

我想知道的是:

  • 什么是&HA1?

  • const WM_NCLBUTTONDOWN做什么? 它向Windows发送什么消息?

  • 关于它的其他事情。

拜托,谢谢


您正在处理Windows发送到窗口的消息,以告诉您的代码发生了一些有趣的事情。您将在窗体的WndProc()方法中找到该常量,该窗体在Windows发送消息时运行。

WM_NCLBUTTONDOWN消息是那些消息之一。 WM =窗口消息。 NC =非客户程序,不是客户区,边框和标题栏的窗口部分。 L =左键,您可以找出BUTTONDOWN。

这些消息在Windows SDK文件中声明。您将其安装在计算机上,该文件的VS2008版本位于C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ Include \ WinUser.h。使用文本编辑器或VS将其打开,以查看其中的内容。搜索消息标识符以找到此行:

1
 #define WM_NCLBUTTONDOWN                0x00A1

Windows SDK旨在与C程序一起使用。 #define等效于VB.NET中的Const。 0x前缀在C语言中表示"十六进制",就像&H在VB.NET中一样。 Windows计算器有助于将十六进制值转换为十进制并返回,使用View + Programmer。您将看到在VB.NET程序中使用&H的原因,这些常量在核心声明中以十六进制开头。但是Private Const WM_NCLBUTTONDOWN = 161也可以正常工作(10 x 16 +1)。

因此,在WndProc()中,您将使用Select Case或If语句来检测消息。当用户单击窗口标题栏上的鼠标左键时,您可以执行一些特殊的操作。如果忽略它,则会运行MyBase.WndProc(m)并发生正常情况:Windows启动一个模态循环,该循环允许用户移动窗口。您实际上很少要停止或更改该行为,用户非常喜欢该默认行为,因为Windows中的所有窗口都以这种方式运行。您通常要自定义行为的唯一消息是WM_NCHITTEST。提供无边界窗口类似边框的行为非常有用。但这是另一个故事。


  • 那是一个十六进制整数文字

  • 它声明一个常量;它实际上什么也没做。
    当光标在窗口的非客户区域内时,用户按下鼠标左键时,会发布WM_NCLBUTTONDOWN消息。此消息被发布到包含光标的窗口


  • &HA1表示十六进制数A1,即161(尽管您通常会看到十六进制表示的Windows消息常量)。更常见的是,您会看到它是0xA1(或0x00A1),因为这是用C或C ++表示十六进制数的方式(Windows API最初是为C编写的)。
  • 您不会将WM_NCLBUTTONDOWN发送到Windows。相反。 Windows将向您发送WM_NCLBUTTONDOWN

如果您想知道WM_NCLBUTTONDOWN的用途,则只需通过Web搜索即可获得该文档。