什么(WM_NCLBUTTONDOWN)呢?

3 vb6 api visual-studio

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

我想知道的是:

  • 什么是HA1?

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

  • 其他任何事情.

拜托,谢谢

Han*_*ant 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
Run Code Online (Sandbox Code Playgroud)

编写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.提供无边框窗口边框的行为非常有用.但这是另一个故事.