Win32消息大全
Win32程序数据类型

Win32程序数据类型下面这些是和Win32程序共同使用的数据类型BOOL:布尔值,取值为TRUE or FALSEBSTR:32-bit 字符指针BYTE:8-bit整数,未带正负号COLORREF:32-bit数值,代表一个颜色值DWORD:32-bit整数,未带正负号LONG:32-bit整数,带正负号LPARAM:32-bit整数,作为窗口函数或callback函数的一个参数LPCSTR:32-bit指针,指向一个常数字符串LPSTR:32-bit指针,指向一个字符串LPCTSTR:32-bit指针,指向一个常数字符串,此字符串可以移植到Unicode和DBCSLPTSTR:32-bit指针,指向一个字符串,此字符串可以移植到Unicode和DBCSLPVOID:32-bit指针,指向一个未指定类型的数据LPRESULT:32-bit数值,作为窗口函数或callback函数的返回值UINT:在Win16中是一个16-bit 未带正负号整数,在Win32中是一个32-bit 未带正负号整数,WNDPROC:32-bit指针,指向一个窗口函数WORD:16-bit 整数,未带正负号WPARAM:窗口函数或callback函数的一个参数,在Win16中是16-bit,在Win32中是32-bit下面这些是MFC独特的数据类型POSITION:一个数值,代表collection对象(例如数组或链表)中的元素位置,常用于MFC collection classes(即数据处理类,如CArray)LPCRECT:32-bit指针,指向一个不变的RECT结构L表示long指针,这是为了兼容Windows 3.1等16位操作系统遗留下来的,在win32中以及其他的32为操作系统中,long指针和near指针及far修饰符都是为了兼容的作用。
没有实际意义。
P表示这是一个指针C表示是一个常量T在Win32环境中,有一个_T宏,这个宏用来表示你的字符是否使用UNICODE, 如果你的程序定义了UNICODE或者其他相关的宏,那么这个字符或者字符串将被作为UNICODE字符串,否则就是标准的ANSI字符串。
WIN32消息大全

消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。
例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。
消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。
例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。
这个记录类型叫做TMsg,它在Windows单元中是这样声明的:typeTMsg = packed recordhwnd: HWND; / /窗口句柄message: UINT; / /消息常量标识符wParam: WPARAM ; // 32位消息的特定附加信息lParam: LPARAM ; // 32位消息的特定附加信息time: DWORD; / /消息创建时的时间pt: TPoint; / /消息创建时的鼠标位置end;消息中有什么?是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd 32位的窗口句柄。
窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。
message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam 通常是一个指向内存中数据的指针。
由于W P a r a m、l P a r a m和P o i n t e r都是3 2位的,因此,它们之间可以相互转换。
WM_NULL = $0000;WM_CREATE = $0001;应用程序创建一个窗口WM_DESTROY = $0002;一个窗口被销毁WM_MOVE = $0003;移动一个窗口WM_SIZE = $0005;改变一个窗口的大小WM_ACTIVATE = $0006;一个窗口被激活或失去激活状态;WM_SETFOCUS = $0007;获得焦点后WM_KILLFOCUS = $0008;失去焦点WM_ENABLE = $000A;改变enable状态WM_SETREDRAW = $000B;设置窗口是否能重画WM_SETTEXT = $000C;应用程序发送此消息来设置一个窗口的文本WM_GETTEXT = $000D;应用程序发送此消息来复制对应窗口的文本到缓冲区WM_GETTEXTLENGTH = $000E;得到与一个窗口有关的文本的长度(不包含空字符)WM_PAINT = $000F;要求一个窗口重画自己WM_CLOSE = $0010;当一个窗口或应用程序要关闭时发送一个信号WM_QUERYENDSESSION = $0011;当用户选择结束对话框或程序自己调用ExitWindows函数WM_QUIT = $0012;用来结束程序运行或当程序调用postquitmessage函数WM_QUERYOPEN = $0013;当用户窗口恢复以前的大小位置时,把此消息发送给某个图标WM_ERASEBKGND = $0014;当窗口背景必须被擦除时(例在窗口改变大小时)WM_SYSCOLORCHANGE = $0015;当系统颜色改变时,发送此消息给所有顶级窗口WM_ENDSESSION = $0016;当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束WM_SYSTEMERROR = $0017;WM_SHOWWINDOW = $0018;当隐藏或显示窗口是发送此消息给这个窗口WM_ACTIVATEAPP = $001C;发此消息给应用程序哪个窗口是激活的,哪个是非激活的;WM_FONTCHANGE = $001D;当系统的字体资源库变化时发送此消息给所有顶级窗口WM_TIMECHANGE = $001E;当系统的时间变化时发送此消息给所有顶级窗口WM_CANCELMODE = $001F;发送此消息来取消某种正在进行的摸态(操作)WM_SETCURSOR = $0020;如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口WM_MOUSEACTIV A TE = $0021;当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口WM_CHILDACTIV ATE = $0022;发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小WM_QUEUESYNC = $0023;此消息由基于计算机的训练程序发送,通过WH_JOURNALPAL YBACK的hook程序分离出用户输入消息WM_GETMINMAXINFO = $0024;此消息发送给窗口当它将要改变大小或位置;WM_PAINTICON = $0026;发送给最小化窗口当它图标将要被重画WM_ICONERASEBKGND = $0027;此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画WM_NEXTDLGCTL = $0028;发送此消息给一个对话框程序去更改焦点位置WM_SPOOLERSTATUS = $002A;每当打印管理列队增加或减少一条作业时发出此消息WM_DRAWITEM = $002B;当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者WM_MEASUREITEM = $002C;当button, combo box, list box, list view control, or menu item 被创建时发送此消息给控件的所有者WM_DELETEITEM = $002D;当the list box 或 combo box 被销毁或当某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTEN T 消息WM_VKEYTOITEM = $002E;此消息有一个LBS_W ANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息WM_CHARTOITEM = $002F;此消息由一个LBS_W ANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息WM_SETFONT = $0030;当绘制文本时程序发送此消息得到控件要用的颜色WM_GETFONT = $0031;应用程序发送此消息得到当前控件绘制文本的字体WM_SETHOTKEY = $0032;应用程序发送此消息让一个窗口与一个热键相关连WM_GETHOTKEY = $0033;应用程序发送此消息来判断热键与某个窗口是否有关联WM_QUERYDRAGICON = $0037;此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标WM_COMPAREITEM = $0039;发送此消息来判定combobox或listbox新增加的项的相对位置WM_GETOBJECT = $003D;WM_COMPACTING = $0041;显示内存已经很少了WM_WINDOWPOSCHANGING = $0046;发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数WM_WINDOWPOSCHANGED = $0047;发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数WM_POWER = $0048;(适用于16位的windows)当系统将要进入暂停状态时发送此消息WM_COPYDATA = $004A;当一个应用程序传递数据给另一个应用程序时发送此消息WM_CANCELJOURNAL = $004B;当某个用户取消程序日志激活状态,提交此消息给程序WM_NOTIFY = $004E;当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口WM_INPUTLANGCHANGEREQUEST = $0050;当用户选择某种输入语言,或输入语言的热键改变WM_INPUTLANGCHANGE = $0051;当平台现场已经被改变后发送此消息给受影响的最顶级窗口WM_TCARD = $0052;当程序已经初始化windows帮助例程时发送此消息给应用程序WM_HELP = $0053;此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口WM_USERCHANGED = $0054;当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息;WM_NOTIFYFORMA T = $0055;公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE 结构在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信WM_CONTEXTMENU = $007B;当用户某个窗口中点击了一下右键就发送此消息给这个窗口WM_STYLECHANGING = $007C;当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口WM_STYLECHANGED = $007D;当调用SETWINDOWLONG函数一个或多个窗口的风格后发送此消息给那个窗口WM_DISPLAYCHANGE = $007E;当显示器的分辨率改变后发送此消息给所有的窗口WM_GETICON = $007F;此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;WM_SETICON = $0080;程序发送此消息让一个新的大图标或小图标与某个窗口关联;WM_NCCREATE = $0081;当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;WM_NCDESTROY = $0082;此消息通知某个窗口,非客户区正在销毁WM_NCCALCSIZE = $0083;当某个窗口的客户区域必须被核算时发送此消息WM_NCHITTEST = $0084;//移动鼠标,按住或释放鼠标时发生WM_NCPAINT = $0085;程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;WM_NCACTIV ATE = $0086;此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;WM_GETDLGCODE = $0087;发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它WM_NCMOUSEMOVE = $00A0;当光标在一个窗口的非客户区内移动时发送此消息给这个窗口 //非客户区为:窗体的标题栏及窗的边框体WM_NCLBUTTONDOWN = $00A1;当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息WM_NCLBUTTONUP = $00A2;当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;WM_NCLBUTTONDBLCLK = $00A3;当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息WM_NCRBUTTONDOWN = $00A4;当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息WM_NCRBUTTONUP = $00A5;当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息WM_NCRBUTTONDBLCLK = $00A6;当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息WM_NCMBUTTONDOWN = $00A7;当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息WM_NCMBUTTONUP = $00A8;当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息WM_NCMBUTTONDBLCLK = $00A9;当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息WM_KEYFIRST = $0100;WM_KEYDOWN = $0100;//按下一个键WM_KEYUP = $0101;//释放一个键WM_CHAR = $0102;//按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息WM_DEADCHAR = $0103;当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口WM_SYSKEYDOWN = $0104;当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;WM_SYSKEYUP = $0105;当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口WM_SYSCHAR = $0106;当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口WM_SYSDEADCHAR = $0107;当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口WM_KEYLAST = $0108;WM_INITDIALOG = $0110;在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务WM_COMMAND = $0111;当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译WM_SYSCOMMAND = $0112;当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息WM_TIMER = $0113; //发生了定时器事件WM_HSCROLL = $0114;当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件WM_VSCROLL = $0115;当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件 WM_INITMENU = $0116;当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单WM_INITMENUPOPUP = $0117;当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要改变全部WM_MENUSELECT = $011F;当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)WM_MENUCHAR = $0120;当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;WM_ENTERIDLE = $0121;当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待WM_MENURBUTTONUP = $0122;WM_MENUDRAG = $0123;WM_MENUGETOBJECT = $0124;WM_UNINITMENUPOPUP = $0125;WM_MENUCOMMAND = $0126;WM_CHANGEUISTA TE = $0127;WM_UPDATEUISTA TE = $0128;WM_QUERYUISTA TE = $0129;WM_CTLCOLORMSGBOX = $0132;在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色WM_CTLCOLOREDIT = $0133;当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色WM_CTLCOLORLISTBOX = $0134;当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色WM_CTLCOLORBTN = $0135;当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色WM_CTLCOLORDLG = $0136;当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色WM_CTLCOLORSCROLLBAR= $0137;当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色WM_CTLCOLORSTA TIC = $0138;当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色WM_MOUSEFIRST = $0200;WM_MOUSEMOVE = $0200;// 移动鼠标WM_LBUTTONDOWN = $0201;//按下鼠标左键WM_LBUTTONUP = $0202;//释放鼠标左键WM_LBUTTONDBLCLK = $0203;//双击鼠标左键WM_RBUTTONDOWN = $0204;//按下鼠标右键WM_RBUTTONUP = $0205;//释放鼠标右键WM_RBUTTONDBLCLK = $0206;//双击鼠标右键WM_MBUTTONDOWN = $0207;//按下鼠标中键WM_MBUTTONUP = $0208;//释放鼠标中键WM_MBUTTONDBLCLK = $0209;//双击鼠标中键WM_MOUSEWHEEL = $020A;当鼠标轮子转动时发送此消息个当前有焦点的控件WM_MOUSELAST = $020A;WM_PARENTNOTIFY = $0210;当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口WM_ENTERMENULOOP = $0211;发送此消息通知应用程序的主窗口that已经进入了菜单循环模式WM_EXITMENULOOP = $0212;发送此消息通知应用程序的主窗口that已退出了菜单循环模式WM_NEXTMENU = $0213;WM_SIZING = 532;当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们WM_CAPTURECHANGED = 533;发送此消息给窗口当它失去捕获的鼠标时;WM_MOVING = 534;当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置也可以修改他们;WM_POWERBROADCAST = 536;此消息发送给应用程序来通知它有关电源管理事件;WM_DEVICECHANGE = 537;当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序WM_IME_STARTCOMPOSITION = $010D;WM_IME_ENDCOMPOSITION = $010E;WM_IME_COMPOSITION = $010F;WM_IME_KEYLAST = $010F;WM_IME_SETCONTEXT = $0281;WM_IME_NOTIFY = $0282;WM_IME_CONTROL = $0283;WM_IME_COMPOSITIONFULL = $0284;WM_IME_SELECT = $0285;WM_IME_CHAR = $0286;WM_IME_REQUEST = $0288;WM_IME_KEYDOWN = $0290;WM_IME_KEYUP = $0291;WM_MDICREATE = $0220;应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口WM_MDIDESTROY = $0221;应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口WM_MDIACTIVA TE = $0222;应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;WM_MDIRESTORE = $0223;程序发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小WM_MDINEXT = $0224;程序发送此消息给MDI客户窗口激活下一个或前一个窗口WM_MDIMAXIMIZE = $0225;程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;WM_MDITILE = $0226;程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口WM_MDICASCADE = $0227;程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口WM_MDIICONARRANGE = $0228;程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口WM_MDIGETACTIVE = $0229;程序发送此消息给MDI客户窗口来找到激活的子窗口的句柄WM_MDISETMENU = $0230;程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单WM_ENTERSIZEMOVE = $0231;WM_EXITSIZEMOVE = $0232;WM_DROPFILES = $0233;WM_MDIREFRESHMENU = $0234;WM_MOUSEHOVER = $02A1;WM_MOUSELEA VE = $02A3;WM_CUT = $0300;程序发送此消息给一个编辑框或combobox来删除当前选择的文本WM_COPY = $0301;程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板WM_PASTE = $0302;程序发送此消息给editcontrol或combobox从剪贴板中得到数据WM_CLEAR = $0303;程序发送此消息给editcontrol或combobox清除当前选择的内容;WM_UNDO = $0304;程序发送此消息给editcontrol或combobox撤消最后一次操作WM_RENDERFORMAT = $0305;WM_RENDERALLFORMATS = $0306;WM_DESTROYCLIPBOARD = $0307;当调用ENPTYCLIPBOARD函数时发送此消息给剪贴板的所有者WM_DRAWCLIPBOARD = $0308;当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来显示剪贴板的新内容;WM_PAINTCLIPBOARD = $0309;当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;WM_VSCROLLCLIPBOARD = $030A;WM_SIZECLIPBOARD = $030B;当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;WM_ASKCBFORMATNAME = $030C;通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字WM_CHANGECBCHAIN = $030D;当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;WM_HSCROLLCLIPBOARD = $030E;此消息通过一个剪贴板观察窗口发送给剪贴板的所有者;它发生在当剪贴板包含CFOWNERDISPAL Y格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;WM_QUERYNEWPALETTE = $030F;此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板WM_PALETTEISCHANGING= $0310;当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序WM_PALETTECHANGED = $0311;此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板WM_HOTKEY = $0312;当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息WM_PRINT = 791;应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;WM_PRINTCLIENT = 792;WM_HANDHELDFIRST = 856;WM_HANDHELDLAST = 863;WM_PENWINFIRST = $0380;WM_PENWINLAST = $038F;WM_COALESCE_FIRST = $0390;WM_COALESCE_LAST = $039F;WM_DDE_FIRST = $03E0;WM_DDE_INITIATE = WM_DDE_FIRST + 0;一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;WM_DDE_TERMINA TE = WM_DDE_FIRST + 1;一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;WM_DDE_ADVISE = WM_DDE_FIRST + 2;一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它WM_DDE_UNADVISE = WM_DDE_FIRST + 3;一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项WM_DDE_ACK = WM_DDE_FIRST + 4;此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA, WM_DDE_ADVISE, WM_DDE _UNADVISE, or WM_DDE_INITIAT消息WM_DDE_DATA = WM_DDE_FIRST + 5;一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项WM_DDE_REQUEST = WM_DDE_FIRST + 6;一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;WM_DDE_POKE = WM_DDE_FIRST + 7;一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;WM_DDE_EXECUTE = WM_DDE_FIRST + 8;一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;WM_DDE_LAST = WM_DDE_FIRST + 8;WM_APP = $8000;WM_USER = $0400;此消息能帮助应用程序自定义私有消息;/////////////////////////////////////////////////////////////////////通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。
win32错误报告

