我正在研究如何在Visual Basic 6中制作圆形表单的示例,我停止了代码:
的 Public Const WM_NCLBUTTONDOWN = &HA1
我只知道这是传递给Const的窗口的消息...
我想知道的是:
什么是& HA1?
Const WM_NCLBUTTONDOWN做什么?它发送给Windows的消息是什么?
关于它的任何其他事情。
拜托,谢谢
答案 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只是一次网络搜索。