皇家赌场游戏网址 1

WM_ACTIVATEAPP = 28

附近,我们得以创制贰个带窗口的次第,运转后将其挂起,这时候,即便直接双击张开test.iqy也会hang住。

2 音信类型 
1卡塔尔(英语:State of Qatar) 系统定义音信(System-Defined Messages卡塔尔
 
在SDK中优先定义好的新闻,非顾客定义的,其范围在[0x0000, 0x03ff]中间,
能够分成以下三类:
1>窗口音讯(Windows Message卡塔尔(قطر‎ 
与窗口的内部运行有关,如成立窗口,绘制窗口,销毁窗口等。可以是相像的窗口,也足以是Dialog,控件等。
如:WM_CREATE, WM_PAINT, WM_MOUSEMOVE, WM_CTLCOLOR, WM_HSCROLL…
2>命令音讯(Command Message卡塔尔(英语:State of Qatar):注意这类音信通称为WM_COMMAND
与管理顾客需要有关, 如单击菜单项或工具栏或控件时, 就能生出命令消息。
WM_COMMAND, LOWOOdysseyD(wParam卡塔尔(قطر‎表示菜单项,工具栏按键或控件的ID。假使是控件,
HIWO路虎极光D(wParam卡塔尔表示控件新闻类型
3> 控件通知(Notify Message卡塔尔国 
控件布告新闻, 那是最灵敏的新闻格式, 其Message, wParam,
lParam分别为:WM_NOTIFY,
控件ID,指向NMHD卡宴的指针。NMHD翼虎包括控件布告的原委, 能够自由扩张。
2卡塔尔(قطر‎ 程序定义新闻(Application-Defined Messages卡塔尔(英语:State of Qatar) 
顾客自定义的新闻, 对于其范围好似下规定:
WM_USER: 0x0400-0x7FFF    (ex. WM_USER+10)
WM_APP(winver>4.0): 0x8000-0xBFFF (ex.WM_APP+4)
RegisterWindowMessage: 0xC000-0xFFFF

二个DDE服务程序提交此音讯给DDE顾客程序来传递个意气风发数据项给客商或布告客户的一条可用数据项

瞩目到win7下PostMessageW是用的线程2调用的,搜一下线程创立API
CreateThread

3 新闻队列(Message Queues卡塔尔 
Windows中有两种档期的顺序的音讯队列
1卡塔尔(英语:State of Qatar) 系统消息队列(System Message Queue卡塔尔国 那是一个系统唯后生可畏的Queue,设备驱动(mouse,
keyboard卡塔尔国会把操作输入转形成音讯存在系统队列中,然后系统会把此音信放到目的窗口所在的线程的音信队列(thread-specific
message queue卡塔尔(英语:State of Qatar)中伺机管理
2卡塔尔国 线程音信队列(Thread-specific Message Queue卡塔尔国 每一个GUI线程都会维护这么一个线程音信队列。(那几个行列独有在线程调用GDI函数时才会创建,私下认可不创建卡塔尔(قطر‎。然后线程新闻队列中的信息会被送到相应的窗口进度(WndProc卡塔尔(英语:State of Qatar)管理.
留神:
线程音讯队列中WM_PAINT,WM_TIMEPRADO独有在Queue中平素不任何音讯的时候才会被拍卖,WM_PAINT音信还大概会被联合以升高成效。其余兼具消息以先进先出(FIFO)的措施被拍卖。

WM_CHAR = 258

能够是ShellExecuteEx内部创设的线程,所以win7上ShellExecuteEx创造了五个线程特意用来拍卖和excel的DDE新闻通信,那样就可以健康的抽出处理excel发过来的WM_DDE_INITIATE消息了

1. 窗口进程 
各样窗口会有八个叫做窗口进度的回调函数(WndProc卡塔尔(قطر‎,它包蕴四个参数,分别为:窗口句柄(Window
Handle卡塔尔(英语:State of Qatar),新闻ID(Message ID卡塔尔国,和八个音信参数(wParam,
lParam卡塔尔,当窗口收到音讯时系统就能调用此窗口进度来管理新闻。(所以叫回调函数)

应用程序发送此新闻来设置三个窗口的文件

 

8(信息死锁( Message Deadlocks卡塔尔(قطر‎ 
设若有线程A和B, 今后有以下下步骤
1卡塔尔(英语:State of Qatar) 线程A SendMessage给线程B, A等待音信在线程B中拍卖后回去
2卡塔尔(قطر‎ 线程B收到了线程A发来的音讯,并开展管理, 在管理进度中,B也向线程A
SendMessgae,然后等待从A重返。
因为这时候, 线程A正等待从线程B重临, 不可能管理B发来的新闻,
进而引致了/线程A,B互相等待, 产生死锁。多少个线程也能够变成环形死锁。
能够运用 SendNotifyMessage或SendMessageTimeout来防止现身死锁。

皇家赌场游戏网址,WM_PAINT = 15

再次出现情形:XP sp3 / Office 2006(别的office版本应该也得以,未有测量检验)

6 GetMessage, PeekMessage 
PeekMessage会马上回到能够保留新闻
GetMessage在有新闻时再次来到会删除音信

WM_MENUDRAG = 291

call stack展现的确是ShellExecuteEx所调用

9 BroadcastSystemMessage 
大家平常所接触到的音信都以发送给窗口的,其实,
新闻的收信人可以是各种多样的,它可以是应用程序(applications卡塔尔(قطر‎,
可安装驱动(installable drivers卡塔尔,互联网设施(network drivers卡塔尔国,
系统级设备驱动(system-level device drivers卡塔尔(英语:State of Qatar)等, 
布罗兹castSystemMessage那几个API能够对以上系统组件发送音信。

WM_HSCROLL = 276

1. 问题

4 队列新闻(Queued Messages卡塔尔国和非队列音讯(Non-Queued Messages卡塔尔国
1卡塔尔国队列音信(Queued Messages卡塔尔国
 
消息会先保存在音讯队列中,音信循环会从今今后队列中取新闻并散发到各窗口处理
如鼠标,键盘音信。
2卡塔尔(قطر‎ 非队列音信(NonQueued Messages卡塔尔国 新闻会绕过系统新闻队列和线程新闻队列直接发送到窗口进程被处理
如: WM_ACTIVATE, WM_SETFOCUS, WM_SETCURSOR, WM_WINDOWPOSCHANGED 
留意: postMessage发送的新闻是队列新闻,它会把消息Post到消息队列中;
SendMessage发送的音信是非队列音讯, 被向来送到窗口进度处理

WM_PENWINLAST = 911

皇家赌场游戏网址 2

5 PostMessage(PostThreadMessage), SendMessage 
PostMessage:把音信放到钦命窗口所在的线程新闻队列中后立即重临。
PostThreadMessage:把新闻放到钦点线程的音信队列中后旋即赶回。
SendMessage:直接把消息送到窗口进程管理,管理完了才回去。

当三个编辑型控件就要被绘制时发送此音讯给它的父窗口;通过响应那条音讯,全数者窗口能够

本条窗口所属的历程PID =
0xc54,无独有偶是excel的长河,表达ShellExecuteEx确实发送了DDE音信给excel,并且可执发送的信息的thread正是主线程

7 TranslateMessage, TranslateAccelerator 
TranslateMessage: 把一个virtual-key新闻转化成字符音讯(character
message卡塔尔(قطر‎,并放置当前线程的音讯队列中,音信循环下壹回收取管理。
TranslateAccelerator:将急速键对应到对应的菜系命令。它会把WM_KEYDOWN 或
WM_SYSKEYDOWN转变成快捷键表中相应的WM_COMMAND或WM_SYSCOMMAND音讯,
然后把转变后的 WM_COMMAND或WM_SYSCOMMAND直接发送到窗口进程管理,
管理完后才会重临。

转载:

shell_execute.exe的主要code:

的边框体

 

当客户双击鼠标中键同一时候光标又在窗口的非顾客区时发送此音信

皇家赌场游戏网址 3

共控件如树状视图、列表视图等。举个例子,单击或双击三个控件、在控件中选用部分文书、操作控件的

能够见见Excel
hang在NtUserMessageCall(卡塔尔中,经过查询知,SendMessage(卡塔尔国内部就是调用NtUserMessageCall(卡塔尔(英语:State of Qatar)来发送新闻的。

皇家赌场游戏网址 4

当客商有个别窗口中式点心击了须臾间右键就发送此消息给这一个窗口

查看参数知excel调用NtUserMessageCall(卡塔尔国相符如下:

WM_SYSKEYUP = 261

2. 重现步骤

message: UINT / /新闻常量标志符

NtUserMessageCall(HWND_BROADCAST, WM_DDE_INITIATE)

应用程序发送此消息让二个窗口与四个热键相关连

1> 解压iqy_test.zip

B N _ H I L I T E//客商加亮了按键

也能够改革他们;

 

WM_MDIICONARRANGE =552

消息1000为WM_DDE_EXECUTE,Post窗口句柄为0x00310172。

当MDI子窗口被创建或被销毁,或顾客按了一下鼠标键而光标在子窗口上时发送此音讯给它的父窗口

皇家赌场游戏网址 5

WM_POWERBROADCAST =536

在API Monitor中找出一下PostMessage的调用,果然搜到一条

此新闻发送给应用程序来打招呼它有关电源处监护人件;

5>
excel收到WM_DDE_EXECUTE音信后会广播WM_DDE_INITIATE音讯,”WorkerW”窗口所在的console进度由于未有概念消息管理函数,ShellExecuteEx定义的”WorkerW”窗口音信管理函数得不到CPU执行机会,招致不会response该消息,进而诱致excel
hang住

八个DDE顾客程序提交此新闻给三个DDE服务程序,客商接纳此新闻来号令服务器收到二个未经同意的数量项;服务器通过答复WM_DDE_ACK音信提示是还是不是它选拔那个数据项;

4. 为何双击展开excel不会hang住

WM_ASKCBFORMATNAME= 780

4> ShellExecuteEx施行实现,但并不destroy “WorkerW”窗口

WM_HSCROLLCLIPBOARD= 782

注意到下二个API GetWindowThreadProcessId ( 0x00310172 , 0x0012fb70
卡塔尔,恰好是收获那个窗口的pid和tid,查看下参数窗口:

表A-6  通告音讯-列表框

当系统经过发生WM_QUE奔驰G级YENDSESSION新闻后,此音讯发送给应用程序,

3.2.1
依据微软的文书档案可以知道,发送DDE消息除了WM_DDE_INITIATE和WM_DDE_ACK之外用的都以PostMessage

列表框

3> 执行”shell_execute.exe test.iqy”

WM_SETHOTKEY = 50

 

当平台现场已经被转移后发送此新闻给受影响的最一级窗口

3.1 excel hang在哪里?

透过动用给定的相干彰显设备的句柄来设置静态控件的公文和背景颜色

3.2.2 为了验证3.2.1的结论,在PostMessageW上下断点追踪一下

当button, combo box, list box, list view control, or menu item 被成立时

皇家赌场游戏网址 6

消息名称

说 明

LBN_DBLCLK

用户双击了一项

LBN_ERRSPACE

列表框内存不足

LBN_KILLFOCUS

列表框正在失去输入焦点

LBN_SELCANCEL

用户选择被取消

LBN_SELCHANGE

用户选择将改变

LBN_SETFOCUS

列表框获得输入焦点

3.1.1 用windbg附加到excel上,输入如下命令查看主线程hang住之处

WM_MOUSEWHEEL = 522

皇家赌场游戏网址 7

新闻映射的剧情
   
通过ClassWizard为咱们转移的代码,大家得以看来,音信映射基本上分为2繁多:
   
在头文件(.h卡塔尔国中有二个宏DECLARE_MESSAGE_MAP(卡塔尔国,他被放在了类的末尾,是四个public属性的;与之相应的是在落到实处部分(.cpp卡塔尔(英语:State of Qatar)扩充了风姿罗曼蒂克章音信映射表,内容如下:
    BEGIN_MESSAGE_MAP(当前类, 当前类的基类卡塔尔
       //{{AFX_MSG_MAP(CMainFrame)
         音讯的输入项
       //}}AFX_MSG_MAP
   END_MESSAGE_MAP()
  
不过仅是这两项还远不足以完结一条信息,借使一个音讯专门的学业,必需有以下3个部分去合作:
1.在类的定义中参预相应的函数注脚;
2.在类的消息映射表中参预相应的新闻映射入口项;
3.在类的达成中参与相应的函数体;

 

WM_DROPFILES = 563

 

当客商按下鼠标中键同期光标又在窗口的非客商区时发送此新闻

皇家赌场游戏网址 8

当设备的硬件配备退换时发送此音信给应用程序或配备驱动程序

3.3 总结

L B N _ S E T F O CU S列表框得到输入宗旨

皇家赌场游戏网址 9

出殡此新闻给某些与对话框程序关联的控件,widdows调整方位键和TAB键使输入进去此控件

听大人说DDE的音讯参数,可以知道wParam正是殡葬音信的窗口,其句柄为2425190 =
0x250166,反向查询知那是ShellExecuteEx创设的”WorkerW”窗口

WM_SYSKEYDOWN = 260

经过能够疑心是由于console进度在和excel用DDE音讯通信时,console未有响应excel发送的DDE音信,以致excel
hang住

出殡此音信布告应用程序的主窗口that已退出了菜单循环格局

当在console中调用API
ShellExecuteEx张开”test.iqy”文件时,开采excel会hang住,console退出后excel才会响应,但直接双击”test.iqy”是平昔不难点的,有趣的是其大器晚成情况独有在xp爆发,在win7上未有这么些难题。

WM_CANCELMODE = 31

3.2 为了验证3.1.1的估算,用API Monitor一下ShellExecuteEx

窗口进程
 窗口进度是一个用于拍卖全部发送到这一个窗口的音信的函数。任何二个窗口类都有三个窗口进度。同贰个类的窗口使用同风华正茂的窗口进程来响应音讯。系统一发布送音讯给窗口进度将信息数据作为参数字传送递给她,音信赶到之后,依照音信类型排序实行处理,此中的参数则用来差别不一样的新闻,窗口进程使用参数发生合适行为。
 叁个窗口进程至极忽视新闻,假设她不管理,它会将音讯传回到施行暗中同意的拍卖。窗口进程通过调用DefWindowProc来做这么些管理。窗口进度必须return多个值作为它的音信管理结果。大超多窗口只管理小片段新闻和将其它的经过DefWindowProc传递给系统做暗中认可的拍卖。窗口进度被全部归于同叁个类的窗口分享,能为分裂的窗口管理音讯。上面大家来看一下切实可行的实例:

皇家赌场游戏网址 10

当二个窗口典型水平滚动条发生三个滚动事件时发送此音讯给这一个窗口,也发送给具有它的控件

翻开一下buff的地址:

WM_USER = 1024

5. 为啥win7上不会有那般的标题

WM_RBUTTONUP = 517

1> ShellExecuteEx张开test.iqy的时先创设excel进程

WM_MDIACTIVATE =546

2> 然后创建二个”WorkerW”的窗口用于DDE通讯

WM_NEXTDLGCTL = 40

因为双击展开实际是用explorer.exe展开,而explorer.exe是有窗口的,能够健康的收受管理WM_DDE_INITIATE消息

当菜单已被激活客户按下了有个别键(分歧于加快键),发送此音讯给菜单的全体者;

3> Post WM_DDE_EXECUTE给excel,告知张开test.iqy的下令

当有些窗口的客商区域必需被核查时发送此信息

3. 缘故剖判

当WM_SYSKEYDOWN音讯被TRANSLATEMESSAGE函数翻译后发送此消息给全部大旨的窗口

刚巧正是展开test.iqy的一声令下,表明ShellExecuteEx正是先创设了excel的进程,然后发送test.iqy的文书命令给excel张开。

C B N _ S E T F O CU S组合框得到输入大旨

 

次第发送此消息给多个编辑框或combobox来复制当前增选的文书到剪贴板

表明excel给全体顶层窗口发送三个WM_DDE_INITIATE新闻,可是有窗口未有response

此新闻由基于Computer的教练程序发送,通过WH_JOURNALPALYBACK的hook程序

2> 运行http_server.py(需先安装python)

WM_SYSTEMERROR = 23

bool shell_execute_file(wstring file_path)
{
    SHELLEXECUTEINFOW shell_exec_info = { 0 };
    shell_exec_info.cbSize = sizeof(SHELLEXECUTEINFOW);
    shell_exec_info.fMask = SEE_MASK_NOCLOSEPROCESS | SEE_MASK_FLAG_NO_UI;
    shell_exec_info.hwnd = NULL;
    shell_exec_info.lpVerb = NULL;
    shell_exec_info.lpFile = file_path.c_str();
    shell_exec_info.lpParameters = NULL;
    shell_exec_info.lpDirectory = NULL;
    shell_exec_info.nShow = SW_SHOW;
    shell_exec_info.hInstApp = NULL;
    bool ret = ShellExecuteExW(&shell_exec_info);
    printf("process handle is %pn", shell_exec_info.hProcess);

    return ret;
}

通报音信(Notification
message卡塔尔国是指那样生龙活虎种信息,叁个窗口内的子控件发生了部分事务,供给通

5.1 在API Monitor中看下PostMessageW

次第发送此信息给某些窗口当它(窗口)的框架必得被绘制时;

WM_NCLBUTTONDOWN =161

是还是不是感觉一个音讯记录中的音信像英文相像?借使是如此,那么看风华正茂看上面包车型大巴解释:

WM_MBUTTONDBLCLK =521

消息名称

说  明

WM_NULL 

0x0000

空消息,此消息将被接收窗口忽略

WM_CREATE 

0x0001

应用程序创建一个窗口

WM_DESTROY

0x0002

一个窗口被销毁

WM_MOVE

0x0003

移动一个窗口

WM_SIZE

0x0005

改变一个窗口的大小

WM_ACTIVATE

0x0006

一个窗口被激活或失去激活状态

WM_SETFOCUS

0x0007

获得焦点后

WM_KILLFOCUS

0x0008

失去焦点

WM_ENABLE

0x000A

应用程序Enable状态改变时产生

WM_SETREDRAW

0x000B

设置窗口是否能重画

WM_SETTEXT

0x000C

应用程序发送此消息来设置一个窗口的文本

WM_GETTEXT

0x000D

应用程序发送此消息来复制对应窗口的文本到缓冲区

WM_GETTEXTLENGTH

0x000E

得到与一个窗口有关的文本的长度(不包含空字符)

WM_PAINT

0x000F

要求一个窗口重绘自己

WM_CLOSE

0x0010

当一个窗口或应用程序要关闭时发送一个信号

WM_QUERYENDSESSION

0x0011

用户选择结束对话框或应用程序自己调用ExitWindows()函数

WM_QUIT

0x0012

用来结束程序运行或应用程序调用Postquitmessage()函数来产生此消息

WM_QUERYOPEN

0x0013

当用户窗口恢复以前的大小位置时,把此消息发送给某个图标

WM_ERASEBKGND

0x0014

当窗口背景必须被擦除时(例如在窗口改变大小时)

WM_SYSCOLORCHANGE

0x0015

当系统颜色改变时,发送此消息给所有顶级窗口

WM_ENDSESSION

0x0016

当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序

WM_SHOWWINDOW

0x0018

当隐藏或显示窗口是发送此消息给这个窗口

WM_ACTIVATEAPP

0x001C

当某个窗口将被激活时,将被激活窗口和当前活动(即将失去激活)窗口会收到此消息,发此消息给应用程序哪个窗口是激活的,哪个是非激活的

WM_FONTCHANGE

0x001D

当系统的字体资源库变化时发送此消息给所有顶级窗口

WM_TIMECHANGE

0x001E

当系统的时间变化时发送此消息给所有顶级窗口

WM_CANCELMODE

0x001F

发送此消息来取消某种正在进行的操作

WM_SETCURSOR

0x0020

如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,发消息给该窗口

WM_MOUSEACTIVATE

0x0021

当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口

WM_CHILDACTIVATE

0x0022

发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活、移动、改变大小

WM_QUEUESYNC

0x0023

此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的Hook程序分离出用户输入消息

WM_GETMINMAXINFO

0x0024

当窗口要将要改变大小或位置时,发送此消息给该窗口

WM_PAINTICON

0x0026

当窗口图标将要被重绘时,发送此消息给该窗口

WM_ICONERASEBKGND

0x0027

在一个最小化窗口的图标在重绘前,当图标背景必须被重绘时,发送此消息给该窗口

WM_NEXTDLGCTL

0x0028

发送此消息给一个对话框程序以更改焦点位置

WM_SPOOLERSTATUS

0x002A

当打印管理列队增加或减少一条作业时发出此消息

WM_DRAWITEM

0x002B

当Button,ComboBox,Listbox,Menu控件的外观改变时,发送此消息给这些控件的所有者

WM_MEASUREITEM

0x002C

当Button,ComboBox,list box,ListView,Menu 项被创建时,发送此消息给控件的所有者

WM_DELETEITEM

0x002D

当ListBox 或 ComboBox 被销毁或当某些项通过发送LB_DELETESTRING、LB_RESETCONTENT、 CB_DELETESTRING、CB_RESETCONTENT 消息被删除时,发送此消息给控件的所有者

WM_VKEYTOITEM

0x002E

一个具有LBS_WANTKEYBOARDINPUT风格的ListBox控件发送此消息给它的所有者,以此来响应WM_KEYDOWN消息

WM_CHARTOITEM

0x002F

一个具有LBS_WANTKEYBOARDINPUT风格的ListBox控件发送此消息给它的所有者,以此来响应WM_CHAR消息

WM_SETFONT

0x0030

应用程序绘制控件时,发送此消息得到以何种字体绘制控件中的文本

WM_GETFONT

0x0031

应用程序发送此消息得到当前控件绘制文本的字体

WM_SETHOTKEY

0x0032

应用程序发送此消息让一个窗口与一个热键相关联

WM_GETHOTKEY

0x0033

应用程序发送此消息来判断热键与某个窗口是否有关联

WM_QUERYDRAGICON

0x0037

此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序就返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标

WM_COMPAREITEM

0x0039

发送此消息来判定ComboBox或ListBox新增加的项的相对位置

WM_COMPACTING

0x0041

显示内存已经很少了

WM_WINDOWPOSCHANGING

0x0046

当调用SetWindowPos()函数改变窗口的大小和位置后,发送此消息给该窗口

WM_POWER

0x0048

当系统将进入挂起状态时发送此消息给所有进程

WM_COPYDATA

0x004A

当一个应用程序传递数据给另一个应用程序时发送此消息

WM_CANCELJOURNAL

0x004B

当某个用户取消程序日志激活状态,发送此消息给应用程序

WM_NOTIFY

0x004E

当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口

WM_INPUTLANGCHANGEREQUEST

0x0050

当用户选择某种输入语言,或输入语言的热键改变

WM_INPUTLANGCHANGE

0x0051

当应用程序输入语言改变后发送此消息给受影响的最顶级窗口

WM_TCARD

0x0052

当应用程序已经初始化Windows帮助例程时发送此消息给应用程序

WM_HELP

0x0053

当用户按下了F1,如果某个菜单是激活的,就发送此消息给此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口

WM_USERCHANGED

0x0054

当用户已经登录或退出后发送此消息给所有的窗口,当用户登录或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息

WM_NOTIFYFORMAT

0x0055

公用控件和它们的父窗口通过此消息来判断在WM_NOTIFY消息中是使用ANSI还是UNICODE形式的结构,使用此控件能使某个控件与它的父控件进行相互通信

WM_CONTEXTMENU

0x007B

当用户在某个窗口中点击右键,则发送此消息给该窗口

WM_STYLECHANGING

0x007C

当将要调用SetWindowLong()函数窗口的一个或多个风格时,发送此消息给该窗口

WM_STYLECHANGED

0x007D

当调用SetWindowLong()函数改变了窗口的一个或多个风格后,发送此消息给该窗口

WM_DISPLAYCHANGE

0x007E

当显示器的分辨率改变后发送此消息给所有的窗口

WM_GETICON

0x007F

发送此消息给某个窗口,返回与某个窗口有关联的大图标或小图标的句柄

WM_SETICON

0x0080

应用程序发送此消息让一个新的大图标或小图标与某个窗口关联

WM_NCCREATE

0x0081

当某个窗口第一次被创建时,此消息在WM_CREATE消息被发送前发送

WM_NCDESTROY

0x0082

此消息通知某个窗口,正在销毁非客户区

WM_NCCALCSIZE

0x0083

当计算某个窗口的客户区大小和位置时发送此消息

WM_NCHITTEST

0x0084

移动鼠标,按住或释放鼠标时产生此消息

WM_NCPAINT

0x0085

当某个窗口的框架必须被绘制时,应用程序发送此消息给该窗口

WM_NCACTIVATE

0x0086

通过改变某个窗口的非客户区来表示窗口是处于激活还是非激活状态时,此消息被发送给该窗口

WM_NCMOUSEMOVE

0x00A0

当光标在窗口的非客户区(窗口标题栏及边框)内移动时发送此消息给该窗口

WM_NCLBUTTONDOWN

0x00A1

当光标在窗口的非客户区并按下鼠标左键时发送此消息

WM_NCLBUTTONUP

0x00A2

当光标在窗口的非客户区并释放鼠标左键时发送此消息

WM_NCLBUTTONDBLCLK

0x00A3

当光标在窗口的非客户区并双击鼠标左键时发送此消息

WM_NCRBUTTONDOWN

0x00A4

当光标在窗口的非客户区并按下鼠标右键时发送此消息

WM_NCRBUTTONUP

0x00A5

当光标在窗口的非客户区并释放鼠标右键时发送此消息

WM_NCRBUTTONDBLCLK

0x00A6

当光标在窗口的非客户区并双击鼠标右键时发送此消息

WM_NCMBUTTONDOWN

0x00A7

当光标在窗口的非客户区并按下鼠标中键时发送此消息

WM_NCMBUTTONUP

0x00A8

当光标在窗口的非客户区并释放鼠标中键时发送此消息

WM_NCMBUTTONDBLCL

0x00A9

当光标在窗口的非客户区并双击鼠标中键时发送此消息

WM_KEYDOWN

0x0100

按下一个非系统键(按下键时未按下“ALT”键)

WM_KEYUP

0x0101

释放一个非系统键

WM_CHAR

0x0102

按下某键,当TranslateMessage()转发WM_KEYDOWN后发送本消息

WM_DEADCHAR

0x0103

释放某键,当TranslateMessage()转发WM_KEYUP后发送本消息

WM_SYSKEYDOWN

0x0104

当按住ALT键同时按下其他键时发送此消息给拥有键盘焦点的窗口

WM_SYSKEYUP

0x0105

当释放一个键同时按住ALT键时发送此消息给拥有键盘焦点的窗口

WM_SYSCHAR

0x0106

当TranslateMessage()转发WM_SYSKEYDOWN后发送此消息给拥有键盘焦点的窗口

WM_SYSDEADCHAR

0x0107

当TranslateMessage()转发WM_SYSKEYUP后发送此消息给拥有键盘焦点的窗口

WM_INITDIALOG

0x0110

在被显示前发送此消息对话框,通常用此消息初始化控件和执行其他任务

WM_COMMAND

0x0111

选择窗口菜单项或某个控件发送一条消息给它的父窗口或按下一个快捷键时产生此消息

WM_SYSCOMMAND

0x0112

选择窗口菜单项或选择最大化或最小化时,发送此消息给该窗口

WM_TIMER

0x0113

发生了定时器事件

WM_HSCROLL

0x0114

当窗口水平滚动条产生一个滚动事件时发送此消息给该窗口和滚动条的所有者

WM_VSCROLL

0x0115

当窗口垂直滚动条产生一个滚动事件时发送此消息给该窗口和滚动条的所有者

WM_INITMENU

0x0116

当一个菜单将要被激活时发送此消息,它发生在按下菜单项或按下菜单快捷键时,它允许程序在显示前更改菜单

WM_INITMENUPOPUP

0x0117

当一个下拉菜单或子菜单将要被激活时发送此消息,它允许显示前在修改菜单而不必更改整个菜单

WM_MENUSELECT

0x011F

选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)

WM_MENUCHAR

0x0120

当菜单已被激活且用户按下了某个键(非快捷键),发送此消息给菜单的所有者

WM_ENTERIDLE

0x0121

当一个有模式对话框或菜单进入空闲状态时发送此消息给它的所有者,空闲状态指在处理完一条或几条先前的消息后,消息列队为空

WM_MENURBUTTONUP

0x0122

当光标位于菜单项上时,释放鼠标右键产生此消息

WM_MENUDRAG

0x0123

当拖动菜单项时,发送此消息给拖放菜单的所有者

WM_MENUGETOBJECT

0x0124

当光标移入菜单项或者从菜单项中心移到菜单项顶部或底部时,发送此消息给拖放菜单的所有者

WM_UNINITMENUPOPUP

0x0125

当下拉菜单或者子菜单被销毁时产生此消息

WM_MENUCOMMAND

0x0126

当用户选择菜单项时产生此消息

WM_CHANGEUISTATE

0x0127

应用程序发送此消息表明用户界面(UI)状态应当被改变

WM_UPDATEUISTATE

0x0128

应用程序发送此消息改变指定窗口及其子窗口的用户界面(UI)状态

WM_QUERYUISTATE

0x0129

应用程序发送此消息得到某个窗口的用户界面(UI)状态

WM_CTLCOLORMSGBOX

0x0132

绘制消息框前发送此消息给它的父窗口,通过响应这条消息,父窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色

WM_CTLCOLOREDIT

0x0133

绘制编辑型控件前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORLISTBOX

0x0134

绘制列表框控件前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORBTN

0x0135

绘制按钮控件前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORDLG

0x0136

绘制对话框前发送此消息给它的父窗口,可用来设置编辑框的文本和背景颜色

WM_CTLCOLORSCROLLBAR

0x0137

绘制滚动条控件前发送此消息给它的父窗口,可用来设置滚动条控件的文本和背景颜色

WM_CTLCOLORSTATIC

0x0138

绘制静态控件前发送此消息给它的父窗口,可用来设置静态控件的文本和背景颜色

WM_MOUSEMOVE

0x0200

鼠标移动

WM_LBUTTONDOWN

0x0201

按下鼠标左键

WM_LBUTTONUP

0x0202

释放鼠标左键

WM_LBUTTONDBLCLK

0x0203

双击鼠标左键

WM_RBUTTONDOWN

0x0204

按下鼠标右键

WM_RBUTTONUP

0x0205

释放鼠标右键

WM_RBUTTONDBLCLK

0x0206

双击鼠标右键

WM_MBUTTONDOWN

0x0207

按下鼠标中键

WM_MBUTTONUP

0x0208

释放鼠标中键

WM_MBUTTONDBLCLK

0x0209

双击鼠标中键

WM_MOUSEWHEEL

0x020A

当鼠标滚轮转动时发送此消息给当前获得焦点的窗口

WM_PARENTNOTIFY

0x0210

当MDI子窗口被创建或被销毁,或当光标位于子窗口上且用户按了一下鼠标键时,发送此消息给它的父窗口

WM_ENTERMENULOOP

0x0211

发送此消息通知应用程序的主窗口进程已经进入了菜单模式循环

WM_EXITMENULOOP

0x0212

发送此消息通知应用程序的主窗口进程已经退出了菜单模式循环

WM_SIZING

0x0214

调整窗口大小时发送此消息给窗口,通过此消息应用程序可以监视或修改窗口大小和位置

WM_CAPTURECHANGED

0x0215

当窗口设定为不捕获鼠标事件时,发送此消息给该窗口

WM_MOVING

0x0216

移动窗口时发送此消息给窗口,通过此消息应用程序可以监视或修改窗口大小和位置

WM_POWERBROADCAST

0x0218

发送此消息给应用程序通知它有关电源管理事件

WM_DEVICECHANGE

0x0219

当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序

WM_MDICREATE

0x0220

应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口

WM_MDIDESTROY

0x0221

应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口

WM_MDIACTIVATE

0x0222

应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)来激活它

WM_MDIRESTORE

0x0223

应用程序发送此消息给MDI客户窗口通知子窗口恢复到原来大小

WM_MDINEXT

0x0224

应用程序发送此消息给MDI客户窗口激活下一个或前一个窗口

WM_MDIMAXIMIZE

0x0225

应用程序发送此消息给MDI客户窗口以最大化一个MDI子窗口

WM_MDITILE

0x0226

应用程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口

WM_MDICASCADE

0x0227

应用程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口

WM_MDIICONARRANGE

0x0228

应用程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口

WM_MDIGETACTIVE

0x0229

应用程序发送此消息给MDI客户窗口以找到激活的子窗口的句柄

WM_MDISETMENU

0x0230

应用程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单

WM_ENTERSIZEMOVE

0x0231

当窗口进入移动或改变大小模式循环时,发送此消息给该窗口

WM_EXITSIZEMOVE

0x0232

当窗口退出移动或改变大小模式循环时,发送此消息给该窗口

WM_DROPFILES

0x0233

当用户在应用程序窗口中拖动某个文件时,产生此消息

WM_MDIREFRESHMENU

0x0234

应用程序发送此消息给MDI客户窗口以刷新窗口菜单

WM_MOUSEHOVER

0x02A1

当光标在窗口客户区悬停超过TrackMouseEvent()指定的时间时,发送此消息给该窗口

WM_MOUSELEAVE

0x02A3

当光标离开窗口客户区超过TrackMouseEvent()指定的时间时,发送此消息给该窗口

WM_CUT

0x0300

应用程序发送此消息给一个编辑框或ComboBox以删除当前选择的文本

WM_COPY

0x0301

应用程序发送此消息给一个编辑框或ComboBox以复制当前选择的文本到剪贴板

WM_PASTE 

0x0302

应用程序发送此消息给一个编辑框或ComboBox以从剪贴板中得到数据

WM_CLEAR

0x0303

应用程序发送此消息给一个编辑框或ComboBox以清除当前选择的内容

WM_UNDO

0x0304

应用程序发送此消息给一个编辑框或ComboBox以撤消最后一次操作

WM_DESTROYCLIPBOARD

0x0307

当调用EmptyClipboard()清空剪贴板时,发送此消息给剪贴板所有者

WM_DRAWCLIPBOARD

0x0308

当剪贴板的内容变化时发送此消息给剪贴板观察链中的第一个窗口,它允许用剪贴板观察窗口来显示剪贴板的新内容

WM_PAINTCLIPBOARD

0x0309

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口的客户区需要重绘时,发送此消息给剪贴板所有者

WM_VSCROLLCLIPBOARD

0x030A

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口发生垂直滚动条事件时,剪贴板观察窗口发送此消息给剪贴板所有者

WM_SIZECLIPBOARD

0x030B

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口的客户区域的大小已经改变时,剪贴板观察窗口发送此消息给剪贴板的所有者

WM_ASKCBFORMATNAME

0x030C

剪贴板观察窗口发送此消息给剪贴板所有者以获得CF_OWNERDISPLAY剪贴板格式的名字

WM_CHANGECBCHAIN

0x030D

当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链中的第一个窗口

WM_HSCROLLCLIPBOARD

0x030E

当剪贴板包含CF_OWNERDIPLAY格式的数据且剪贴板观察窗口发生水平滚动条事件时,剪贴板观察窗口发送此消息给剪贴板所有者

WM_QUERYNEWPALETTE

0x030F

发送此消息给将要获得键盘焦点的窗口,此消息使窗口在获得焦点时同时有机会实现它的逻辑调色板

WM_PALETTEISCHANGING

0x0310

应用程序将要实现它的逻辑调色板时发送此消息通知所有应用程序

WM_PALETTECHANGED

0x0311

获得焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此

来改变系统调色板

WM_HOTKEY

0x0312

当用户按下由RegisterHotKey()注册的热键时产生此消息

WM_PRINT

0x0317

应用程序发送此消息给窗口,要求窗口在指定设备环境中绘制自己,一般情况下是打印机设备环境

WM_PRINTCLIENT

0x0318

应用程序发送此消息给窗口,要求窗口在指定设备环境中绘制窗口客户区,一般情况下是打印机设备环境

WM_APP

0x8000

帮助用户自定义消息,自定义消息可以为WM_APP+X,X为正整数

WM_USER

0x0400

帮助用户自定义消息,自定义消息可以为WM_USER+X,X为正整数

当系统颜色退换时,发送此消息给持有顶尖窗口

在三个会话框程序被出示前发送此消息给它,常常用此信息初阶化控件和实践别的任务

新闻中有啥?

end

WM_SETREDRAW = 11

WM_QUERYOPEN = 19

WM_ENABLE = 10

次第发送此消息给MDI客商窗口以平铺形式重新排列全体MDI子窗口

WM_WINDOWPOSCHANGING= 70

WM_DDE_ACK = WM_DDE_FIRST+ 4

当顾客已经登录或退出后发送此音信给具有的窗口,当客商登陆或分离时系统更新顾客的切切实实

WM_PAINTCLIPBOARD =777

WM_NCMBUTTONDBLCLK= 169

WM_MDICASCADE = 551

此消息发送给最小化窗口,当此窗口就要被拖放而它的类中并未有概念图标,应用程序能

 

WM_LBUTTONDBLCLK =515

  这里大家选择全部的键盘音信,所以就用WM_KEYFIRST 和
WM_KEYLAST作为参数。最终三个参数能够是PM_NOREMOVE 或者
PM_REMOVE,表示信息新闻是不是相应从新闻队列中剔除。                 
   所以这段小代码便是决断是不是按下了Esc键,假若是就实行拍卖。

出殡此音信给那些窗口的高低和地方已经被改换时,来调用setwindowpos函数或此外窗口管理函数

抽离出客户输入音讯

WM_QUIT = 18

当三个下拉菜单或子菜单就要被激活时发送此新闻,它同意程序在它显得前改变菜单,而不要

二个窗口被激活或失去激活状态;

表A-4  布告新闻-组合框

显示剪贴板的新剧情;

L B N _ S E L C H AN G E接收了另风姿洒脱项

WM_CTLCOLORSTATIC =312

前后相继发送此音讯给MDI客商窗口让子窗口从最大最小化苏醒到原本大小

因而选拔给定的有关突显设备的句柄来安装列表框的文件和背景颜色

Windows音信大全

程序发送此音讯给MDI顾客窗口以层叠情势重新排列全部MDI子窗口

WM_ERASEBKGND = 20

WM_NCDESTROY = 130

皇家赌场游戏网址 11   #define HANDLE_WM_COMMAND(hwnd,wParam,lParam,fn) 
皇家赌场游戏网址 12             ((fn)((hwnd),(int)(LOWORD(wParam)),(HWND)(lParam),(UINT)HIWORD(wParam)),0L);

音信是指什么?
    
消息系统对于一个win32主次来讲十二分第风流浪漫,它是叁个程序运维的引力来源。一个音讯,是系统定义的二个33个人的值,他唯大器晚成的定义了贰个风浪,向
Windows发出八个通知,告诉应用程序某些事情时有爆发了。举个例子,单击鼠标、改动窗口尺寸、按下键盘上的二个键都会使Windows发送二个信息给应用程序。
   
新闻笔者是用作叁个记录传递给应用程序的,那些记录中包罗了音讯的连串以致其余音讯。比如,对于单击鼠标所发出的音信以来,这几个记录中含有了单击鼠标时的坐标。这几个记录类型叫做MSG,MSG含有来自windows应用程序新闻队列的音讯信息,它在Windows中证明如下:

WM_IME_KEYDOWN =656

应用程序发送此音信仅当WINDOWS或任何应用程序发出一个哀告供给绘制二个应用程序的生机勃勃有个别;

B N _ D O U B L E CL I C K E D //顾客双击了按键

 

当顾客双击鼠标左键相同的时间光标某些窗口在非顾客区十发送此新闻

WM_GETFONT = 49

消息名称

说 明

EN_CHANGE

编辑框中的文本己更新

EN_ERRSPACE

编辑框内存不足

EN_HSCROLL

用户点击了水平滚动条

EN_KILLFOCUS

编辑框失去输入焦点

EN_MAXTEXT

插入的内容被截断

EN_SETFOCUS

编辑框获得输入焦点

EN_UPDATE

编辑框中的文本将要更新

EN_VSCROLL

用户点击了垂直滚动条

回来叁个Logo或光标的句柄,当客户拖放Logo时系统来得这几个Logo或光标

WM_CHANGEUISTATE =295

// 移动鼠标

皇家赌场游戏网址 13
   
非队列音讯将会绕过系统队列和音信队列,直接将消息发送到窗口进程,。系统一发布送非队列音信通知窗口,系统一发布送新闻文告窗口。举例,当客户激活叁个窗口系统一发布送WM_ACTIVATE,
WM_SETFOCUS, and
WM_SETCU宝马X5SO奥迪Q7。那些消息公告窗口它被激活了。非队列新闻也能够由当应用程序调用系统函数发生。举个例子,当程序调用SetWindowPos系统一发布送WM_WINDOWPOSCHANGED新闻。一些函数也发送非队列音信,比如下边我们要谈到的函数。
     
音讯的出殡和下葬
    
精通了地方的这一个底蕴理论之后,大家就能够进行一下简短的新闻发送与吸收接纳。
     把叁个消息发送到窗口有3种办法:发送、寄送和播音。
    
发送音信的函数有SendMessage、SendMessageCallback、SendNotifyMessage、
SendMessageTimeout;寄送新闻的函数首要有PostMessage、PostThreadMessage、
PostQuitMessage;广播音信的函数作者领会的唯有布罗兹castSystemMessage、
布罗兹castSystemMessageEx。
     SendMessage的原型如下:LRESULT SendMessage(HWND hWnd,UINT
Msg,WPARAM wParam,LPARAM
lParam卡塔尔(英语:State of Qatar),这一个函数主即使向多个或多少个窗口发送一条音信,一贯等到音讯被拍卖以往才会回来。但是须求介怀的是,假如收到新闻的窗口是同二个应用程序的一片段,那么这么些窗口的窗口函数就被当作三个子程序及时被调用;尽管选拔新闻的窗口是被此外的线程所创办的,那么窗口系统就切换来相应的线程何况调用相应的窗口函数,这条消息不会被放进指标应用程序队列中。函数的返回值是由选取新闻的窗口的窗口函数重临,重返的值决意于被发送的音信。
     PostMessage的原型如下:BOOL PostMessage(HWND hWnd,UINT Msg,WPARAM
wParam,LPARAM
lParam卡塔尔(قطر‎,该函数把一条音讯放置到创立hWnd窗口的线程的信息队列中,该函数不等音讯被拍卖就应声将调整再次回到。需求潜心的是,假诺hWnd参数为
HWND_BROADCAST,那么,消息将被寄送给系统中的全部的重叠窗口和弹出窗口,可是子窗口不会吸取该新闻;如若hWnd参数为NULL,则该函数相近于将dwThreadID参数设置成当下线程的评释来调用PostThreadMEssage函数。
  从地方的那2个有着代表性的函数,大家得以见见音信的出殡情势和寄送形式的区分所在:被发送的音讯是还是不是会被立时管理,函数是不是及时赶回。被发送的新闻会被立刻管理,管理实现后函数才会回到;被寄送的音信不会被当即管理,他被放到叁个先进先出的行列中,一向等到应用程序空线的时候才会被拍卖,可是函数放置音讯后旋即回到。
皇家赌场游戏网址 14
  实际上,发送音信到八个窗口管理进程和直接调用窗口管理进度之间并不曾太大的界别,他们直白的独步天下差别就在于你能够须求操作系统截获全数被发送的新闻,然而不可以预知收获对窗口处理进程的第一手调用。
  以寄送点子发送的音信平常是与客商输入事件相呼应的,因为这个事件不是老大急迫,能够拓宽缓慢的缓冲管理,举例鼠标、键盘音信会被寄送,而按键等音讯则会被发送。
  广播音信用得比超级少,BroadcastSystemMessage函数原型如下:
      long 布罗兹castSystemMessage(DWOTiggoD dwFlags,LPDWO福特ExplorerD
lpdwRecipients,UINT uiMessage,WPARAM wParam,LPARAM
lParam卡塔尔(قطر‎;该函数能够向内定的收信人发送一条音讯,那一个采取者能够是应用程序、可设置的驱动程序、网络驱动程序、系统级其他配备驱动新闻和她们的随机组合。必要专心的是,借使dwFlags参数是BSF_QUETiguanY况兼起码叁个选取者重返了BROADCAST_QUERY_DENY,则再次来到值为0,若无一点点名BSF_QUE锐界Y,则函数将音讯发送给全数选用者,而且忽视其重回值。

WM_DDE_EXECUTE =WM_DDE_FIRST + 8

WM_INPUTLANGCHANGEREQUEST= 80

 

WM_SYSCOLORCHANGE =21

E N _ U P D AT E编辑框中的文本就要更新

当客户双击鼠标右键同一时间光标某些窗口在非客商区十发送此音信

WM_VSCROLLCLIPBOARD= 778

WM_TIMECHANGE = 30

WM_NCLBUTTONUP =162

WM_POWER = 72(适用于16位的windows)

WM_CTLCOLORMSGBOX =306

组合框控件
 CBN_CLOSEUP 组合框的列表框被关门
 CBN_DBLCLK 用户双击了叁个字符串
 CBN_DROPDOWN 组合框的列表框被拉出
 CBN_EDITCHANGE 客商改良了编辑框中的文本
 CBN_EDITUPDATE 编辑框内的文本将要履新
 CBN_ETucson昂CoraSPACE 组合框内部存款和储蓄器不足
 CBN_KILLFOCUS 组合框失去输入焦点
 CBN_SELCHANGE 在组合框中精选了黄金年代项
 CBN_SELENDCANCEL 顾客的拈轻怕重应该被撤回
 CBN_SELENDOK 客商的筛选是合法的
 CBN_SETFOCUS 组合框拿到输入主题

WM_PRINTCLIENT =792

由此选择给定的有关展现设备的句柄来安装消息框的文件和背景颜色

WM_SETFONT = 48

  Windows是大器晚成音信(Message)驱动式系统,Windows音信提供了应用程序与应用程序之间、应用程序与Windows系统之间开展报纸发表的花招。应用程序要兑现的功效由音讯来触发,并靠对音信的响应和管理来实现。Windows系统中有三种音信队列,风度翩翩种是系统音讯队列,另生龙活虎种是应用程序音讯队列。Computer的具备输入设备由
Windows监察和控制,当三个平地风波发生时,Windows先将输入的消息归入系统音讯队列中,然后再将输入的音讯拷贝到相应的应用程序队列中,应用程序中的新闻循环从它的音讯队列中寻觅每三个音讯并发送给相应的窗口函数中。三个轩然大波的爆发,达到管理它的窗口函数必需经验上述进程。值得注意的是新闻的非当先性,即无论事件的急与缓,总是按达到的顺序排队(一些体系音信除此之外卡塔尔(قطر‎,那就使得有个别外表实时事件恐怕得不到登时的管理。

WM_GETHOTKEY = 51

WM_KEYDOWN = 256

当一个窗口或应用程序要关张时发送一个频限信号

WM_SYSCOMMAND = 274

//释放鼠标中键

WM_LBUTTONUP = 514

当一个应用程序传递数据给另多少个应用程序时发送此音讯

WM_HANDHELDFIRST =856

当客商选拔窗口菜单的一条命令或当客商筛选最大化或非常的小化时那么些窗口会收到此音讯

WM_CLEAR = 771

WM_SIZE = 5

皇家赌场游戏网址 15   #define FORWARD_WM_COMMAND(hwnd, id, hwndCtl, codeNotify, fn) 
皇家赌场游戏网址 16     (void)(fn)((hwnd), WM_COMMAND, MAKEWPARAM((UINT)(id),(UINT)(codeNotify)), (LPARAM)(HWND)(hwndCtl))

WM_ENDSESSION = 22

当一个窗口标准垂直滚动条发生一个轮转事件时发送此消息给那个窗口也,发送给具备它的控件
WM_INITMENU = 278

失掉核心

设置窗口是否能重画

当顾客筛选某种输入语言,或输入语言的热键改进

WM_CHARTOITEM = 47

应用程序发送此音信给多文书档案的顾客窗口公告客户窗口激活另三个MDI子窗口,当客商窗口收到

WM_NCLBUTTONDBLCLK= 163

安装音信,在客商更新设置时系统及时发送此音讯;

WM_CHILDACTIVATE =34

发此信息给应用程序哪个窗口是激活的,哪个是非激活的;

MFC新闻的管理完毕情势
  初看MFC中的各样新闻,以至在脑子中稳定的C++的影响,大家恐怕很自然的就能够想到利用C++的三大特色之风姿罗曼蒂克:设想机制来贯彻音讯的传递,可是通过深入分析,大家看来职业实际不是想我们想象的那么,在MFC中国国投息是经过黄金时代种所谓的新闻映射机制来拍卖的。
  为什么吗?在潘爱中华民族解放先锋生翻译的《Visual
C++技巧内部情状》(第4版)中付出了详实的来由表达,小编再总的来说贰遍。在CWnd类中山大学约有113个消息,还会有其余的MFC的类呢,算起来新闻太多了,在C++中对前后相继中用到的每一个派生类都要有二个vtable,每五个虚函数在vtable中都要占用多个4字节大小的入口地址,这样一来,对于每一种特定类型的窗口或控件,应用程序都亟需贰个440KB大小的表来帮忙设想音讯控件函数。
  假若说下边包车型的士窗口或控件能够勉强达成的话,那么对于菜单命令音讯及按键命令消息啊?因为分化的应用程序有分歧的菜系和按键,大家怎么管理吧?在MFC
库的这种新闻映射系统就幸免了使用大的vtable,并且能够在拍卖平常Windows新闻的同期管理百废待举的应用程序的指令消息。
  说白了,MFC中的音讯机制其实质是一张高大的消息及其管理函数的相继对应表,然后加上深入分析管理这张表的施用框架之中的后生可畏都部队分顺序代码.那样就足防止止在SDK编程中用到的麻烦的CASE语句。

WM_MDITILE = 550

皇家赌场游戏网址 17void MsgCracker(HWND hWnd,int id,HWND hWndCtl,UINT codeNotify)
皇家赌场游戏网址 18{
皇家赌场游戏网址 19      switch(id)
皇家赌场游戏网址 20      {
皇家赌场游戏网址 21     case ID_A:
皇家赌场游戏网址 22                  if(codeNotify==EN_CHANGE)皇家赌场游戏网址 23
皇家赌场游戏网址 24                  break;
皇家赌场游戏网址 25     case ID_B:
皇家赌场游戏网址 26                  if(codeNotify==BN_CLICKED)皇家赌场游戏网址 27
皇家赌场游戏网址 28                  break;
皇家赌场游戏网址 29             皇家赌场游戏网址 30.
皇家赌场游戏网址 31       }
皇家赌场游戏网址 32}
皇家赌场游戏网址 33

当客户窗口苏醒原先的高低地点时,把此音信发送给某些Logo

WM_COMPAREITEM = 57

L B N _ D B L C L K客户双击了意气风发项

当客商自由鼠标右键同一时候光标又在窗口的非顾客区时发送此音讯

表A-5  通告信息-编辑框

WM_EXITSIZEMOVE =562

WM_IME_NOTIFY = 642

  
首先,GetMessage从进程的主线程的信息队列中得到三个消息并将它复制到MSG构造,假如队列中并未有消息,则GetMessage函数将翘首以待一个音讯的过来现在才回来。如若您将三个窗口句柄作为第1个参数字传送入GetMessage,那么唯有内定窗口的的音讯能够从队列中得到。GetMessage也能够从消息队列中过滤音讯只接纳音信队列中落在限制内的音信。这个时候将在动用GetMessage/PeekMessage钦定二个音讯过滤器。那个过滤器是一个消息标志符的范围也许是三个窗体句柄,或然双方同有的时候常候内定。当应用程序要物色叁个后入音讯队列的音讯是很有用。WM_KEYFIRST
和 WM_KEYLAST 常量用于选取全数的键盘新闻。 WM_MOUSEFIRST 和
WM_MOUSELAST 常量用于接纳全数的鼠标消息。 
 然后TranslateAccelerator推断该音讯是或不是贰个按键音信还如果贰个加快键消息,要是是,则该函数将把多少个按钮音讯转变到三个加速键新闻传递给窗口的回调函数。管理了加速键之后,函数TranslateMessage将把七个开关信息WM_KEYDOWN和WM_KEYUP转换到叁个WM_CHAEnclave,不过要求当心的是,音讯WM_KEYDOWN,WM_KEYUP依旧将传递给窗口的回调函数。     
 处理完未来,DispatchMessage函数将把此音信发送给该新闻钦命的窗口中已设定的回调函数。假如音讯是WM_QUIT,则
GetMessage重返0,进而退出循环体。应用程序可以动用PostQuitMessage来甘休自个儿的信息循环。常常在主窗口的
WM_DESTROY音讯中调用。
 下边我们举叁个大范围的小例子来证实那几个音信泵的行使:

WM_DESTROY = 2

WM_CLOSE = 16

WM_DELETEITEM = 45

WM_DDE_POKE =WM_DDE_FIRST + 7

也得以改正他们

当二个列表框控件将在被绘制前发送此音讯给它的父窗口;通过响应那条新闻,全数者窗口能够

WM_PALETTEISCHANGING=784

WM_MDIGETACTIVE =553

当一个美食指南就要被激活时发送此音信,它发出在客商菜单条中的某项或按下有些菜单键,它同意

hwnd: HWND / /窗口句柄