win32错误报告在使用计算机的日常生活中,我们难免会遇到各种各样的问题和错误。
其中之一就是Win32错误,它常常会弹出一个错误报告窗口,让人困惑和烦恼。
在本文中,我们将深入探讨Win32错误的原因、常见类型和解决方法,帮助读者更好地理解和应对这一问题。
Win32错误是指一种特定的错误类型,通常与Windows操作系统相关。
它可能在程序运行时发生,也可能在安装软件或驱动程序时出现。
Win32错误报告中列出了错误代码和简短的描述,让用户对错误有初步的了解。
然而,对于大多数用户来说,代码和描述只是一堆晦涩的符号和名词,很难理解其含义。
因此,我们有必要深入了解Win32错误并寻找解决办法。
首先,让我们来看看Win32错误的几种常见类型。
最常见的类型是文件相关错误。
当您尝试打开、读取或写入文件时,可能会遇到错误代码2(文件未找到)或错误代码5(拒绝访问)。
这意味着您所指定的文件路径不正确或您没有足够的权限来访问该文件。
另一个常见类型是内存错误,其中错误代码常见为异常代码0xc0000005。
这可能是由于程序访问了未分配的内存,或者试图读取或写入受保护的内存区域。
此外,网络相关错误也是常见的Win32错误类型。
当您的计算机无法连接到互联网或无法访问特定的网络资源时,错误代码常见为12002或12007。
这通常由于网络设置错误、防火墙设置等引起。
这只是Win32错误的一小部分,每种类型都有特定的错误代码和描述。
那么,当我们遇到Win32错误时该怎么办呢?首先,我们应该尝试理解错误报告中的代码和描述。
虽然有时它们可能会使人感到困惑,但它们提供了一些有关错误的线索。
比如,错误代码2(文件未找到)意味着您需要检查文件路径是否正确,或者确保文件是否被删除或移动。
错误码5(拒绝访问)则提示您缺乏足够的权限来访问文件。
其次,我们可以尝试重启计算机。
有时,Win32错误可能只是一次临时问题,通过重新启动计算机,许多错误可能就会自行解决。
Windows 所有消息 的列表

