zl程序教程

您现在的位置是:首页 >  云平台

当前栏目

MFC 窗口消息详解

消息 详解 窗口 mfc
2023-09-11 14:14:03 时间
Public Const WM_NULL = &H0         //空消息
Public Const WM_NCCREATE = &H81    //当窗口第一次被创建时,此消息在WM_CREATE消息发送前发送
Public Const WM_CREATE = &H1       //窗口被创建时发送到它的窗口过程的消息
Public Const WM_NCDESTROY = &H82   //当窗口的非客户区正在销毁时
Public Const WM_DESTROY = &H2      //当窗口正在销毁时
Public Const WM_ACTIVATEAPP = &H1C //窗口准备被激活前或准备失去激活状态后的消息
Public Const WM_NCACTIVATE = &H86  //窗口非客户区准备被激活时或准备失去激活状态时的消息
Public Const WM_ACTIVATE = &H6     //窗口准备被激活时或准备失去激活状态时的消息
Public Const WM_SETFOCUS = &H7     //窗口得到焦点时(比如窗口由最小化还原时)的消息
Public Const WM_KILLFOCUS = &H8    //窗口失去焦点时的消息

Public Const WM_MOVE = &H3         //窗口移动后或最大,最小化,恢复,还原后发送到它的窗口过程的消息

Public Const WM_SIZE = &H5         //窗口的大小改变后或最大,最小化后发送到它的窗口过程的消息(可用wParam判断最大还是最小化)
       'Size消息的附加信息(wParam)
       Const SIZE_RESTORED = 0
       Const SIZE_MINIMIZED = 1
       Const SIZE_MAXIMIZED = 2
       Const SIZE_MAXSHOW = 3
       Const SIZE_MAXHIDE = 4

      
Public Const WM_ENABLE = &HA            //当调用EnableWindow API函数使窗口或控件的Enable状态发生改变时窗口接收到的消息
Public Const WM_SETREDRAW = &HB         //设置窗口或控件是否能重画(附加消息wParam为0时不能重画,为1时可以重画)
Public Const WM_SETTEXT = &HC           //设置窗口标题或控件的内容。也可以用来向另一个应用程序发送数据的消息。效果:跟 相同 SetWindowText API函数
Public Const WM_GETTEXT = &HD           //获取窗口标题或控件的内容。效果:跟 GetWindowText API函数相同
Public Const WM_GETTEXTLENGTH = &HE     //获取窗口标题或控件的内容的长度。效果:跟 GetWindowTextLength API函数相同
Public Const WM_PAINT = &HF             //当窗口有无效区域时,系统要求窗口重画无效区域的消息。可以调用 InvalidateRect API函数使窗口有无效区域
Public Const WM_CLOSE = &H10            //当窗口或应用程序要关闭时,或用来关闭另一个窗口或应用程序的消息
Public Const WM_QUERYENDSESSION = &H11  //关机,注销,重新启动时或其他程序调用了ExitWindows API函数,系统依次发送给所有程序的消息
Public Const WM_QUIT = &H12             //用来结束程序运行或当程序调用PostQuitMessage函数的消息
Public Const WM_QUERYOPEN = &H13        //当窗口恢复以前的大小位置时,把此消息发送给某个图标
Public Const WM_ERASEBKGND = &H14       //当窗口背景被擦除时。效果:跟 VB的Form_Paint过程相同(当AutoRedraw属性设置为True时)
Public Const WM_SYSCOLORCHANGE = &H15   //当系统颜色改变时,发送此消息给所有顶层窗口
Public Const WM_ENDSESSION = &H16       //当系统发出WM_QUERYENDSESSION消息后,等待检查WM_QUERYENDSESSION消息的返回值, 再接着发送此消息给应用程序,系统并根据返回值决定是否关机,注销或重启
Public Const WM_SHOWWINDOW = &H18       //当调用ShowWindow API函数使窗口显示的状态改变或窗口显示的状态发生改变时
Public Const WM_WININICHANGE = &H1A     //当系统的Win.ini文件内容改变后,发送此消息给所有顶层窗口
Public Const WM_DEVMODECHANGE = &H1B    //当系统的设备模式改变后,发送此消息给所有顶层窗口
Public Const WM_FONTCHANGE = &H1D       //当系统的字体资源库改变后,发送此消息给所有顶层窗口
Public Const WM_TIMECHANGE = &H1E       //当调用API改变或重新设置系统的时间后,系统发送此消息给所有顶层窗口
Public Const WM_CANCELMODE = &H1F       //发送此消息来取消某种正在进行的模式(操作)
Public Const WM_SETCURSOR = &H20        //当鼠标进入窗口时和在窗口上移动时
Public Const WM_MOUSEACTIVATE = &H21    //当用鼠标激活窗口时
Public Const WM_CHILDACTIVATE = &H22    //当MDI子窗口被激活,移动,改变大小
Public Const WM_QUEUESYNC = &H23        //此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息???

