zoukankan      html  css  js  c++  java
  • 使用 WM_NCHITTEST 消息判断鼠标所在窗口的部位

    本例效果图:



    WM_NCHITTEST 消息返回后, 消息的 Result 参数表示了鼠标所在窗口的部位.

    窗体设计步骤: 新建工程后, 随便添加一个菜单; 设置窗体的 AutoScroll 属性为 True, 并添加一个 Panel 放在合适的位置, 以让窗口出现滚动条.
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls, Menus;
    
    type
      TForm1 = class(TForm)
        Panel1: TPanel;
        MainMenu1: TMainMenu;
        mnuFile: TMenuItem;
      private
        procedure MyMsg(var msg: TWMNCHitTest); message WM_NCHITTEST;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    const
      arr: array[-2..21] of string = (
        'HTERROR',
        'HTTRANSPARENT',
        'HTNOWHERE',
        'HTCLIENT - 客户区',
        'HTCAPTION - 标题',
        'HTSYSMENU - 系统菜单',
        'HTGROWBOX',
        'HTMENU - 菜单',
        'HTHSCROLL - 水平滚动条',
        'HTVSCROLL - 垂直滚动条',
        'HTMINBUTTON - 最小化按钮',
        'HTMAXBUTTON - 最大化按钮',
        'HTLEFT - 左边界',
        'HTRIG - 右边界',
        'HTTOP - 上边界',
        'HTTOPLEFT - 左上角',
        'HTTOPRIG - 右上角',
        'HTBOTTOM - 下边界',
        'HTBOTTOMLEFT - 左下角',
        'HTBOTTOMRIG - 右下角',
        'HTBORDER',
        'HTOBJECT',
        'HTCLOSE - 关闭按钮',
        'HTHELP');
    
    procedure TForm1.MyMsg(var msg: TWMNCHitTest);
    var
      i: Integer;
    begin
      Inherited;
      i := msg.Result;
      Text := Format('%d: %s', [i, arr[i]]);
    end;
    
    end.
    
    //另附 WM_NCHITTEST 消息中 Result 参数的所有可能值的列表: HTERROR = -2; HTTRANSPARENT = -1; HTNOWHERE = 0; HTCLIENT = 1; HTCAPTION = 2; HTSYSMENU = 3; HTGROWBOX = 4; HTSIZE = HTGROWBOX; HTMENU = 5; HTHSCROLL = 6; HTVSCROLL = 7; HTMINBUTTON = 8; HTMAXBUTTON = 9; HTLEFT = 10; HTRIGHT = 11; HTTOP = 12; HTTOPLEFT = 13; HTTOPRIGHT = 14; HTBOTTOM = 15; HTBOTTOMLEFT = $10; HTBOTTOMRIGHT = 17; HTBORDER = 18; HTREDUCE = HTMINBUTTON; HTZOOM = HTMAXBUTTON; HTSIZEFIRST = HTLEFT; HTSIZELAST = HTBOTTOMRIGHT; HTOBJECT = 19; HTCLOSE = 20; HTHELP = 21;
  • 相关阅读:
    个人冲刺8
    个人冲刺7
    个人冲刺6
    个人冲刺5
    个人冲刺4
    个人冲刺阶段3
    个人冲刺阶段2
    课下作业1-扩展阅读
    随手快递app开发的第四天
    随手快递app开发的第三天
  • 原文地址:https://www.cnblogs.com/del/p/1177724.html
Copyright © 2011-2022 走看看