hwnd 32位的窗口句柄。
窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。
message 用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。
wParam 通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam 通常是一个指向内存中数据的指针。
由于W P a r a m、l P a r a m 和P o i n t e r都是3 2位的,因此,它们之间可以相互转换。
WM_NULL = $0000;WM_CREATE = $0001;应用程序创建一个窗口WM_DESTROY = $0002;一个窗口被销毁WM_MOVE = $0003;移动一个窗口WM_SIZE = $0005;改变一个窗口的大小WM_ACTIVATE = $0006;一个窗口被激活或失去激活状态;WM_SETFOCUS = $0007;获得焦点后WM_KILLFOCUS = $0008;失去焦点WM_ENABLE = $000A;改变enable状态WM_SETREDRAW = $000B;设置窗口是否能重画WM_SETTEXT = $000C;应用程序发送此消息来设置一个窗口的文本WM_GETTEXT = $000D;应用程序发送此消息来复制对应窗口的文本到缓冲区WM_GETTEXTLENGTH = $000E;得到与一个窗口有关的文本的长度(不包含空字符)WM_PAINT = $000F;要求一个窗口重画自己WM_CLOSE = $0010;当一个窗口或应用程序要关闭时发送一个信号WM_QUERYENDSESSION = $0011;当用户选择结束对话框或程序自己调用ExitWindows函数WM_QUIT = $0012;用来结束程序运行或当程序调用postquitmessage函数WM_QUERYOPEN = $0013;当用户窗口恢复以前的大小位置时,把此消息发送给某个图标WM_ERASEBKGND = $0014;当窗口背景必须被擦除时(例在窗口改变大小时)WM_SYSCOLORCHANGE = $0015;当系统颜色改变时,发送此消息给所有顶级窗口WM_ENDSESSION = $0016;当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束WM_SYSTEMERROR = $0017;WM_SHOWWINDOW = $0018;当隐藏或显示窗口是发送此消息给这个窗口WM_ACTIVATEAPP = $001C;发此消息给应用程序哪个窗口是激活的,哪个是非激活的;WM_FONTCHANGE = $001D;当系统的字体资源库变化时发送此消息给所有顶级窗口WM_TIMECHANGE = $001E;当系统的时间变化时发送此消息给所有顶级窗口WM_CANCELMODE = $001F;发送此消息来取消某种正在进行的摸态(操作)WM_SETCURSOR = $0020;如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口WM_MOUSEACTIVATE = $0021;当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口WM_CHILDACTIVATE = $0022;发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小WM_QUEUESYNC = $0023;此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息WM_GETMINMAXINFO = $0024;此消息发送给窗口当它将要改变大小或位置;WM_PAINTICON = $0026;发送给最小化窗口当它图标将要被重画WM_ICONERASEBKGND = $0027;此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画WM_NEXTDLGCTL = $0028;发送此消息给一个对话框程序去更改焦点位置WM_SPOOLERSTATUS = $002A;每当打印管理列队增加或减少一条作业时发出此消息WM_DRAWITEM = $002B;当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者WM_MEASUREITEM = $002C;当button, combo box, list box, list view control, or menu item 被创建时发送此消息给控件的所有者 WM_DELETEITEM = $002D;当the list box 或 combo box 被销毁或当某些项被删除通过LB_DELETESTRING, LB_RESETCONTENT, CB_DELETESTRING, or CB_RESETCONTENT 消息WM_VKEYTOITEM = $002E;此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息WM_CHARTOITEM = $002F;此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息WM_SETFONT = $0030;当绘制文本时程序发送此消息得到控件要用的颜色WM_GETFONT = $0031;应用程序发送此消息得到当前控件绘制文本的字体WM_SETHOTKEY = $0032;应用程序发送此消息让一个窗口与一个热键相关连WM_GETHOTKEY = $0033;应用程序发送此消息来判断热键与某个窗口是否有关联WM_QUERYDRAGICON = $0037; 此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标WM_COMPAREITEM = $0039;发送此消息来判定combobox或listbox新增加的项的相对位置WM_GETOBJECT = $003D;WM_COMPACTING = $0041;显示内存已经很少了WM_WINDOWPOSCHANGING = $0046;发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数WM_WINDOWPOSCHANGED = $0047;发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数 WM_POWER = $0048;(适用于16位的windows)当系统将要进入暂停状态时发送此消息WM_COPYDATA = $004A;当一个应用程序传递数据给另一个应用程序时发送此消息WM_CANCELJOURNAL = $004B;当某个用户取消程序日志激活状态,提交此消息给程序WM_NOTIFY = $004E;当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口WM_INPUTLANGCHANGEREQUEST = $0050;当用户选择某种输入语言,或输入语言的热键改变WM_INPUTLANGCHANGE = $0051;当平台现场已经被改变后发送此消息给受影响的最顶级窗口WM_TCARD = $0052;当程序已经初始化windows帮助例程时发送此消息给应用程序WM_HELP = $0053;此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口WM_USERCHANGED = $0054;当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息;WM_NOTIFYFORMAT = $0055;公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信WM_CONTEXTMENU = $007B;当用户某个窗口中点击了一下右键就发送此消息给这个窗口WM_STYLECHANGING = $007C;当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口WM_STYLECHANGED = $007D;当调用SETWINDOWLONG函数一个或多个窗口的风格后发送此消息给那个窗口WM_DISPLAYCHANGE = $007E;当显示器的分辨率改变后发送此消息给所有的窗口WM_GETICON = $007F; 此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;WM_SETICON = $0080;程序发送此消息让一个新的大图标或小图标与某个窗口关联;WM_NCCREATE = $0081;当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;WM_NCDESTROY = $0082;此消息通知某个窗口,非客户区正在销毁WM_NCCALCSIZE = $0083;当某个窗口的客户区域必须被核算时发送此消息WM_NCHITTEST = $0084;//移动鼠标,按住或释放鼠标时发生WM_NCPAINT = $0085;程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;WM_NCACTIVATE = $0086;此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;WM_GETDLGCODE = $0087;发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它WM_NCMOUSEMOVE = $00A0;当光标在一个窗口的非客户区内移动时发送此消息给这个窗口 //非客户区为:窗体的标题栏及窗的边框体WM_NCLBUTTONDOWN = $00A1;当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息WM_NCLBUTTONUP = $00A2;当用户释放鼠标左键同时光标某个窗口在非客户区时发送此消息;WM_NCLBUTTONDBLCLK = $00A3;当用户双击鼠标左键同时光标某个窗口在非客户区时发送此消息WM_NCRBUTTONDOWN = $00A4;当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息WM_NCRBUTTONUP = $00A5;当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息WM_NCRBUTTONDBLCLK = $00A6;当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息WM_NCMBUTTONDOWN = $00A7;当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息WM_NCMBUTTONUP = $00A8;当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息WM_NCMBUTTONDBLCLK = $00A9;当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息WM_KEYFIRST = $0100;WM_KEYDOWN = $0100;//按下一个键WM_KEYUP = $0101;//释放一个键WM_CHAR = $0102;//按下某键,并已发出WM_KEYDOWN, WM_KEYUP消息WM_DEADCHAR = $0103;当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口WM_SYSKEYDOWN = $0104;当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;WM_SYSKEYUP = $0105;当用户释放一个键同时ALT 键还按着时提交此消息给拥有焦点的窗口WM_SYSCHAR = $0106;当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口WM_SYSDEADCHAR = $0107;当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口WM_KEYLAST = $0108;WM_INITDIALOG = $0110;在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务WM_COMMAND = $0111;当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译WM_SYSCOMMAND = $0112;当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息WM_TIMER = $0113; //发生了定时器事件WM_HSCROLL = $0114;当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件WM_VSCROLL = $0115;当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件 WM_INITMENU = $0116;当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单WM_INITMENUPOPUP = $0117;当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要改变全部WM_MENUSELECT = $011F;当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)WM_MENUCHAR = $0120;当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;WM_ENTERIDLE = $0121;当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待WM_MENURBUTTONUP = $0122;WM_MENUDRAG = $0123;WM_MENUGETOBJECT = $0124;WM_UNINITMENUPOPUP = $0125;WM_MENUCOMMAND = $0126;WM_CHANGEUISTATE = $0127;WM_UPDATEUISTATE = $0128;WM_QUERYUISTATE = $0129;WM_CTLCOLORMSGBOX = $0132;在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色WM_CTLCOLOREDIT = $0133;当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色WM_CTLCOLORLISTBOX = $0134;当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色WM_CTLCOLORBTN = $0135;当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色WM_CTLCOLORDLG = $0136;当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色WM_CTLCOLORSCROLLBAR= $0137;当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色WM_CTLCOLORSTATIC = $0138;当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色WM_MOUSEFIRST = $0200;WM_MOUSEMOVE = $0200;// 移动鼠标WM_LBUTTONDOWN = $0201;//按下鼠标左键WM_LBUTTONUP = $0202;//释放鼠标左键WM_LBUTTONDBLCLK = $0203;//双击鼠标左键WM_RBUTTONDOWN = $0204;//按下鼠标右键WM_RBUTTONUP = $0205;//释放鼠标右键WM_RBUTTONDBLCLK = $0206;//双击鼠标右键WM_MBUTTONDOWN = $0207;//按下鼠标中键WM_MBUTTONUP = $0208;//释放鼠标中键WM_MBUTTONDBLCLK = $0209;//双击鼠标中键WM_MOUSEWHEEL = $020A;当鼠标轮子转动时发送此消息个当前有焦点的控件WM_MOUSELAST = $020A;WM_PARENTNOTIFY = $0210;当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口WM_ENTERMENULOOP = $0211;发送此消息通知应用程序的主窗口that已经进入了菜单循环模式WM_EXITMENULOOP = $0212;发送此消息通知应用程序的主窗口that已退出了菜单循环模式WM_NEXTMENU = $0213;WM_SIZING = 532;当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们WM_CAPTURECHANGED = 533;发送此消息给窗口当它失去捕获的鼠标时;WM_MOVING = 534;当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置也可以修改他们;WM_POWERBROADCAST = 536;此消息发送给应用程序来通知它有关电源管理事件;WM_DEVICECHANGE = 537;当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序WM_IME_STARTCOMPOSITION = $010D;WM_IME_ENDCOMPOSITION = $010E;WM_IME_COMPOSITION = $010F;WM_IME_KEYLAST = $010F;WM_IME_SETCONTEXT = $0281;WM_IME_NOTIFY = $0282;WM_IME_CONTROL = $0283;WM_IME_COMPOSITIONFULL = $0284;WM_IME_SELECT = $0285;WM_IME_CHAR = $0286;WM_IME_REQUEST = $0288;WM_IME_KEYDOWN = $0290;WM_IME_KEYUP = $0291;WM_MDICREATE = $0220;应用程序发送此消息给多文档的客户窗口来创建一个MDI 子窗口WM_MDIDESTROY = $0221;应用程序发送此消息给多文档的客户窗口来关闭一个MDI 子窗口WM_MDIACTIVATE = $0222;应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;WM_MDIRESTORE = $0223;程序发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小WM_MDINEXT = $0224;程序发送此消息给MDI客户窗口激活下一个或前一个窗口 WM_MDIMAXIMIZE = $0225;程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;WM_MDITILE = $0226;程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口WM_MDICASCADE = $0227;程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口WM_MDIICONARRANGE = $0228;程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口WM_MDIGETACTIVE = $0229;程序发送此消息给MDI客户窗口来找到激活的子窗口的句柄WM_MDISETMENU = $0230;程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单WM_ENTERSIZEMOVE = $0231;WM_EXITSIZEMOVE = $0232;WM_DROPFILES = $0233;WM_MDIREFRESHMENU = $0234;WM_MOUSEHOVER = $02A1;WM_MOUSELEAVE = $02A3;WM_CUT = $0300;程序发送此消息给一个编辑框或combobox来删除当前选择的文本WM_COPY = $0301;程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板WM_PASTE = $0302;程序发送此消息给editcontrol或combobox从剪贴板中得到数据WM_CLEAR = $0303;程序发送此消息给editcontrol或combobox清除当前选择的内容;WM_UNDO = $0304;程序发送此消息给editcontrol或combobox撤消最后一次操作WM_RENDERFORMAT = $0305;WM_RENDERALLFORMATS = $0306;WM_DESTROYCLIPBOARD = $0307;当调用ENPTYCLIPBOARD函数时发送此消息给剪贴板的所有者WM_DRAWCLIPBOARD = $0308;当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来显示剪贴板的新内容;WM_PAINTCLIPBOARD = $0309;当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;WM_VSCROLLCLIPBOARD = $030A;WM_SIZECLIPBOARD = $030B;当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;WM_ASKCBFORMATNAME = $030C;通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字WM_CHANGECBCHAIN = $030D;当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;WM_HSCROLLCLIPBOARD = $030E;此消息通过一个剪贴板观察窗口发送给剪贴板的所有者;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;WM_QUERYNEWPALETTE = $030F;此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板WM_PALETTEISCHANGING= $0310;当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序WM_PALETTECHANGED = $0311;此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板WM_HOTKEY = $0312;当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息WM_PRINT = 791;应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;WM_PRINTCLIENT = 792;WM_HANDHELDFIRST = 856;WM_HANDHELDLAST = 863;WM_PENWINFIRST = $0380;WM_PENWINLAST = $038F;WM_COALESCE_FIRST = $0390;WM_COALESCE_LAST = $039F;WM_DDE_FIRST = $03E0;WM_DDE_INITIATE = WM_DDE_FIRST + 0;一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;WM_DDE_TERMINATE = WM_DDE_FIRST + 1;一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;WM_DDE_ADVISE = WM_DDE_FIRST + 2;一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它WM_DDE_UNADVISE = WM_DDE_FIRST + 3;一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项WM_DDE_ACK = WM_DDE_FIRST + 4;此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE, WM_DDE_DATA,WM_DDE_ADVISE, WM_DDE_UNADVISE, or WM_DDE_INITIAT消息WM_DDE_DATA = WM_DDE_FIRST + 5;一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项WM_DDE_REQUEST = WM_DDE_FIRST + 6;一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;WM_DDE_POKE = WM_DDE_FIRST + 7;一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;WM_DDE_EXECUTE = WM_DDE_FIRST + 8;一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;WM_DDE_LAST = WM_DDE_FIRST + 8;WM_APP = $8000;WM_USER = $0400;此消息能帮助应用程序自定义私有消息;/////////////////////////////////////////////////////////////////////通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。
win32汇编MessageBox