Public Const WM_GETMINMAXINFO = &H24    //当窗口将要改变大小或位置前
Public Type MINMAXINFO
  ptReserved      As POINTAPI
  ptMaxSize       As POINTAPI
  ptMaxPosition   As POINTAPI
  ptMinTrackSize  As POINTAPI //可以用来限制窗口最小的大小
  ptMaxTrackSize  As POINTAPI //可以用来限制窗口最大的大小
End Type


Public Const WM_DRAWITEM = &H2B    //当button,combobox,listbox,menu的可视外观改变时,发送此消息给这些控件的父窗口
Public Const WM_MEASUREITEM = &H2C //当list box 或 combo box被销毁 或 当某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, 或 CB_RESETCONTENT 消息

Public Const WM_SETFONT = &H30     //设置窗口或控件所使用的字体
Public Const WM_GETFONT = &H31     //得到窗口或控件所使用的字体
Public Const WM_SETHOTKEY = &H32   //设置一个跟窗口关联的热键
Public Const WM_GETHOTKEY = &H33   //得到一个跟窗口关联的热键

Public Const WM_COMPAREITEM = &H39 //发送此消息来判定combobox或listbox新增加的项的相对位置
Public Const WM_GETOBJECT = &H3D   //得到对象的信息
Public Const WM_COMPACTING = &H41  //显示内存已经很少了

Public Const WM_POWER = &H48        //当系统将要进入休眠状态时发送此消息
Public Const WM_COPYDATA = &H4A     //可以向另一个应用程序发送数据的消息
Public Type COPYDATASTRUCT
        dwData As Long '附加数据
        cbData As Long '要发送的数据的大小
        lpData As Long '要发送的数据的地址
End Type

Public Const WM_CANCELJOURNAL = &H4B  //取消日志HOOK
Public Const WM_NOTIFY = &H4E         //ListView,TreeView等通用控件跟它们的父窗口通讯的消息
Public Const WM_INPUTLANGCHANGEREQUEST = &H50 //当选择某种输入语言,或输入语言的热键改变时

Public Const WM_TCARD = &H52          //当程序已经初始化Windows帮助例程时,发送此消息给应用程序
Public Const WM_HELP = &H53           //在当前窗口活动时,按下F1键时收到的消息
Public Const WM_USERCHANGED = &H54    //当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息
Public Const WM_NOTIFYFORMAT = &H55   //公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信
Public Const WM_CONTEXTMENU = &H7B    //当在某个窗口中点击了一下右键就发送此消息给这个窗口
Public Const WM_STYLECHANGING = &H7C  //当调用SetWindowLong API函数改变一个或多个窗口的风格时
Public Const WM_STYLECHANGED = &H7D   //当调用SetWindowLong API函数改变一个或多个窗口的风格后
Public Const WM_DISPLAYCHANGE = &H7E  //当显示器的分辨率发生改变后,系统发送此消息给所有的窗口

Public Const WM_GETICON = &H7F        //获取窗口的图标句柄
Public Const WM_SETICON = &H80        //改变窗口的图标
'附加参数(wparam)的值
Public Const ICON_SMALL = 0 		//小图标
Public Const ICON_BIG = 1   		//窗口左上角那个大图标

