什么(WM_NCLBUTTONDOWN)呢?

时间:2012-01-08 22:18:32

标签: visual-studio api vb6

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

我想知道的是:

  • 什么是& HA1?

  • Const WM_NCLBUTTONDOWN做什么?它发送给Windows的消息是什么?

  • 关于它的任何其他事情。

拜托,谢谢

3 个答案:

答案 0 :(得分:9)

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

WM_NCLBUTTONDOWN消息是其中一条消息。 WM =窗口消息。 NC =非客户端,窗口中不是客户区的部分,边框和标题栏。 L =左键,你可以算出BUTTONDOWN。

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

 #define WM_NCLBUTTONDOWN                0x00A1

编写Windows SDK是为了使用C程序。 #define等同于VB.NET中的Const。 0x前缀在C语言中表示'十六进制',就像在VB.NET中的& H一样。 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。提供无边框窗口边框的行为非常有用。但这是另一个故事。

答案 1 :(得分:3)

  • 这是一个十六进制整数字面

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

答案 2 :(得分:1)

  • &HA1表示hexadecimal数字A1,即161(尽管您通常会看到以十六进制表示的Windows消息常量)。更常见的是,您会将此视为0xA1(或0x00A1),因为这是十六进制数在C或C ++中的表示方式(Windows API最初是为C编写的)。
  • 您不会将WM_NCLBUTTONDOWN发送给Windows;反过来说。 Windows将发送 WM_NCLBUTTONDOWN

如果您想了解WM_NCLBUTTONDOWN的用途,the documentation只是一次网络搜索。