win32汇编MessageBox32位处理器环境的段寄存器:内存描述符表的段选择⼦简单的代码:.386 ;使⽤的指令集.model flat, stdcall ;内存模型和默认的函数调⽤约定,后续proc和proto如果没写约定,就⽤此处默认的option casemap:none ;⼤⼩写敏感MessageBox equ MessageBoxAMessageBoxA proto : DWORD, : DWORD, : DWORD, : DWORD ;声明要调⽤的函数,链接时要加user32.lib选项.data ;数据段,可读可写.const ;只读数据段,只读g_szHello db 'Hello World', 0g_szTitle db 'The Title', 0.data? ;未初始化数据段,可读可写.code ;代码段,可读可执⾏start:push 0push offset g_szTitlepush offset g_szHellopush 0call MessageBoxretend start编译:ml /c /coff main.asm链接:link32 /subsystem:windows main.obj user32.lib简化版:.386 ;使⽤的指令集.model flat, stdcall ;内存模型和默认的函数调⽤约定,后续proc和proto如果没写约定,就⽤此处默认的option casemap:none ;⼤⼩写敏感include windows.incinclude user32.incincludelib user32.lib.data ;数据段,可读可写.const ;只读数据段,只读g_szHello db 'Hello World', 0g_szTitle db 'The Title', 0.data? ;未初始化数据段,可读可写.code ;代码段,可读可执⾏start:invoke MessageBox, NULL, offset g_szHello, addr g_szTitle, MB_OK retend startOD:查看-记录可以看记录。
win32 winmain 例子

win32 winmain 例子Win32 WinMain 例子什么是 Win32 WinMain?WinMain是一个用于创建 Windows 桌面应用程序的主函数。
它是一个程序的入口点,并负责初始化应用程序的状态,创建和显示主窗口,以及响应系统的消息。
示例 1:创建一个空白的窗口下面是一个简单的示例,演示了如何使用 Win32 API 创建一个空白的窗口:#include <>LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wPa ram, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevI nstance, LPSTR lpCmdLine, int nCmdShow){const char CLASS_NAME[] = "Sample Window Class";const char WINDOW_TITLE[] = "Win32 Sample";// 注册窗口类WNDCLASS wc = { };= WndProc;= hInstance;= CLASS_NAME;RegisterClass(&wc);// 创建窗口HWND hwnd = CreateWindowEx(0, // 扩展窗口样式CLASS_NAME, // 窗口类名WINDOW_TITLE, // 窗口标题WS_OVERLAPPEDWINDOW, // 窗口样式CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_ USEDEFAULT, // 窗口位置和尺寸NULL, // 父窗口句柄NULL, // 菜单句柄hInstance, // 应用程序实例句柄NULL // 创建窗口时的额外数据);if (hwnd == NULL) {return 0;}// 显示窗口ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return ;}LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wPa ram, LPARAM lParam){switch (msg){case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, msg, wParam, lParam);}示例 2:处理窗口消息以下是一个稍微复杂一些的示例,演示了如何处理窗口消息:#include <>// 窗口过程函数LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wPa ram, LPARAM lParam);int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevI nstance, LPSTR lpCmdLine, int nCmdShow){const char CLASS_NAME[] = "Sample Window Class";const char WINDOW_TITLE[] = "Win32 Sample";// 注册窗口类WNDCLASS wc = { };= WndProc;= hInstance;= CLASS_NAME;RegisterClass(&wc);// 创建窗口HWND hwnd = CreateWindowEx(0, // 扩展窗口样式CLASS_NAME, // 窗口类名WINDOW_TITLE, // 窗口标题WS_OVERLAPPEDWINDOW, // 窗口样式CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_ USEDEFAULT, // 窗口位置和尺寸NULL, // 父窗口句柄NULL, // 菜单句柄hInstance, // 应用程序实例句柄NULL // 创建窗口时的额外数据);if (hwnd == NULL) {return 0;}// 显示窗口ShowWindow(hwnd, nCmdShow);UpdateWindow(hwnd);// 消息循环MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return ;}LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wPa ram, LPARAM lParam){// 自定义窗口消息处理switch (msg){case WM_CREATE:MessageBox(hwnd, "窗口创建", "消息", MB_OK); return 0;case WM_PAINT:{PAINTSTRUCT ps;HDC hdc = BeginPaint(hwnd, &ps);// 绘制文本RECT rect;GetClientRect(hwnd, &rect);DrawText(hdc, "Hello, Win32!", -1, &rect, DT _CENTER | DT_VCENTER | DT_SINGLELINE);EndPaint(hwnd, &ps);return 0;}case WM_DESTROY:PostQuitMessage(0);return 0;}return DefWindowProc(hwnd, msg, wParam, lParam);}这个示例演示了如何在窗口创建时显示一个消息框,并在窗口绘制时绘制一段文本。
VCL 消息大全

VCL 消息包含两个大类:Windows 标准消息和VCL 自定义消息。
Windows 标准消息是Windows 自己定义的,供Windows 标准控件使用(这些控件主要分布在Delphi 组件面板的“ Standard”和“ Win32” 页);VCL 自定义消息供VCL 自定义控件使用。
Windows 标准消息按控件类型主要划分为23 类(在Win32 SDK Reference 的键入索引“ System-Defined Messages” 可以看到)。
Delphi 的Messages 单元声明了它们。
每类消息用不同的头部标示:LVM List view control TListView 使用PBM Progress bar TProgressBar 使用PSM Property sheet 属性页使用SB Status bar window TStatusBar 使用SBM Scroll bar control TScrollBar 使用STM Static control TStaticText、TImage 等静态控件使用TB Toolbar TToolBar 使用TBM Trackbar TTrackBar 使用TCM Tab control TTabControl 使用TTM Tooltip control Hit 窗口使用TVM Tree-view control TTreeView 使用ABM Application desktop toolbar 应用程序窗口(显示在Windows 工具栏)使用BM Button control TButton 使用CB Combo box control TComboBox 使用CDM Common dialog box TOpenDialog、TSaveDialog 等通用对话框使用DBT Device 计算机物理设备使用DL Drag list box TListBox 处理拖动消息DM Default push button control API 函数MessageBox 等生成的对话框使用EM Edit control TEdit 以及TMemo、TRichEdit 等编辑框使用HDM Header control THeaderControl 使用LB List box control TListBox 使用UDM Up-down control TUpDown 使用WM General window 通用窗口消息。
Win32 API 函数大全使用详解

一、窗口函数(Window)= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == =AdjustWindowRect函数功能:该函数依据所需客户矩形的大小,计算需要的窗日矩形的大小。
计算出的窗口矩形随后可以传递给CreateWindow函数,用于创建一个客户区所需大小的窗口。
函数原型:BOOL AdjustWindowRect(LPRECT lpRect ,DWORD dwStyle,BOOL bMENU);参数:lpRect:指向RECT结构的指针,该结构包含所需客户区域的左上角和右下角的坐标。
函数返回时,该结构容纳所需客户区域的窗口的左上角和右下角的坐标。
dwStyle:指定将被计算尺寸的窗口的窗口风格。
bMenu:指示窗口是否有菜单。
返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。
获取错误信息,参看GetLastError。
备注:客户矩形是指完全包含一个客户区域的最小矩形;窗日矩形是指完全包含一个窗口的最小矩形,该窗口包含客户区与非客户区。
当一个菜单条下拉出两行或更多行时,AdjustWindowRect函数不增加额外的空间。
速查:Windows NT:3.1以上版本:Windows:95以上版本:Windows CE:不支持;头文件:winuser.h;库文件:user32.lib。
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = =AdjustWindowRectEX函数功能:该函数依据所需客户矩形大小,计算需要的窗口矩形的大小。
windows系统错误大全

windows系统错误大全代码错误信息解释0 操作成功完成。
1 函数不正确。
2 系统找不到指定的文件。
3 系统找不到指定的路径。
4 系统无法打开文件。
5 拒绝访问。
6 句柄无效。
7 存储控制块被损坏。
8 存储空间不足,无法处理此命令。
9 存储控制块地址无效。
10 环境不正确。
11 试图加载格式不正确的程序。
12 访问码无效。
13 数据无效。
14 存储空间不足,无法完成此操作。
15 系统找不到指定的驱动器。
16 无法删除目录。
17 系统无法将文件移到不同的驱动器。
18 没有更多文件。
19 介质受写入保护。
20 系统找不到指定的设备。
21 设备未就绪。
22 设备不识别此命令。
23 数据错误(循环冗余检查)。
24 程序发出命令,但命令长度不正确。
25 驱动器找不到磁盘上特定区域或磁道。
26 无法访问指定的磁盘或软盘。
27 驱动器找不到请求的扇区。
28 打印机缺纸。
29 系统无法写入指定的设备。
30 系统无法从指定的设备上读取。
31 连到系统上的设备没有发挥作用。
32 另一个程序正在使用此文件,进程无法访问。
33 另一个程序已锁定文件的一部分,进程无法访问。
36 用来共享的打开文件过多。
38 已到文件结尾。
39 磁盘已满。
50 不支持请求。
51 Windows 无法找到网络路径。
请确认网络路径正确并且目标计算机不忙或已关闭。
如果Windows 仍然无法找到网络路径,请与网络管理员联系。
52 由于网络上有重名,没有连接。
请到“控制面板”中的“系统”更改计算机名,然后重试。
53 找不到网络路径。
54 网络很忙。
55 指定的网络资源或设备不再可用。
56 已达到网络 BIOS 命令限制。
57 网络适配器硬件出错。
58 指定的服务器无法运行请求的操作。
59 出现了意外的网络错误。
60 远程适配器不兼容。
61 打印机队列已满。
62 服务器上没有储存等待打印的文件的空间。
63 已删除等候打印的文件。
64 指定的网络名不再可用。
pywin32常用模块函数用法整理