Public Const WM_NCCALCSIZE = &H83      //当需要计算窗口的非客户区大小时(例如:窗口大小改变了)。非客户区指的是窗口标题栏和窗口边框
Public Const WM_NCHITTEST = &H84       //当鼠标进入窗口(包含非客户区)时和在窗口上(包含非客户区)移动时

Public Const WM_NCMOUSEMOVE = &HA0     //当鼠标在窗口非客户区移动时
Public Const WM_NCLBUTTONDOWN = &HA1   //当鼠标左键在窗口非客户区按下
Public Const WM_NCLBUTTONUP = &HA2     //当鼠标左键在窗口非客户区放开
Public Const WM_NCLBUTTONDBLCLK = &HA3 //当鼠标左键在窗口非客户区双击
Public Const WM_NCRBUTTONDOWN = &HA4   //当鼠标右键在窗口非客户区按下
Public Const WM_NCRBUTTONUP = &HA5     //当鼠标右键在窗口非客户区放开
Public Const WM_NCRBUTTONDBLCLK = &HA6 //当鼠标右键在窗口非客户区双击
Public Const WM_NCMBUTTONDOWN = &HA7   //当鼠标中键在窗口非客户区按下
Public Const WM_NCMBUTTONUP = &HA8     //当鼠标中键在窗口非客户区放开
Public Const WM_NCMBUTTONDBLCLK = &HA9 //当鼠标中键在窗口非客户区双击

Public Const WM_KEYDOWN = &H100        //在键盘按下了某个键(Print Screen键,Alt键,Alt组合键和Win组合键除外),也可以用来模拟按键
Public Const WM_KEYUP = &H101          //在键盘放开了某个键,也可以用来模拟按键
Public Const WM_CHAR = &H102           //接收字符的消息,也可以用来向窗口发送字符
Public Const WM_DEADCHAR = &H103       //死字符消息
Public Const WM_SYSKEYDOWN = &H104     //在键盘按下了 Alt键 或 Alt组合键 的消息
Public Const WM_SYSKEYUP = &H105       //在键盘放开了 Alt组合键
Public Const WM_SYSCHAR = &H106        //系统字符消息
Public Const WM_SYSDEADCHAR = &H107    //系统死字符消息

Public Const WM_INITDIALOG = &H110     //系统标准对话框初始化时的消息,对话框使用此消息代替了WM_CREATE消息
Public Const WM_COMMAND = &H111        //鼠标点击窗口菜单项后或窗口中的非图形控件(如Button)后发送的消息(其中hwnd为窗口句柄,wParam为控件ID,lParam为菜单或控件句柄)
Public Const WM_SYSCOMMAND = &H112     //鼠标点击窗口的非客户区后发送的消息(可用wParam判断点击了非客户区的哪个地方)
       'SYSCOMMAND消息的附加信息(wParam)
       Const SC_SIZE = 61440            //系统菜单项上的大小
       Const SC_MOVE = 61456            //系统菜单项上的移动
       Const SC_MINIMIZE = 61472        //系统菜单项上的最小化
       Const SC_MAXIMIZE = 61488        //系统菜单项上的最大化
       Const SC_NEXTWINDOW = &HF040&    //显示在下次后面的再打开窗口
       Const SC_PREVWINDOW = &HF050&    //显示上次前面打开的窗口
       Const SC_CLOSE = 61536           //系统菜单项上的关闭
       Const SC_RESTORE = 61728         //系统菜单项上还原
       Const SC_SCREENSAVE = &HF140&    //调用屏幕保护程序(如果设置有的话)
       Const SC_ICON = 61587            //点击了窗口左上角的图标
       Const SC_ZOOM = SC_MAXIMIZE      //最大化
       Const SC_MONITORPOWER = &HF170&  //关闭显示器(附加参数lParam的值为1或2)


