`
testcs_dn
  • 浏览: 114400 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WM_NCHITTEST消息说明

 
阅读更多

文章来源:http://blog.csdn.net/yingzheng1983/article/details/3135858

WM_NCHITTEST

当光标移动到窗体,或鼠标按下,释放时,发送WM_NCHITTEST消息,如何鼠标不被捕获,消息在窗体得到光标之后发出,否则,消息发送到捕获到鼠标的窗体。

WM_NCHITTEST 
xPos = LOWORD(lParam); // 光标的水平位置(X)
yPos = HIWORD(lParam); //光标的垂直位置(Y)

Parameters(参数)

xPos

lParam的低次序数值(X的数值)。指定鼠标指针的X坐标,这个坐标是相对于屏幕左上部进行比效的。

yPos

lParam的高次序数值(Y的数值)。指定鼠标指针的Y坐标,这个坐标是相对于屏幕左上部进行比效的。

Return Values(返回值)

返回的值是由DefWindowProc函数所提供的下列数值之一,指出紧跟着光标的位置.

活动的位置

HTBORDER在一个可以用鼠标自由调整大小的(有边框)的窗上边界时

HTBOTTOM在一个可调窗体大小的下边界水平位置时(使用者可以点下鼠标垂直的调正大小)

HTBOTTOMLEFT在一个可调窗体边界的左下角位置时(使用者可以点下鼠标对角的

调窗体大小,从左下向右上调)

HTBOTTOMRIGHT在一个可调窗体边界的右下角位置时(使用者可以点鼠标对角的调

窗体大小,从右下向左上)

HTCAPTION在一个标题栏中

HTCLIENT在窗体客户区

HTCLOSE在关闭按钮(窗体)

HTERROR在屏幕的后面或在窗体之间的线上(相当于HTNOWHERE除了

DefWindowProc函数产生的系统发出的错误)

HTGROWBOX我的理解:在窗体里(相同于HTSIZE)(原文:In a size box (same as

HTSIZE))

HTHELP在帮助按钮上

HTHSCROLL在水平滚动条中

HTLEFT在窗体的左边界上(使用者可以点击鼠标左右(水平)调窗

体的大小)

HTMENU在一个菜单上

HTMAXBUTTON在最大化按钮上

HTMINBUTTON在最小化按钮上

HTNOWHERE在屏幕的后面或在窗体之间的线上(我的理解:两个窗体,一个前,一个

后,点后面的窗体产生)

HTREDUCE在一个最小化的按钮上(原文:In a Minimize button)

HTRIGHT在窗体的右边界(使用者能点鼠标水平调正窗体大小)

HTSIZE原文:In a size box (same as HTGROWBOX同样的HTGROWBOX)

HTSYSMENU在一个系统菜单上,或在一个child(子窗体)的一个关闭按钮上

HTTOP在一个窗体上部的边界位置上

HTTOPLEFT在一个窗体上部的边界的左上角

HTTOPRIGHT在一个窗体上部的边界的右上角

HTTRANSPARENT在同一程序的两个窗体,一个窗体被另一个窗体覆盖着(消息

会传递到下面的窗体,至到其中的一个窗体离开啦,否则就发送

HTTRANSPARENT消息)

HTVSCROLL在垂直滚动条上

HTZOOM在一个最大化按钮上(In a Maximize button)

Remarks(评论)

用一个MAKEPOINTS的宏将lParam转换成POINTS结构

持信息

Windows NT/2000/XP:Included in Windows NT 3.1 and later.

Windows 95/98/Me:Included in Windows 95 and later.

分享到:
评论

相关推荐

    鼠标Hook可视化的控件

    NCLBUTTONUP, WM_NCRBUTTONDBLCLK, WM_NCRBUTTONDOWN, WM_NCRBUTTONUP, WM_NCMBUTTONDBLCLK, WM_NCMBUTTONDOWN, WM_NCMBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_NCMOUSEMOVE, WM_MOUSEACTIVATE, WM_NCHITTEST, WM...

    c#鼠标穿透窗体源码.rar

    `AllowTransparency`属性允许窗体具有透明度,而`WM_NCHITTEST`消息则决定了鼠标在窗体上的位置如何被解释。 1. **设置允许透明**: 首先,在窗体的构造函数或`Load`事件处理程序中,设置窗体的`AllowTransparency...

    为窗体增加边框的Delphi源码实现..rar

    WM_NCHITTEST消息用于确定鼠标位置相对于非客户区的位置,而WM_NCPAINT消息则处理非客户区的绘制。 2. **定义边框样式**:根据设计需求,定义边框的样式,包括宽度、颜色、形状等。这可以通过创建自定义控件或者在...

    MsgInfo V1.00 察看当前进程中消息的控件

    True则只显示加入的窗体句柄消息 EnableClassName和EnableHwnd设置不一致时,以EnableClassName为准5、DisableFrequent:是否过滤掉WM_NCHITTEST、WM_SETCURSOR、WM_ENTERIDLE、WM_NOTIFY出现频繁的消息6、HookType:...

    VC++ MFC 磁性窗体

    在处理WM_NCHITTEST消息时,我们可以判断鼠标位置是否接近窗口的边框,并根据距离调整返回值,从而改变窗口的行为。 以下是实现磁性窗体的基本步骤: 1. **重写OnNcHitTest**:在自定义的CWnd派生类中,我们需要...

    磁性窗体-绝对简单正宗

    1. **消息过滤**:在窗体类中添加消息处理函数,捕获系统发送的WM_NCHITTEST消息。这个消息告诉窗体当前鼠标位置相对于窗体的非客户区(如边框和标题栏)是什么部分。 2. **坐标转换**:根据鼠标位置,计算出与屏幕...

    WinForm实现拦截窗体上各个部位的点击特效实例

    当`m.Msg`等于`WM_NCHITTEST`时,说明系统正在询问鼠标位置。根据`m.Result.ToInt32()`的值,我们可以判断鼠标是否在标题栏、客户区或其他区域,并相应地调整`m.Result`,从而改变默认行为。 例如,如果鼠标在客户...

    c++ buider

    创建程序的步骤通常包括在C++ Builder中创建一个应用程序,设置窗口属性,并编写相应的代码来处理用户交互,例如,通过响应WM_NCHITTEST消息来实现窗口的拖动。 6. 控件和组件: 文档中提到了ImageIcon组件,这是一...

    拖动无边框、无标题栏的C#窗体,源码包下载

    此外,为了让窗体在失去焦点后仍然可以拖动,还需要在窗体的`WndProc`方法中处理`WM_NCHITTEST`消息。这个消息决定了鼠标在非客户区(即窗体边框之外)的行为。以下是一个简单的实现: ```csharp protected ...

    resizable_dlg_src1.zip_zip

    开发者可能会使用`WM_NCHITTEST`和`WM_SIZE`消息来实现自定义的大小调整逻辑。 2. **ResizingDialog.h**:这是对应的头文件,包含了`ResizingDialog`类的声明。头文件通常包含类定义、函数原型、枚举和其他需要在多...

    VC实现的用标准图形组合而成的不规则对话框窗口测试程序

    4. 处理拖动:响应`WM_NCHITTEST`消息,当鼠标在窗口边缘时返回特定值,允许用户通过按住鼠标左键拖动来移动窗口。 5. 计算大小:覆盖`WM_NCCALCSIZE`消息处理,以便在调整窗口大小时正确地绘制不规则形状。 在提供...

    无标题栏无边框窗口最简单的实现

    为了让窗口看起来更加友好,我们可能还需要处理消息,例如WM_NCCALCSIZE和WM_NCHITTEST,以处理窗口的边缘拖动和最大化/最小化行为。这通常在`WndProc`窗口过程函数中完成: ```cpp LRESULT CALLBACK WndProc(HWND ...

    易语言无边框窗口的尺寸调整.7z

    2. **处理鼠标消息**:为了实现手动拖动调整窗口大小,我们需要捕获鼠标的WM_NCHITTEST消息。当用户在窗口边缘按下鼠标时,系统会发送此消息,我们可以通过返回不同的值来告诉系统用户是在哪里点击的,例如HTTOP、...

    VC界面 悬浮 停靠窗口 很经典的代码

    2. 实现窗口消息处理:你需要重写On_WM_NCHITTEST()消息,以便在用户鼠标点击时识别出窗口边缘,决定窗口是否应该停靠。 3. 处理WM_SIZING消息:当用户拖动窗口边缘时,你需要处理WM_SIZING消息,更新窗口的位置和...

    mfc鼠标点击绘图并保存图像

    7. **无标题栏移动窗口**:在MFC中,通常通过响应`ON_WM_NCHITTEST`消息来实现无标题栏窗口的拖动。当鼠标在窗口边缘区域时,返回`HTCAPTION`,使得窗口可以被拖动。 8. **保存图像**:保存图像文件到本地通常需要...

    MFC 无边框对话框缩放

    通常,你需要处理`WM_NCHITTEST`消息,并在适当的位置返回`HTCAPTION`,这样用户就可以在窗口的标题区域拖动窗口。 3. **缩放逻辑**: 缩放无边框对话框通常涉及到处理`WM_SIZE`消息。当用户改变窗口大小时,这个...

    易语言源码抖动窗口.rar

    窗口在接收到特定的消息(如WM_NCHITTEST、WM_NCMOUSEMOVE等)时,会根据鼠标的当前位置和窗口的状态执行相应的操作。在实现抖动窗口时,开发者需要捕获这些消息,并在适当的时候改变窗口的位置。 其次,易语言中的...

    Vista系统的Aero界面源码

    要解决描述中提到的问题,开发者需要深入理解Windows API,特别是与窗口管理相关的部分,如`WM_NCHITTEST`消息用于识别鼠标位置,以及`SetWindowLong`和`GetWindowLong`函数来更改窗口样式和行为。对于窗体大小改变...

    VC实现标题栏添加按钮

    - **消息处理**:添加按钮后,需要捕获和处理WM_NCCALCSIZE、WM_NCPAINT、WM_NCHITTEST等消息,以确保按钮的正确显示和交互。 - **按钮状态管理**:NCButtonManager类可能会跟踪每个按钮的状态,如是否被按下、是否...

    ResizeDlgTest.rar

    这些细节通常涉及到Windows消息机制,如WM_NCHITTEST、WM_SIZE和WM_MOUSEMOVE等消息,以及对话框的OnSize()和OnNcCalcSize()成员函数。 "ResizeDlgTest"文件可能是示例项目的源代码或编译后的可执行文件。如果它是...

Global site tag (gtag.js) - Google Analytics