pywin32常⽤模块函数⽤法整理Win32gui: Windows图形界⾯接⼝模块。
主要负责操作窗⼝切换以及窗⼝中元素id标签的获取Win32api: Windows开发接⼝模块。
主要负责模拟键盘和⿏标操作,对win32gui获取的标签进⾏点击/获取值/修改值等操作Win32con:全⾯的库函数,提供Win32gui和Win32api需要的操作参数Win32gui 函数FindWindowhld=win32gui.FindWindow(ClassName,Title)ClassName:窗⼝的类名Title:窗⼝的标题名称,即左上⾓的⽂字描述信息hld:返回结果为当前窗⼝的句柄信息,以下是使⽤AutoItv3抓取的Windows【另存为】窗⼝信息:hld=win32gui.FindWindow("#32770",u"另存为")>>>> Window <<<<Title: 另存为 #这⾥就是上⾯的TitleClass: #32770 #这⾥就是上⾯的ClassNamePosition: 0, 0Size: 680, 480Style: 0x96CC02C4ExStyle: 0x00010101Handle: 0x001E03A0 #这⾥就是上⾯函数返回值SetForegroundWindowwin32gui.SetForegroundWindow(hld)hld:为上⾯获取到的窗⼝句柄信息主要⽤于激活该窗⼝,此时窗⼝会是最前⾯⼀层在找到窗⼝句柄后,需要先将窗⼝设置为最前⾯⼀层才能模拟⿏标键盘操作当前窗⼝上的元素。
FindWindowExwin32gui. FindWindowEx(hld,Child, ClassName, Title)hld:⽬标窗⼝的⽗窗⼝,也是上⾯获取到的窗⼝句柄信息。
通过⽗向下找⼦Child:⽬标窗⼝的⼦窗⼝。
Win32API函数大全

Win32API函数大全目录API函数大全1.API之网络函数2. API之消息函数3. API之文件处理函数4. API之打印函数5. API之文本和字体函数6. API之菜单函数7. API之位图、图标和光栅运算函数8. API之绘图函数9. API之设备场景函数10. API之硬件与系统函数11. API之进程和线程函数API函数大全1.API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称WNetGetUser 获取一个网络资源用以连接的名字WNetOpenEnum 启动对网络资源进行枚举的过程2. API之消息函数BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage 将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口SendMessageTimeout 向窗口发送一条消息SendNotifyMessage 向窗口发送一条消息3. API之文件处理函数CloseHandle 关闭一个内核对象。
罗云彬的Win32汇编教程

罗云彬的Win32汇编教程之一Win32汇编的环境和基础1.32位环境简介在Dos下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述Dos系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在Dos下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没有其他程序可以把它终止掉。
Dos下的编程思路是“单任务”的,你只要认为你的程序会按照你的流程一步步的执行下去,不必考虑先后问题(当然程序可能会被中断打断,但你可以认为它们会把环境恢复,如果中断程序没有把环境恢复,那是他们的错)。
在内存管理方式上,Dos汇编和Win32汇编也有很多的不同:Dos工作在实模式下,我们可以寻址1M 的内存,寻址时通过段寄存器来制定段的初始地址,每个段的大小为64K,超过1M的部分,就只能把他作为XMS使用,也就是说,只能用作数据存放使用而无法在其中执行程序。
而Windows在保护模式下执行,这里所有的资源对应用程序来说都是被“保护”的:程序在执行中有级别之分,只有操作系统工作在最高级--0级中,所有应用程序都工作在3级中(Ring3),在Ring3中,你无法直接访问IO端口,无法访问其他程序运行的内存,连向程序自己的代码段写入数据都是非法的,会在Windows的屏幕上冒出一个熟悉的蓝屏幕来。
只有对Ring0的程序来说,系统才是全开放的。
在内存方面,Windows使用了处理器的分页机制,使得对应用程序来说,所有的内存都是“平坦”的,你不必用一个段寄存器去指定段的地址,因为在保护模式下,段寄存器的含义是不同的(可以参见80386手册方面的书籍),你可以直接指定一个32位的地址来寻址4GB的内存。
C#中win32API大全一览-程序开发-红黑联盟

C#中win32API大全一览-程序开发-红黑联盟C# 中 win32 API大全一览文章录入:王子责任编辑: 23【字体:小大】在C#中做很多应用需要使用win32 API,但发现原型函数的一些数据类型看起来非常费劲,甚至在C#中“没有”这种数据类型,查阅了一下资料,数据类型对应关系整理如下,希望对大家有用:BOOL=System.Int32BOOLEAN=System.Int32BYTE=System.UInt16CHAR=System.Int16COLORREF=System.UInt32DWORD=System.UInt32DWORD32=System.UInt32DWORD64=System.UInt64FLOAT=System.FloatHACCEL=System.IntPtrHANDLE=System.IntPtrHBITMAP=System.IntPtrHBRUSH=System.IntPtrHCONV=System.IntPtrHCONVLIST=System.IntPtrHCURSOR=System.IntPtrHDC=System.IntPtrHDDEDATA=System.IntPtrHDESK=System.IntPtrHDROP=System.IntPtrHDWP=System.IntPtrHENHMETAFILE=System.IntPtrHFILE=System.IntPtrHFONT=System.IntPtrHGDIOBJ=System.IntPtrHGLOBAL=System.IntPtrHHOOK=System.IntPtrHICON=System.IntPtrHIMAGELIST=System.IntPtrHIMC=System.IntPtrHINSTANCE=System.IntPtrHKEY=System.IntPtrHLOCAL=System.IntPtrHMENU=System.IntPtrHMETAFILE=System.IntPtrHMONITOR=System.IntPtr HPALETTE=System.IntPtr HPEN=System.IntPtrHRGN=System.IntPtr HRSRC=System.IntPtrHSZ=System.IntPtr HWINSTA=System.IntPtr HWND=System.IntPtrINT=System.Int32INT32=System.Int32INT64=System.Int64LONG=System.Int32LONG32=System.Int32LONG64=System.Int64 LONGLONG=System.Int64 LPARAM=System.IntPtr LPBOOL=System.Int16[] LPBYTE=System.UInt16[] LPCOLORREF=System.UInt32[] LPCSTR=System.String LPCTSTR=System.String LPCVOID=System.UInt32 LPCWSTR=System.String LPDWORD=System.UInt32[] LPHANDLE=System.UInt32 LPINT=System.Int32[] LPLONG=System.Int32[] LPSTR=System.String LPTSTR=System.String LPVOID=System.UInt32 LPWORD=System.Int32[] LPWSTR=System.String LRESULT=System.IntPtr PBOOL=System.Int16[] PBOOLEAN=System.Int16[] PBYTE=System.UInt16[] PCHAR=System.Char[] PCSTR=System.String PCTSTR=System.String PCWCH=System.UInt32 PCWSTR=System.UInt32 PDWORD=System.Int32[] PFLOAT=System.Float[]PHKEY=System.UInt32 PINT=System.Int32[] PLCID=System.UInt32 PLONG=System.Int32[] PLUID=System.UInt32 PSHORT=System.Int16[] PSTR=System.String PTBYTE=System.Char[] PTCHAR=System.Char[] PTSTR=System.String PUCHAR=System.Char[] PUINT=System.UInt32[] PULONG=System.UInt32[] PUSHORT=System.UInt16[] PVOID=System.UInt32 PWCHAR=System.Char[] PWORD=System.Int16[] PWSTR=System.String REGSAM=System.UInt32 SC_HANDLE=System.IntPtr SC_LOCK=System.IntPtr SHORT=System.Int16 SIZE_T=System.UInt32 SSIZE_=System.UInt32 TBYTE=System.Char TCHAR=System.Char UCHAR=System.ByteUINT=System.UInt32 UINT32=System.UInt32 UINT64=System.UInt64 ULONG=System.UInt32 ULONG32=System.UInt32 ULONG64=System.UInt64 ULONGLONG=System.UInt64 USHORT=System.UInt16 WORD=System.UInt16 WPARAM=System.IntPtr。
史上最强---win32 API函数大全文档

Win32 API函数大全1. API之网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称WNetGetUser 获取一个网络资源用以连接的名字WNetOpenEnum 启动对网络资源进行枚举的过程2. API之消息函数BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage 将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口SendMessageTimeout 向窗口发送一条消息SendNotifyMessage 向窗口发送一条消息3. API之文件处理函数CloseHandle 关闭一个内核对象。
pythonwin32apiwin32guiwin32con窗口句柄发送消息常用方法键盘输入

pythonwin32apiwin32guiwin32con窗⼝句柄发送消息常⽤⽅法键盘输⼊import win32guiimport win32conimport win32api# 从顶层窗⼝向下搜索主窗⼝,⽆法搜索⼦窗⼝# FindWindow(lpClassName=None, lpWindowName=None) 窗⼝类名窗⼝标题名handle = win32gui.FindWindow("Notepad", None)# 获取窗⼝位置left, top, right, bottom = win32gui.GetWindowRect(handle)#获取某个句柄的类名和标题title = win32gui.GetWindowText(handle)clsname = win32gui.GetClassName(handle)# 打印句柄# ⼗进制print(handle)# ⼗六进制print("%x" %(handle) )# 搜索⼦窗⼝# 枚举⼦窗⼝hwndChildList = []win32gui.EnumChildWindows(handle, lambda hwnd, param: param.append(hwnd), hwndChildList)# FindWindowEx(hwndParent=0, hwndChildAfter=0, lpszClass=None, lpszWindow=None) ⽗窗⼝句柄若不为0,则按照z-index的顺序从hwndChildAfter向后开始搜索⼦窗体,否则从第⼀个⼦窗体开始搜索。
⼦窗⼝类名⼦窗⼝标题subHandle = win32gui.FindWindowEx(handle, 0, "EDIT", None)# 获得窗⼝的菜单句柄menuHandle = win32gui.GetMenu(subHandle)# 获得⼦菜单或下拉菜单句柄# 参数:菜单句柄⼦菜单索引号subMenuHandle = win32gui.GetSubMenu(menuHandle, 0)# 获得菜单项中的的标志符,注意,分隔符是被编⼊索引的# 参数:⼦菜单句柄项⽬索引号menuItemHandle = win32gui.GetMenuItemID(subMenuHandle, 0)# 发送消息,加⼊消息队列,⽆返回# 参数:句柄消息类型 WParam IParamwin32gui.postMessage(subHandle, win32con.WM_COMMAND, menuItemHandle, 0)# wParam的定义是32位整型,high word就是他的31⾄16位,low word是它的15⾄0位。
python win32api message用法