Public Const WM_TIMER = &H113            //定时器专用消息,可用SetTimer或KillTimer API函数安装或卸载一个定时器
Public Const WM_HSCROLL = &H114          //水平滚动条滚动时
Public Const WM_VSCROLL = &H115          //垂直滚动条滚动时
Public Const WM_INITMENU = &H116         //当鼠标左键点击窗口菜单栏前
Public Const WM_INITMENUPOPUP = &H117    //当鼠标左键点击窗口菜单栏后,菜单弹出前
Public Const WM_MENUSELECT = &H11F       //当菜单项被选中时
Public Const WM_MENUCHAR = &H120         //当菜单已被激活且用户按下了某个键(不同于加速键),发送此消息给菜单的父窗口
Public Const WM_ENTERIDLE = &H121        //当一个模态对话框或菜单进入空闲状态时,发送此消息给它的父窗口

Public Const WM_MOUSEMOVE = &H200        //当鼠标在窗口客户区移动时
Public Const WM_LBUTTONDOWN = &H201      //当鼠标左键在窗口客户区按下
Public Const WM_LBUTTONUP = &H202        //当鼠标左键在窗口客户区放开
Public Const WM_LBUTTONDBLCLK = &H203    //当鼠标左键在窗口客户区双击
Public Const WM_RBUTTONDOWN = &H204      //当鼠标右键在窗口客户区按下
Public Const WM_RBUTTONUP = &H205        //当鼠标右键在窗口客户区放开
Public Const WM_RBUTTONDBLCLK = &H206    //当鼠标右键在窗口客户区双击
Public Const WM_MBUTTONDOWN = &H207      //当鼠标中键在窗口客户区按下
Public Const WM_MBUTTONUP = &H208        //当鼠标中键在窗口客户区放开
Public Const WM_MBUTTONDBLCLK = &H209    //当鼠标中键在窗口客户区双击
Public Const WM_MOUSEWHEEL = &H20A       //当滚动鼠标滚轮时
Public Const WM_PARENTNOTIFY = &H210     //当MDI子窗口被创建或被销毁,或按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口

Public Const WM_SIZING = &H214           //当用户正在调整窗口大小时的消息,通过此消息应用程序可以监视窗口大小和位置也可以修改它们
Public Const WM_CAPTURECHANGED = &H215   //鼠标捕获消息或调用SetCapture API后发送到窗口的消息
Public Const WM_MOVING = &H216           //当窗口正在移动中
Public Const WM_POWERBROADCAST = &H218   //系统广播消息给应用程序来通知它有关的电源管理事件
Public Const WM_DEVICECHANGE = &H219     //当设备的硬件配置改变时,发送此消息给应用程序或设备驱动程序(比如:插入了可移动磁盘),可以调用RegisterDeviceNotification 和UnregisterDeviceNotification API函数 注册和销毁设备的硬件配置改变通知消息


Public Const WM_DROPFILES = &H233        //文件拖动入窗口并放开的消息(窗口需要拥有WS_EX_ACCEPTFILES扩展风格,或调用DragAcceptFiles API函数。用DragQueryFile API函数可得到拖动文件名)

Public Const WM_MOUSEHOVER = &H2A1       //在上次调用TrackMouseEvent API函数的指定时间里,鼠标盘旋在窗口的客户区时的消息
Public Const WM_MOUSELEAVE = &H2A3       //鼠标离开上次调用TrackMouseEvent API函数时指定的窗口客户区时的消息。
Public Const WM_CUT = &H300              //剪切剪贴板的内容
Public Const WM_COPY = &H301             //复制剪贴板的内容
Public Const WM_PASTE = &H302            //粘贴剪贴板的内容
Public Const WM_CLEAR = &H303            //清除剪贴板的内容
Public Const WM_UNDO = &H304             //撤消上一次的操作

Public Const WM_DRAWCLIPBOARD = &H308    //当剪贴板的内容改变时发送此消息给剪贴板观察链的第一个窗口。可调用SetClipboardViewer API函数安装到剪贴板观察链上

Public Const WM_HOTKEY = &H312           //当按下由RegisterHotKey API函数注册的热键时收到的消息,也可以用此消息模拟系统热键(比如模拟Win+D键:Call PostMessage(HWND_BROADCAST, WM_HOTKEY, 1, 0))

Public Const WM_USER = &H400             //窗口自定义的消息