`win32api` 模块是Python 中用于调用Windows API 函数的扩展模块,它提供了许多函数,其中包括用于发送消息(message)的功能。
在Windows 操作系统中,消息是窗口之间进行通信的基本方式,通过消息,窗口可以接收和处理用户输入、系统事件等。
以下是关于在Python 中使用`win32api` 模块发送消息的基本用法和一些常见的消息类型:### 安装`pywin32`首先,确保你已经安装了`pywin32` 模块。
如果没有安装,可以通过以下命令安装:```bashpip install pywin32```### 使用`win32api` 发送消息`win32api` 模块中的`SendMessage` 函数用于向窗口发送消息。
以下是基本的用法:```pythonimport win32api# 获取窗口句柄hwnd = win32api.FindWindow(None, "窗口标题")# 定义消息和参数message = 0x100 # WM_KEYDOWN,此处可以根据需要修改为其他消息类型w_param = 0x41 # 与消息类型相关的参数,此处以按下键盘上的'A' 键为例# 发送消息win32api.SendMessage(hwnd, message, w_param, 0)```在上述代码中:- `FindWindow` 用于根据窗口标题查找窗口句柄,如果你知道窗口类名,也可以将第一个参数设为类名。
- `SendMessage` 是发送消息的函数,第一个参数是窗口句柄,第二个参数是消息类型,第三个和第四个参数是消息相关的参数,具体参数含义取决于消息类型。
### 示例:模拟按键操作以下是一个示例,演示如何使用`win32api` 模拟按键操作:```pythonimport win32apiimport timedef send_key_event(hwnd, key_code):# 发送按键按下事件win32api.SendMessage(hwnd, win32api.WM_KEYDOWN, key_code, 0)# 等待一段时间,模拟按键按下的效果time.sleep(0.1)# 发送按键释放事件win32api.SendMessage(hwnd, win32api.WM_KEYUP, key_code, 0)# 获取窗口句柄hwnd = win32api.FindWindow(None, "窗口标题")# 模拟按下和释放'A' 键send_key_event(hwnd, ord('A'))```在这个示例中,我们使用`ord('A')` 获取'A' 键的ASCII 码,然后通过`send_key_event` 函数发送按键按下和释放事件。
Win32 API 函数大全使用速查

AllocateLocallyUniqueId 分配LUID 否 是 是
ActivateKeyboardLayout 激活一个新的键盘设备 否 是 是
AddAccessAllowedAce 将ACCESS_ALLOWED_ACE加入ACL 否 是 是
BeginPath 开始一个路径等级 是 是 是
BeginUpdateResource 在可执行文件中开始资源文件更新 否 是 是
AdvancedDocumentProperties 进行打印机高级设置 否 是 是
AllocConsole 为当前进程建立控制台 否 是 是
AreAllAccessesGranted 检查所有要求的访问 否 是 是
AreAnyAccessesGranted 检查任何要求的访问 否 是 是
BeginDeferWindowPos 创建一个窗口位置结构 否 是 是
BeginPaint 准备一个画图窗 是 是 是
BackupRead 产生磁带备份读 否 是 是
BackupSeek 产生磁带备份查寻 否 是 是
AddJob 启动一个打印作业 否 是 是
AddMonitor 加入一个打印机管理器 否 是 是
AddFontResource 将一种字体加入字体表 是 是 是
AddForm 加入一个打印机窗体 否 是 是
AddAtom 将一个字符串加入本地原子表 是 是 是
AddAuditAccessAce 将SYSTEM_AUDIT_ACE加入ACL 否 是 是
auxGetVolume 获取当前卷设置 否 是 是
WPARAM

WPARAMWPARAM,消息响应机制wParam和lParam 这两个是Win16系统遗留下来的产物,在Win16API 中WndProc有两个参数:一个是WORD类型的16位整型变量;另一个是LONG类型的32位整型变量。
因此根据匈牙利命名法,16位的变量就被命名为wParam, 32位的变量就被命名为lParam。
到了Win32API中,原来的16位变量也被扩展为32位,因此此时wParam 和lParam的大小完全相同。
在Win32API的早期,为了保证和Win16API的代码可移植性MS定义了WPARAM和LPARAM两个宏。
当时保留了w前缀的原因一方面是由于WPARAM宏也以W开头,还有也因为要提醒程序员注意到可移植性,当然到了现在Win16早已退出历史舞台,这个前缀也就约定俗成的沿用下来了。
例如:主程序MyDlg.cpp1.自定义消息:#define WM_TRAY WM_USER+1002.函数原形:afx_msg LRESULT OnTrayNotify(WPARAM wParam,LPARAM lParam);3.消息映射:ON_MESSAGE(WM_TRAY,OnTrayNotify)4.原函数:LRESULT CMyDlg::OnTrayNotify(WPARAM wParam,LPARAM lParam){return m_tray.OnTrayNotify(wParam,lParam);}托盘类的实现程序Tray.cpp成员函数:int OnTrayNotify(WPARAM wID,LPARAM lEvent){if(wID == TRAYNOTIFYDATA.uID)return 0;if(lEvent == WM_LBUTTONDOWN){处理代码}else if(lEvent == WM_RBUTTONDOWN){处理代码}return 0;}WPARAM 和 LPARAM 本质上没有什么区别:都是32位数,但是区别也还是有的:除了关于16位的的历史问题外,MICROSOFT在使用时两种参数分别代表不同的含义和内容,WPARAM常常代表一些控件的ID或者高位底位组合起来分别表示鼠标的位置,如果消息的发送者需要将某种结构的指针或者是某种类型的句柄时,习惯上用LPARAM来传递,可以参考各种控件的通知消息:可以查看:EN_CHANGE (EDIT控件的一个通知消息),CBEM_INSERTITEM(可扩展组合框的可接受消息)等等来加以领会。
win32event 的用法 -回复

win32event 的用法-回复Win32event是一种在Windows操作系统下使用的Python模块,它提供了与事件对象(event objects)相关的功能。
事件对象通常用于多线程编程,用于协调线程之间的操作。
Win32event模块为我们提供了创建、等待、修改和删除事件对象的方法,使得我们能够更好地控制程序的执行流程。
本文将逐步介绍Win32event的用法,帮助读者更好地了解并应用于自己的项目中。
第一步:导入模块在使用Win32event模块之前,需要先导入模块。
可以使用如下代码导入Win32event模块:pythonimport win32event通过导入该模块,我们就可以使用其中提供的各种功能。
第二步:创建事件对象使用Win32event模块,我们可以通过如下代码创建一个事件对象:pythonevent = win32event.CreateEvent(None, False, False, "MyEvent")CreateEvent函数的参数依次为:- lpEventAttributes:一个指向SECURITY_ATTRIBUTES结构的指针,用于指定事件对象的安全性,默认为None表示使用默认安全性。
- bManualReset:一个布尔值,指定事件对象是自动重置还是手动重置。
True表示手动重置,False表示自动重置。
手动重置意味着事件对象在一个线程(或者称为等待者)得到通知后,需手动将事件对象重置为未信号(非终止)状态。
- bInitialState:一个布尔值,指定事件对象的初始状态。
True表示初始状态为有信号(终止状态),False表示初始状态为无信号(非终止状态)。
- lpName:一个字符串,用于指定事件对象的名称。
通过上述代码,我们创建了一个名为“MyEvent”的事件对象,初始状态为无信号(非终止状态)。
第三步:设置事件对象状态事件对象的状态可以通过SetEvent和ResetEvent方法进行修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Win32消息大全阿杰发表于:2007-8-1720:52来源:外挂基地消息,就是指Windows发出的一个通知,告诉应用程序某个事情发生了。
例如,单击鼠标、改变窗口尺寸、按下键盘上的一个键都会使Windows发送一个消息给应用程序。
消息本身是作为一个记录传递给应用程序的,这个记录中包含了消息的类型以及其他信息。
例如,对于单击鼠标所产生的消息来说,这个记录中包含了单击鼠标时的坐标。
这个记录类型叫做TMsg,它在Windows单元中是这样声明的:typeTMsg=packed recordhwnd:HWND;//窗口句柄message:UINT;//消息常量标识符wParam:WPARAM;//32位消息的特定附加信息lParam:LPARAM;//32位消息的特定附加信息time:DWORD;//消息创建时的时间pt:TPoint;//消息创建时的鼠标位置end;消息中有什么?是否觉得一个消息记录中的信息像希腊语一样?如果是这样,那么看一看下面的解释:hwnd32位的窗口句柄。
窗口可以是任何类型的屏幕对象,因为Win32能够维护大多数可视对象的句柄(窗口、对话框、按钮、编辑框等)。
message用于区别其他消息的常量值,这些常量可以是Windows单元中预定义的常量,也可以是自定义的常量。
wParam通常是一个与消息有关的常量值,也可能是窗口或控件的句柄。
lParam通常是一个指向内存中数据的指针。
由于W P a r a m、l P a r a m和P o i n t e r 都是32位的,因此,它们之间可以相互转换。
WM_NULL=$0000;WM_CREATE=$0001;应用程序创建一个窗口WM_DESTROY=$0002;一个窗口被销毁WM_MOVE=$0003;移动一个窗口WM_SIZE=$0005;改变一个窗口的大小WM_ACTIVATE=$0006;一个窗口被激活或失去激活状态;WM_SETFOCUS=$0007;获得焦点后WM_KILLFOCUS=$0008;失去焦点WM_ENABLE=$000A;改变enable状态WM_SETREDRAW=$000B;设置窗口是否能重画WM_SETTEXT=$000C;应用程序发送此消息来设置一个窗口的文本WM_GETTEXT=$000D;应用程序发送此消息来复制对应窗口的文本到缓冲区WM_GETTEXTLENGTH=$000E;得到与一个窗口有关的文本的长度(不包含空字符)WM_PAINT=$000F;要求一个窗口重画自己WM_CLOSE=$0010;当一个窗口或应用程序要关闭时发送一个信号WM_QUERYENDSESSION=$0011;当用户选择结束对话框或程序自己调用ExitWindows函数WM_QUIT=$0012;用来结束程序运行或当程序调用postquitmessage函数WM_QUERYOPEN=$0013;当用户窗口恢复以前的大小位置时,把此消息发送给某个图标WM_ERASEBKGND=$0014;当窗口背景必须被擦除时(例在窗口改变大小时)WM_SYSCOLORCHANGE=$0015;当系统颜色改变时,发送此消息给所有顶级窗口WM_ENDSESSION=$0016;当系统进程发出WM_QUERYENDSESSION消息后,此消息发送给应用程序,通知它对话是否结束WM_SYSTEMERROR=$0017;WM_SHOWWINDOW=$0018;当隐藏或显示窗口是发送此消息给这个窗口WM_ACTIVATEAPP=$001C;发此消息给应用程序哪个窗口是激活的,哪个是非激活的;WM_FONTCHANGE=$001D;当系统的字体资源库变化时发送此消息给所有顶级窗口WM_TIMECHANGE=$001E;当系统的时间变化时发送此消息给所有顶级窗口WM_CANCELMODE=$001F;发送此消息来取消某种正在进行的摸态(操作)WM_SETCURSOR=$0020;如果鼠标引起光标在某个窗口中移动且鼠标输入没有被捕获时,就发消息给某个窗口WM_MOUSEACTIVATE=$0021;当光标在某个非激活的窗口中而用户正按着鼠标的某个键发送此消息给当前窗口WM_CHILDACTIVATE=$0022;发送此消息给MDI子窗口当用户点击此窗口的标题栏,或当窗口被激活,移动,改变大小WM_QUEUESYNC=$0023;此消息由基于计算机的训练程序发送,通过WH_JOURNALPALYBACK的hook程序分离出用户输入消息WM_GETMINMAXINFO=$0024;此消息发送给窗口当它将要改变大小或位置;WM_PAINTICON=$0026;发送给最小化窗口当它图标将要被重画WM_ICONERASEBKGND=$0027;此消息发送给某个最小化窗口,仅当它在画图标前它的背景必须被重画WM_NEXTDLGCTL=$0028;发送此消息给一个对话框程序去更改焦点位置WM_SPOOLERSTATUS=$002A;每当打印管理列队增加或减少一条作业时发出此消息WM_DRAWITEM=$002B;当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者WM_MEASUREITEM=$002C;当button,combo box,list box,list view control,or menu item被创建时发送此消息给控件的所有者WM_DELETEITEM=$002D;当the list box或combo box被销毁或当某些项被删除通过LB_DELETESTRING,LB_RESETCONTENT,CB_DELETESTRING,or CB_RESETCONTENT消息WM_VKEYTOITEM=$002E;此消息有一个LBS_WANTKEYBOARDINPUT风格的发出给它的所有者来响应WM_KEYDOWN消息WM_CHARTOITEM=$002F;此消息由一个LBS_WANTKEYBOARDINPUT风格的列表框发送给他的所有者来响应WM_CHAR消息WM_SETFONT=$0030;当绘制文本时程序发送此消息得到控件要用的颜色WM_GETFONT=$0031;应用程序发送此消息得到当前控件绘制文本的字体WM_SETHOTKEY=$0032;应用程序发送此消息让一个窗口与一个热键相关连WM_GETHOTKEY=$0033;应用程序发送此消息来判断热键与某个窗口是否有关联WM_QUERYDRAGICON=$0037;此消息发送给最小化窗口,当此窗口将要被拖放而它的类中没有定义图标,应用程序能返回一个图标或光标的句柄,当用户拖放图标时系统显示这个图标或光标WM_COMPAREITEM=$0039;发送此消息来判定combobox或listbox新增加的项的相对位置WM_GETOBJECT=$003D;WM_COMPACTING=$0041;显示内存已经很少了WM_WINDOWPOSCHANGING=$0046;发送此消息给那个窗口的大小和位置将要被改变时,来调用setwindowpos函数或其它窗口管理函数WM_WINDOWPOSCHANGED=$0047;发送此消息给那个窗口的大小和位置已经被改变时,来调用setwindowpos函数或其它窗口管理函数WM_POWER=$0048;(适用于16位的windows)当系统将要进入暂停状态时发送此消息WM_COPYDATA=$004A;当一个应用程序传递数据给另一个应用程序时发送此消息WM_CANCELJOURNAL=$004B;当某个用户取消程序日志激活状态,提交此消息给程序WM_NOTIFY=$004E;当某个控件的某个事件已经发生或这个控件需要得到一些信息时,发送此消息给它的父窗口WM_INPUTLANGCHANGEREQUEST=$0050;当用户选择某种输入语言,或输入语言的热键改变WM_INPUTLANGCHANGE=$0051;当平台现场已经被改变后发送此消息给受影响的最顶级窗口WM_TCARD=$0052;当程序已经初始化windows帮助例程时发送此消息给应用程序WM_HELP=$0053;此消息显示用户按下了F1,如果某个菜单是激活的,就发送此消息个此窗口关联的菜单,否则就发送给有焦点的窗口,如果当前都没有焦点,就把此消息发送给当前激活的窗口WM_USERCHANGED=$0054;当用户已经登入或退出后发送此消息给所有的窗口,当用户登入或退出时系统更新用户的具体设置信息,在用户更新设置时系统马上发送此消息;WM_NOTIFYFORMAT=$0055;公用控件,自定义控件和他们的父窗口通过此消息来判断控件是使用ANSI还是UNICODE结构在WM_NOTIFY消息,使用此控件能使某个控件与它的父控件之间进行相互通信WM_CONTEXTMENU=$007B;当用户某个窗口中点击了一下右键就发送此消息给这个窗口WM_STYLECHANGING=$007C;当调用SETWINDOWLONG函数将要改变一个或多个窗口的风格时发送此消息给那个窗口WM_STYLECHANGED=$007D;当调用SETWINDOWLONG函数一个或多个窗口的风格后发送此消息给那个窗口WM_DISPLAYCHANGE=$007E;当显示器的分辨率改变后发送此消息给所有的窗口WM_GETICON=$007F;此消息发送给某个窗口来返回与某个窗口有关连的大图标或小图标的句柄;WM_SETICON=$0080;程序发送此消息让一个新的大图标或小图标与某个窗口关联;WM_NCCREATE=$0081;当某个窗口第一次被创建时,此消息在WM_CREATE消息发送前发送;WM_NCDESTROY=$0082;此消息通知某个窗口,非客户区正在销毁WM_NCCALCSIZE=$0083;当某个窗口的客户区域必须被核算时发送此消息WM_NCHITTEST=$0084;//移动鼠标,按住或释放鼠标时发生WM_NCPAINT=$0085;程序发送此消息给某个窗口当它(窗口)的框架必须被绘制时;WM_NCACTIVATE=$0086;此消息发送给某个窗口仅当它的非客户区需要被改变来显示是激活还是非激活状态;WM_GETDLGCODE=$0087;发送此消息给某个与对话框程序关联的控件,widdows控制方位键和TAB键使输入进入此控件通过响应WM_GETDLGCODE消息,应用程序可以把他当成一个特殊的输入控件并能处理它WM_NCMOUSEMOVE=$00A0;当光标在一个窗口的非客户区内移动时发送此消息给这个窗口//非客户区为:窗体的标题栏及窗的边框体WM_NCLBUTTONDOWN=$00A1;当光标在一个窗口的非客户区同时按下鼠标左键时提交此消息WM_NCLBUTTONUP=$00A2;当用户释放鼠标左键同时光标某个窗口在非客户区十发送此消息;WM_NCLBUTTONDBLCLK=$00A3;当用户双击鼠标左键同时光标某个窗口在非客户区十发送此消息WM_NCRBUTTONDOWN=$00A4;当用户按下鼠标右键同时光标又在窗口的非客户区时发送此消息WM_NCRBUTTONUP=$00A5;当用户释放鼠标右键同时光标又在窗口的非客户区时发送此消息WM_NCRBUTTONDBLCLK=$00A6;当用户双击鼠标右键同时光标某个窗口在非客户区十发送此消息WM_NCMBUTTONDOWN=$00A7;当用户按下鼠标中键同时光标又在窗口的非客户区时发送此消息WM_NCMBUTTONUP=$00A8;当用户释放鼠标中键同时光标又在窗口的非客户区时发送此消息WM_NCMBUTTONDBLCLK=$00A9;当用户双击鼠标中键同时光标又在窗口的非客户区时发送此消息WM_KEYFIRST=$0100;WM_KEYDOWN=$0100;//按下一个键WM_KEYUP=$0101;//释放一个键WM_CHAR=$0102;//按下某键,并已发出WM_KEYDOWN,WM_KEYUP消息WM_DEADCHAR=$0103;当用translatemessage函数翻译WM_KEYUP消息时发送此消息给拥有焦点的窗口WM_SYSKEYDOWN=$0104;当用户按住ALT键同时按下其它键时提交此消息给拥有焦点的窗口;WM_SYSKEYUP=$0105;当用户释放一个键同时ALT键还按着时提交此消息给拥有焦点的窗口WM_SYSCHAR=$0106;当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后提交此消息给拥有焦点的窗口WM_SYSDEADCHAR=$0107;当WM_SYSKEYDOWN消息被TRANSLATEMESSAGE函数翻译后发送此消息给拥有焦点的窗口WM_KEYLAST=$0108;WM_INITDIALOG=$0110;在一个对话框程序被显示前发送此消息给它,通常用此消息初始化控件和执行其它任务WM_COMMAND=$0111;当用户选择一条菜单命令项或当某个控件发送一条消息给它的父窗口,一个快捷键被翻译WM_SYSCOMMAND=$0112;当用户选择窗口菜单的一条命令或当用户选择最大化或最小化时那个窗口会收到此消息WM_TIMER=$0113;//发生了定时器事件WM_HSCROLL=$0114;当一个窗口标准水平滚动条产生一个滚动事件时发送此消息给那个窗口,也发送给拥有它的控件WM_VSCROLL=$0115;当一个窗口标准垂直滚动条产生一个滚动事件时发送此消息给那个窗口也,发送给拥有它的控件WM_INITMENU=$0116;当一个菜单将要被激活时发送此消息,它发生在用户菜单条中的某项或按下某个菜单键,它允许程序在显示前更改菜单WM_INITMENUPOPUP=$0117;当一个下拉菜单或子菜单将要被激活时发送此消息,它允许程序在它显示前更改菜单,而不要改变全部WM_MENUSELECT=$011F;当用户选择一条菜单项时发送此消息给菜单的所有者(一般是窗口)WM_MENUCHAR=$0120;当菜单已被激活用户按下了某个键(不同于加速键),发送此消息给菜单的所有者;WM_ENTERIDLE=$0121;当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待WM_MENURBUTTONUP=$0122;WM_MENUDRAG=$0123;WM_MENUGETOBJECT=$0124;WM_UNINITMENUPOPUP=$0125;WM_MENUCOMMAND=$0126;WM_CHANGEUISTATE=$0127;WM_UPDATEUISTATE=$0128;WM_QUERYUISTATE=$0129;WM_CTLCOLORMSGBOX=$0132;在windows绘制消息框前发送此消息给消息框的所有者窗口,通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置消息框的文本和背景颜色WM_CTLCOLOREDIT=$0133;当一个编辑型控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置编辑框的文本和背景颜色WM_CTLCOLORLISTBOX=$0134;当一个列表框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置列表框的文本和背景颜色WM_CTLCOLORBTN=$0135;当一个按钮控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置按纽的文本和背景颜色WM_CTLCOLORDLG=$0136;当一个对话框控件将要被绘制前发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置对话框的文本背景颜色WM_CTLCOLORSCROLLBAR=$0137;当一个滚动条控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置滚动条的背景颜色WM_CTLCOLORSTATIC=$0138;当一个静态控件将要被绘制时发送此消息给它的父窗口;通过响应这条消息,所有者窗口可以通过使用给定的相关显示设备的句柄来设置静态控件的文本和背景颜色WM_MOUSEFIRST=$0200;WM_MOUSEMOVE=$0200;//移动鼠标WM_LBUTTONDOWN=$0201; //按下鼠标左键WM_LBUTTONUP=$0202;//释放鼠标左键WM_LBUTTONDBLCLK=$0203; //双击鼠标左键WM_RBUTTONDOWN=$0204; //按下鼠标右键WM_RBUTTONUP=$0205;//释放鼠标右键WM_RBUTTONDBLCLK=$0206; //双击鼠标右键WM_MBUTTONDOWN=$0207; //按下鼠标中键WM_MBUTTONUP=$0208;//释放鼠标中键WM_MBUTTONDBLCLK=$0209; //双击鼠标中键WM_MOUSEWHEEL=$020A;当鼠标轮子转动时发送此消息个当前有焦点的控件WM_MOUSELAST=$020A;WM_PARENTNOTIFY=$0210;当MDI子窗口被创建或被销毁,或用户按了一下鼠标键而光标在子窗口上时发送此消息给它的父窗口WM_ENTERMENULOOP=$0211;发送此消息通知应用程序的主窗口that已经进入了菜单循环模式WM_EXITMENULOOP=$0212;发送此消息通知应用程序的主窗口that已退出了菜单循环模式WM_NEXTMENU=$0213;WM_SIZING=532;当用户正在调整窗口大小时发送此消息给窗口;通过此消息应用程序可以监视窗口大小和位置也可以修改他们WM_CAPTURECHANGED=533;发送此消息给窗口当它失去捕获的鼠标时;WM_MOVING=534;当用户在移动窗口时发送此消息,通过此消息应用程序可以监视窗口大小和位置也可以修改他们;WM_POWERBROADCAST=536;此消息发送给应用程序来通知它有关电源管理事件;WM_DEVICECHANGE=537;当设备的硬件配置改变时发送此消息给应用程序或设备驱动程序WM_IME_STARTCOMPOSITION=$010D;WM_IME_ENDCOMPOSITION=$010E;WM_IME_COMPOSITION=$010F;WM_IME_KEYLAST=$010F;WM_IME_SETCONTEXT=$0281;WM_IME_NOTIFY=$0282;WM_IME_CONTROL=$0283;WM_IME_COMPOSITIONFULL=$0284;WM_IME_SELECT=$0285;WM_IME_CHAR=$0286;WM_IME_REQUEST=$0288;WM_IME_KEYDOWN=$0290;WM_IME_KEYUP=$0291;WM_MDICREATE=$0220;应用程序发送此消息给多文档的客户窗口来创建一个MDI子窗口WM_MDIDESTROY=$0221;应用程序发送此消息给多文档的客户窗口来关闭一个MDI子窗口WM_MDIACTIVATE=$0222;应用程序发送此消息给多文档的客户窗口通知客户窗口激活另一个MDI子窗口,当客户窗口收到此消息后,它发出WM_MDIACTIVE消息给MDI子窗口(未激活)激活它;WM_MDIRESTORE=$0223;程序发送此消息给MDI客户窗口让子窗口从最大最小化恢复到原来大小WM_MDINEXT=$0224;程序发送此消息给MDI客户窗口激活下一个或前一个窗口WM_MDIMAXIMIZE=$0225;程序发送此消息给MDI客户窗口来最大化一个MDI子窗口;WM_MDITILE=$0226;程序发送此消息给MDI客户窗口以平铺方式重新排列所有MDI子窗口WM_MDICASCADE=$0227;程序发送此消息给MDI客户窗口以层叠方式重新排列所有MDI子窗口WM_MDIICONARRANGE=$0228;程序发送此消息给MDI客户窗口重新排列所有最小化的MDI子窗口WM_MDIGETACTIVE=$0229;程序发送此消息给MDI客户窗口来找到激活的子窗口的句柄WM_MDISETMENU=$0230;程序发送此消息给MDI客户窗口用MDI菜单代替子窗口的菜单WM_ENTERSIZEMOVE=$0231;WM_EXITSIZEMOVE=$0232;WM_DROPFILES=$0233;WM_MDIREFRESHMENU=$0234;WM_MOUSEHOVER=$02A1;WM_MOUSELEAVE=$02A3;WM_CUT=$0300;程序发送此消息给一个编辑框或combobox来删除当前选择的文本WM_COPY=$0301;程序发送此消息给一个编辑框或combobox来复制当前选择的文本到剪贴板WM_PASTE=$0302;程序发送此消息给editcontrol或combobox从剪贴板中得到数据WM_CLEAR=$0303;程序发送此消息给editcontrol或combobox清除当前选择的内容;WM_UNDO=$0304;程序发送此消息给editcontrol或combobox撤消最后一次操作WM_RENDERFORMAT=$0305;WM_RENDERALLFORMATS=$0306;WM_DESTROYCLIPBOARD=$0307;当调用ENPTYCLIPBOARD函数时发送此消息给剪贴板的所有者WM_DRAWCLIPBOARD=$0308;当剪贴板的内容变化时发送此消息给剪贴板观察链的第一个窗口;它允许用剪贴板观察窗口来显示剪贴板的新内容;WM_PAINTCLIPBOARD=$0309;当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区需要重画;WM_VSCROLLCLIPBOARD=$030A;WM_SIZECLIPBOARD=$030B;当剪贴板包含CF_OWNERDIPLAY格式的数据并且剪贴板观察窗口的客户区域的大小已经改变是此消息通过剪贴板观察窗口发送给剪贴板的所有者;WM_ASKCBFORMATNAME=$030C;通过剪贴板观察窗口发送此消息给剪贴板的所有者来请求一个CF_OWNERDISPLAY格式的剪贴板的名字WM_CHANGECBCHAIN=$030D;当一个窗口从剪贴板观察链中移去时发送此消息给剪贴板观察链的第一个窗口;WM_HSCROLLCLIPBOARD=$030E;此消息通过一个剪贴板观察窗口发送给剪贴板的所有者;它发生在当剪贴板包含CFOWNERDISPALY格式的数据并且有个事件在剪贴板观察窗的水平滚动条上;所有者应滚动剪贴板图象并更新滚动条的值;WM_QUERYNEWPALETTE=$030F;此消息发送给将要收到焦点的窗口,此消息能使窗口在收到焦点时同时有机会实现他的逻辑调色板WM_PALETTEISCHANGING=$0310;当一个应用程序正要实现它的逻辑调色板时发此消息通知所有的应用程序WM_PALETTECHANGED=$0311;此消息在一个拥有焦点的窗口实现它的逻辑调色板后发送此消息给所有顶级并重叠的窗口,以此来改变系统调色板WM_HOTKEY=$0312;当用户按下由REGISTERHOTKEY函数注册的热键时提交此消息WM_PRINT=791;应用程序发送此消息仅当WINDOWS或其它应用程序发出一个请求要求绘制一个应用程序的一部分;WM_PRINTCLIENT=792;WM_HANDHELDFIRST=856;WM_HANDHELDLAST=863;WM_PENWINFIRST=$0380;WM_PENWINLAST=$038F;WM_COALESCE_FIRST=$0390;WM_COALESCE_LAST=$039F;WM_DDE_FIRST=$03E0;WM_DDE_INITIATE=WM_DDE_FIRST+0;一个DDE客户程序提交此消息开始一个与服务器程序的会话来响应那个指定的程序和主题名;WM_DDE_TERMINATE=WM_DDE_FIRST+1;一个DDE应用程序(无论是客户还是服务器)提交此消息来终止一个会话;WM_DDE_ADVISE=WM_DDE_FIRST+2;一个DDE客户程序提交此消息给一个DDE服务程序来请求服务器每当数据项改变时更新它WM_DDE_UNADVISE=WM_DDE_FIRST+3;一个DDE客户程序通过此消息通知一个DDE服务程序不更新指定的项或一个特殊的剪贴板格式的项WM_DDE_ACK=WM_DDE_FIRST+4;此消息通知一个DDE(动态数据交换)程序已收到并正在处理WM_DDE_POKE, WM_DDE_EXECUTE,WM_DDE_DATA,WM_DDE_ADVISE, WM_DDE_UNADVISE,or WM_DDE_INITIAT消息WM_DDE_DATA=WM_DDE_FIRST+5;一个DDE服务程序提交此消息给DDE客户程序来传递个一数据项给客户或通知客户的一条可用数据项WM_DDE_REQUEST=WM_DDE_FIRST+6;一个DDE客户程序提交此消息给一个DDE服务程序来请求一个数据项的值;WM_DDE_POKE=WM_DDE_FIRST+7;一个DDE客户程序提交此消息给一个DDE服务程序,客户使用此消息来请求服务器接收一个未经同意的数据项;服务器通过答复WM_DDE_ACK消息提示是否它接收这个数据项;WM_DDE_EXECUTE=WM_DDE_FIRST+8;一个DDE客户程序提交此消息给一个DDE服务程序来发送一个字符串给服务器让它象串行命令一样被处理,服务器通过提交WM_DDE_ACK消息来作回应;WM_DDE_LAST=WM_DDE_FIRST+8;WM_APP=$8000;WM_USER=$0400;此消息能帮助应用程序自定义私有消息;/////////////////////////////////////////////////////////////////////通知消息(Notification message)是指这样一种消息,一个窗口内的子控件发生了一些事情,需要通知父窗口。