深圳网站建设设计制作,做国外搞笑网站,图片切换wordpress,百度知道首页登录#xff08;详解入门#xff09;Windows 应用程序的 简单窗口创建以及关键函数详细解释。 前言(有必要了解)#xff1a; Windows API就是Windows应用程序接口#xff0c;是针对Microsoft Windows操作系统家族的系统编程接口,为搭建各种图形界面提供库函数。实际上如果我们要…详解入门Windows 应用程序的 简单窗口创建以及关键函数详细解释。 前言(有必要了解) Windows API就是Windows应用程序接口是针对Microsoft Windows操作系统家族的系统编程接口,为搭建各种图形界面提供库函数。实际上如果我们要开发出更灵活、更实用、更具效率的应用程序虽然类库和控件使应用程序的开发简单的多但它们只提供Windows的一般功能对于比较复杂和特殊的功能来说使用类库和控件是非常难以实现的这时就需要采用API函数来实现。 MFC是微软公司提供的一个类库,以C类的形式封装了Windows API并且包含应用程序框架以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 其中32位Windows操作系统的编程接口称为Win32 API以便与以前16位版本Windows编程接口16位Windows API区别开来。 一、简单窗口的创建
1.演示以Dev C为例其他编译器也差不多
选择文件----新建----项目----WindowsApplication----确定 2.完成以上操作会自行生成以下代码有解释 // 包括头文件
#include windows.h// 消息处理函数
LRESULT CALLBACK WndProc(HWND hwnd, // hwnd是要处理窗口的句柄,UINT Message, // message是消息ID代表了不同的消息类型WPARAM wParam, // wParam的值为按下按键的虚拟键码LPARAM lParam) // lParam则存储按键的相关状态信息
{ switch(Message) {case WM_DESTROY: { // 处理窗口结束消息PostQuitMessage(0);break;}default:return DefWindowProc(hwnd, Message, wParam, lParam);}return 0;
}
lParam则存储按键的相关状态信息(比如当鼠标消息发出时wParam值为鼠标按键的信息而lParam则储存鼠标的坐标,高字节代表y坐标低字节代表x坐标。 // WinMain函数是应用程序的入口相当DOS程序的main函数
int WINAPI WinMain(HINSTANCE hInstance, // 当前实例句柄HINSTANCE hPrevInstance, // 前一个实例句柄LPSTR lpCmdLine, // 指向命令行参数的指针int nCmdShow) // 窗口的显示状态
{// 注册窗口WNDCLASSEX wc; // 定义窗口类HWND hwnd; // 窗口句柄MSG msg; // 定义消息memset(wc,0,sizeof(wc)); // 为新申请的内存做初始化wc.cbSize sizeof(WNDCLASSEX); // WNDCLASSEX的大小wc.lpfnWndProc WndProc; // 指定消息处理函数wc.hInstance hInstance; // 实例句柄wc.hCursor LoadCursor(NULL, IDC_ARROW); // 光标句柄wc.hbrBackground (HBRUSH)(COLOR_WINDOW1); // 背景画刷的句柄wc.lpszClassName WindowClass; // 窗口类名wc.hIcon LoadIcon(NULL, IDI_APPLICATION); // 图标句柄wc.hIconSm LoadIcon(NULL, IDI_APPLICATION); //和窗口类关联的小图标if(!RegisterClassEx(wc)) { // 注册窗口MessageBox(NULL, Window Registration Failed!,Error!,MB_ICONEXCLAMATION|MB_OK);return 0;}// 创建窗口hwnd CreateWindowEx(WS_EX_CLIENTEDGE,WindowClass,Caption,WS_VISIBLE|WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, 640,480, NULL,NULL,hInstance,NULL);if(hwnd NULL) {MessageBox(NULL, Window Creation Failed!,Error!,MB_ICONEXCLAMATION|MB_OK);return 0;}ShowWindow(hwnd,nCmdShow); // 显示窗口UpdateWindow(hwnd); // 更新窗口// 消息循环while(GetMessage(msg, NULL, 0, 0) 0) { TranslateMessage(msg); // 翻译消息DispatchMessage(msg); // 将消息发送给WndProc处理}return msg.wParam;
}3.代码运行结果如图 二、关键函数的详解
1.注册窗口 RegisterClassEx
注册一个窗口类以便在调用 CreateWindow或 CreateWindowEx函数时使用。 函数原型
ATOM WINAPI RegisterClassEx(_In_ const WNDCLASSEX *lpwcx
);参数解释 参数 lpwcx [in] 类型const WNDCLASSEX * 指向WNDCLASSEX结构的指针 。在将结构传递给函数之前必须使用适当的类属性填充结构。 注意RegisterClass 函数己经被 RegisterClassEx 函数代替。然而如果你不需要设置类的小图标你仍然可以使用 RegisterClass 函数。 2.创建窗口 CreateWindowEx
函数原型 :
HWND CreateWindowEx(DWORD dwExStyle, // 窗口的扩展风格LPCTSTR lpClassName, // 已经注册的窗口类名称LPCTSTR lpWindowName, // 窗口标题栏的名字DWORD dwStyle, // 窗口的基本风格int x, // 窗口左上角水平坐标位置int y, // 窗口左上角垂直坐标位置int nWidth, // 窗口的宽度int nHeight, // 窗口的高度HWND hWndParent, // 窗口的父窗口句柄HMENU hMenu, // 窗口菜单句柄HINSTANCE hInstance, // 应用程序实例句柄LPVOID lpParam // 窗口创建时附加参数
); // 创建成功返回窗口句柄参数解释 : 参数一dwExStyle 指定窗口的扩展风格 dwExStyle窗口的扩展风格含义WS_EX_NODRAG:防止窗口被移动WS_EX_ACCEPTFILES指定以该风格创建的窗口接受一个拖拽文件。WS_EX_APPWINDOW当窗口可见时将一个顶层窗口放置到任务条上。WS_EX_CLIENTEDGE指定窗口有一个带阴影的边界。WS_EX_CONTEXTHELP在窗口的标题条包含一个问号标志。当用户点击了问号时鼠标光标变为一个问号的指针、如果点击了一个子窗口则子窗口接收到WM_HELP消息。子窗口应该将这个消息传递给父窗口过程父窗口再通过HELP_WM_HELP命令调用WinHelp函数。这个Help应用程序显示一个包含子窗口帮助信息的弹出式窗口。WS_EX_CONTEXTHELP不能与WS_MAXIMIZEBOX和WS_MINIMIZEBOX同时使用。WS_EX_CONTROLPARENT允许用户使用Tab键在窗口的子窗口间搜索。WS_EX_DLGMODALFRAME创建一个带双边的窗口该窗口可以在dwStyle中指定WS_CAPTION风格来创建一个标题栏。WS_EX_LEFT窗口具有左对齐属性这是缺省设置的。WS_EX_LEFTSCROLLBAR如果外壳语言是如HebrewArabic或其他支持reading order alignment的语言则标题条如果存在则在客户区的左部分。若是其他语言在该风格被忽略并且不作为错误处理。WS_EX_LTRREADING窗口文本以LEFT到RIGHT自左向右属性的顺序显示。这是缺省设置的。WS_EX_MDICHILD创建一个MDI子窗口。WS_EX_NOPATARENTNOTIFY指明以这个风格创建的窗口在被创建和销毁时不向父窗口发送WM_PARENTNOTFY消息。WS_EX_OVERLAPPEDWINDOWWS_EX_CLIENTEDGE和WS_EX_WINDOWEDGE的组合。WS_EX_PALETTEWINDOWWS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW和WS_WX_TOPMOST风格的组合WS_EX_RIGHT:窗口具有普通的右对齐属性这依赖于窗口类。只有在外壳语言是如Hebrew,Arabic或其他支持读顺序对齐reading order alignment的语言时该风格才有效否则忽略该标志并且不作为错误处理。WS_EX_RIGHTSCROLLBAR垂直滚动条在窗口的右边界。这是缺省设置的。WS_EX_RTLREADING如果外壳语言是如HebrewArabic或其他支持读顺序对齐reading order alignment的语言则窗口文本是一自左向右RIGHT到LEFT顺序的读出顺序。若是其他语言在该风格被忽略并且不作为错误处理。WS_EX_STATICEDGE为不接受用户输入的项创建一个3一维边界风格WS_EX_TOOLWINDOW创建工具窗口即窗口是一个游动的工具条。工具窗口的标题条比一般窗口的标题条短并且窗口标题以小字体显示。工具窗口不在任务栏里显示当用户按下altTab键时工具窗口不在对话框里显示。如果工具窗口有一个系统菜单它的图标也不会显示在标题栏里但是可以通过点击鼠标右键或AltSpace来显示菜单。WS_EX_TOPMOST指明以该风格创建的窗口应放置在所有非最高层窗口的上面并且停留在其L即使窗口未被激活。使用函数SetWindowPos来设置和移去这个风格。WS_EX_TRANSPARENT指定以这个风格创建的窗口在窗口下的同属窗口已重画时该窗口才可以重画。由于其下的同属窗口已被重画该窗口是透明的。 参数二lpClassName 已经注册的窗口类名称 窗口类名称可以是一个指向 NULL 结束的字符串或一个整型数值如果是字符串它指定了窗口的类名。这个类名可以是任何用函数 RegisterClass 注册的类名或是任何预定义的控制类名如是一个整型量它是由此前调用 theGlobalAddAtom 函数产生的全局量。这个小于 0xC000 的 16 位数必须是 lpClassName 参数字的低 16 位该参数的高位必须是 0 参数三lpWindowName 窗口标题栏的名字 窗口标题一个指向 NULL 结束的字符串指针如果窗口风格指定了标题条由 lpWindowName 指向的窗口标题将显示在标题条上当使用 Createwindow 函数来创建控制例如按钮选择框和静态控制时可使用 lpWindowName 来指定控制文本 参数四dwStyle 窗口的基本风格 dwStyle窗口的基本风格含义WS_BORDER创建一个带边框的窗口。WS_CAPTION创建一个有标题框的窗口包括WS_BODER风格。WS_CHILD创建一个子窗口。这个风格不能与WS_POPUP风格合用。WS_CHILDWINDOW与WS_CHILD相同。WS_CLIPCHILDREN当在父窗口内绘图时排除子窗口区域。在创建父窗口时使用这个风格。WS_CLIPSIBLINGS排除子窗口之间的相对区域也就是当一个特定的窗口接收到WM_PAINT消息时WS_CLIPSIBLINGS 风格将所有层叠窗口排除在绘图之外只重绘指定的子窗口。如果未指定WS_CLIPSIBLINGS风格并且子窗口是层叠的则在重绘子窗口的客户区时就会重绘邻近的子窗口。WS_DISABLED创建一个初始状态为禁止的子窗口。一个禁止状态的窗口不能接受来自用户的输入信息。WS_DLGFRAME创建一个带对话框边框风格的窗口。这种风格的窗口不能带标题条。WS_GROUP指定一组控制的第一个控制。这个控制组由第一个控制和随后定义的控制组成自第二个控制开始每个控制具有WS_GROUP风格每个组的第一个控制带有WS_TABSTOP风格从而使用户可以在组间移动。用户随后可以使用光标在组内的控制间改变键盘焦点。WS_HSCROLL创建一个有水平滚动条的窗口。WS_ICONIC创建一个初始状态为最小化状态的窗口。与WS_MINIMIZE风格相同。WS_MAXIMIZE创建一个初始状态为最大化状态的窗口。WS_MAXIMIZEBOX创建一个具有最大化按钮的窗口。该风格不能与WS_EX_CONTEXTHELP风格同时出现同时必须指定WS_SYSMENU风格。WS_OVERLAPPED产生一个层叠的窗口。一个层叠的窗口有一个标题条和一个边框。与WS_TILED风格相同。WS_OVERLAPPEDWINDOW创建一个具有WS_OVERLAPPEDWS_CAPTIONWS_SYSMENU - WS_THICKFRAMEWS_MINIMIZEBOXWS_MAXIMIZEBOX风格的层叠窗口与WS_TILEDWINDOW风格相同。WS_POPUP创建一个弹出式窗口。该风格不能与WS_CHILD风格同时使用。WS_POPUPWINDOW创建一个具有WS_BORDERWS_POPUP,WS_SYSMENU风格的窗口WS_CAPTION和WS_POPUPWINDOW必须同时设定才能使窗口某单可见。WS_SIZEBOX创建一个可调边框的窗口与WS_THICKFRAME风格相同。WS_SYSMENU创建一个在标题条上带有窗口菜单的窗口必须同时设定WS_CAPTION风格。WS_TABSTOP创建一个控制这个控制在用户按下Tab键时可以获得键盘焦点。按下Tab键后使键盘焦点转移到下一具有WS_TABSTOP风格的控制。WS_THICKFRAME创建一个具有可调边框的窗口与WS_SIZEBOX风格相同。WS_TILED产生一个层叠的窗口。一个层叠的窗口有一个标题和一个边框。与WS_OVERLAPPED风格相同。WS_TILEDWINDOW:创建一个具有WS_OVERLAPPEDWS_CAPTIONWS_SYSMENU WS_THICKFRAMEWS_MINIMIZEBOXWS_MAXIMIZEBOX风格的层叠窗口。与WS_OVERLAPPEDWINDOW风格相同。WS_VISIBLE创建一个初始状态为可见的窗口。WS_VSCROLL创建一个有垂直滚动条的窗口。 参数五x 初始窗口左上角水平坐标位置 指定窗口的初始水平位置x 坐标对一个层叠或弹出式窗口x 参数是屏幕坐标系的窗口的左上角的初始 x 坐标对于子窗口x 是子窗口左上角相对父窗口客户区左上角的初始 x 坐标如果该参数被设为 CW_USEDEFAULT 则系统为窗口选择缺省的左上角坐标并忽略 y 参数CW_USEDEFAULT 只对层叠窗口有效如果为弹出式窗口或子窗口设定则 x 和 y 参数被设为零。 参数六 y 初始窗口左上角垂直坐标位置 指定窗口的初始垂直位置y 坐标对一个层叠或弹出式窗口y 参数是屏幕坐标系的窗口的左上角的初始 y 坐标对于子窗口y 是子窗口左上角相对父窗口客户区左上角的初始 y 坐标对于列表框y 是列表框客户区左上角相对父窗口客户区左上角的初始 y 坐标如果层叠窗口是使用 WS_VISIBLE 风格位创建的并且 x 参数被设为 CW_USEDEFAULT则系统将忽略 y 参数 参数七nWidth 初始窗口的宽度 以设备单元指明窗口的宽度对于层叠窗口nWidth 的值或是屏幕坐标的窗口宽度或是 CW_USEDEFAULT若 nWidth 是 CW_USEDEFAULT则系统为窗口选择一个默认的高度和宽度默认宽度为从初始 x 坐标开始到屏幕的右边界缺省高度为从初始 y 坐标开始到目标区域的顶部。)CW_USEDEFAULT 只对层叠窗口有效如果为弹出式窗口和子窗口设定 CW_USEDEFAULT 标志则 nWidth 和 nHeight 被设为零 参数八nHeight 初始窗口的高度 以设备单元指明窗口的高度对于层叠窗口nHeight 是屏幕坐标的窗口宽度若 nWidth 被设为 CW_USEDEFAULT则系统忽略 nHeight 参数自动为 nWidth 和 nHeight 设置默认参数 参数九 hWndParent 窗口的父窗口句柄 指向被创建窗口的父窗口或所有者窗口的句柄若要创建一个子窗口或一个从属窗口需提供一个有效的窗口句柄创建一个单纯的消息窗口可以提供 HWND_MESSAGE 或提供一个己存在的消息窗口的句柄 参数十 hMenu 窗口菜单句柄 指向窗口菜单句柄或依据窗口风格指明一个子窗口标识对于层叠或弹出式窗口hMenu 指定窗口使用的菜单如果使用了菜单类则 hMenu 可以为 NULL对于子窗口hMenu 指定了该子窗口标识一个整型量一个对话框使用这个整型值将事件通知父类。应用程序确定子窗口标识这个值对于相同父窗口的所有子窗口必须是唯一的 参数十一 hInstance 应用程序实例句柄 与窗口相关联的模块实例的句柄 参数十二lpParam窗口创建时附加参数 指向一个值的指针该值传递给窗口 WM_CREATE 消息。该值通过在 IParam 参数中的 CREATESTRUCT 结构传递如果应用程序调用 CreateWindow 创建一个 MDI 客户窗口则 lpParam 必须指向一个 CLIENTCREATESTRUCT 结构 3.显示窗口 ShowWindow
函数原型
BOOL WINAPI ShowWindow(_In_ HWND hWnd,_In_ int nCmdShow
);参数解释 hWnd [in] 类型HWND 窗户的句柄。 nCmdShow [in] 输入int 控制窗口的显示方式。如果启动应用程序的程序提供STARTUPINFO结构则在 应用程序第一次调用ShowWindow时会忽略此参数。否则第一次调用ShowWindow时该值应该是WinMain函数在其nCmdShow参数中获取的值 。在后续调用中此参数可以是以下值之一。 返回值 返回值 类型BOOL 如果窗口先前可见则返回值为非零。 如果窗口先前已隐藏则返回值为零。 nCmdShow值含义SW_FORCEMINIMIZE 11最小化窗口即使拥有窗口的线程没有响应。仅在最小化来自不同线程的窗口时才应使用此标志。SW_HIDE 0隐藏窗口并激活另一个窗口。SW_MAXIMIZE 3最大化指定的窗口。SW_MINIMIZE 6最小化指定的窗口并激活Z顺序中的下一个顶级窗口。SW_RESTORE 9激活并显示窗口。如果窗口最小化或最大化系统会将其恢复到原始大小和位置。应用程序应在还原最小化窗口时指定此标志。SW_SHOW 5激活窗口并以当前大小和位置显示它。SW_SHOWDEFAULT 10根据启动应用程序的程序传递给CreateProcess函数的STARTUPINFO结构中 指定的SW_值设置show状态 。SW_SHOWMAXIMIZED 3激活窗口并将其显示为最大化窗口。SW_SHOWMINIMIZED 2激活窗口并将其显示为最小化窗口。SW_SHOWMINNOACTIVE 7将窗口显示为最小化窗口。此值类似于SW_SHOWMINIMIZED但窗口未激活。SW_SHOWNA8以当前大小和位置显示窗口。此值类似于SW_SHOW但窗口未激活。SW_SHOWNOACTIVATE 4显示最近大小和位置的窗口。此值类似于SW_SHOWNORMAL但窗口未激活。SW_SHOWNORMAL 1激活并显示一个窗口。如果窗口最小化或最大化系统会将其恢复到原始大小和位置。应用程序应在首次显示窗口时指定此标志。 4.更新窗口 UpdateWindow
如果窗口的更新区域不为空则UpdateWindow函数通过向窗口发送WM_PAINT消息来更新指定窗口的客户区域 。该函数将WM_PAINT消息直接发送到指定窗口的窗口过程绕过应用程序队列。如果更新区域为空则不发送任何消息。
函数原型
BOOL UpdateWindow(_In_ HWND hWnd
);参数解释 参数 hWnd [in] 处理要更新的窗口。 返回值 如果函数成功则返回值为非零值。 如果函数失败则返回值为零。 5.显示模式对话框MessageBox
显示模式对话框其中包含系统图标一组按钮和简要的特定于应用程序的消息例如状态或错误信息。消息框返回一个整数值指示用户单击的按钮。
函数原型
int WINAPI MessageBox(_In_opt_ HWND hWnd,_In_opt_ LPCTSTR lpText,_In_opt_ LPCTSTR lpCaption,_In_ UINT uType
);参数解释 参数 hWnd 要创建的消息框的所有者窗口的句柄。如果此参数为NULL则消息框没有所有者窗口。 lpText 要显示的消息。如果字符串由多行组成则可以使用每行之间的回车符和/或换行符分隔行。 lpCaption 对话框标题。如果此参数为NULL则默认标题为“ 错误”。 uType 对话框的内容和行为。此参数可以是来自以下标志组的标志的组合。 消息框中显示的按钮值含义MB_ABORTRETRYIGNORE 0x00000002L消息框包含三个按钮AbortRetry和Ignore。MB_CANCELTRYCONTINUE 0x00000006L消息框包含三个按钮取消再试一次继续。使用此消息框类型而不是MB_ABORTRETRYIGNORE。MB_HELP 0x00004000L在消息框中添加“ 帮助”按钮。当用户单击“ 帮助”按钮或按F1时系统会向所有者发送 WM_HELP消息。MB_OK 0x00000000L消息框包含一个按钮确定。这是默认值。MB_OKCANCEL 0x00000001L消息框包含两个按钮确定和取消。MB_RETRYCANCEL 0x00000005L消息框包含两个按钮重试和取消。MB_YESNO 0x00000004L消息框包含两个按钮是和否。MB_YESNOCANCEL 0x00000003L消息框包含三个按钮是否和取消。
消息框中显示图标含义MB_ICONEXCLAMATION 0x00000030L消息框中会出现一个惊叹号图标。MB_ICONWARNING 0x00000030L消息框中会出现一个惊叹号图标。MB_ICONINFORMATION 0x00000040L消息框中将出现一个由圆圈中的小写字母i组成的图标。MB_ICONASTERISK 0x00000040L消息框中将出现一个由圆圈中的小写字母i组成的图标。MB_ICONQUESTION0x00000020L消息框中会出现一个问号图标。不再推荐使用问号消息图标因为它不能清楚地表示特定类型的消息并且因为作为问题的消息的措辞可以应用于任何消息类型。此外用户可以将消息符号问号与帮助信息混淆。因此请勿在消息框中使用此问号消息符号。系统继续支持其仅包含向后兼容性。MB_ICONSTOP 0x00000010L消息框中会出现一个停止标志图标。MB_ICONERROR 0x00000010L消息框中会出现一个停止标志图标。MB_ICONHAND 0x00000010L消息框中会出现一个停止标志图标。
默认按钮含义MB_DEFBUTTON1 0x00000000L第一个按钮是默认按钮。MB_DEFBUTTON1是默认值除非指定了MB_DEFBUTTON2MB_DEFBUTTON3或MB_DEFBUTTON4。MB_DEFBUTTON2 0x00000100L第二个按钮是默认按钮。MB_DEFBUTTON3 0x00000200L第三个按钮是默认按钮。MB_DEFBUTTON4 0x00000300L第四个按钮是默认按钮。
返回值
返回代码/值描述IDABORT 3的中止按钮被选中。IDCANCEL 2“ 取消”按钮已被选中。IDCONTINUE 11该继续按钮被选中。IDIGNORE 5“ 忽略”按钮已被选中。IDNO 7在没有按钮被选中。IDOK 1在OK按钮被选中。IDRETRY 4选择了“ 重试”按钮。IDTRYAGAIN 10选中了“ 再试一次”按钮。IDYES 6该是按钮被选中。 6.检索消息GetMessage
从调用线程的消息队列中检索消息。该函数调度传入的已发送消息直到发布的消息可供检索。 与GetMessage不同 PeekMessage函数不会在返回之前等待发布消息。
函数原型
BOOL WINAPI GetMessage(_Out_ LPMSG lpMsg,_In_opt_ HWND hWnd,_In_ UINT wMsgFilterMin,_In_ UINT wMsgFilterMax
);参数解释 lpMsg 指向MSG结构的指针该 结构从线程的消息队列接收消息信息。 hWnd 要检索其消息的窗口句柄。该窗口必须属于当前线程。 如果hWnd为NULL则GetMessage将检索属于当前线程的任何窗口的消息以及当前线程的消息队列中hwnd值为NULL的任何消息请参阅 MSG结构。因此如果hWnd为NULL则处理窗口消息和线程消息。 如果hWnd为-1则GetMessage仅检索当前线程的hwnd值为NULL的消息队列中的消息即PostMessage发布的线程消息 当hWnd参数为NULL时或PostThreadMessage。 wMsgFilterMin 要检索的最低消息值的整数值。使用WM_KEYFIRST0x0100指定第一个键盘消息或使用WM_MOUSEFIRST0x0200指定第一个鼠标消息。 在此处和wMsgFilterMax中使用 WM_INPUT仅指定WM_INPUT消息。 如果wMsgFilterMin和wMsgFilterMax都为零则GetMessage将返回所有可用消息即不执行范围过滤。 wMsgFilterMax 要检索的最高消息值的整数值。使用WM_KEYLAST指定最后一个键盘消息或使用WM_MOUSELAST指定最后一条鼠标消息。 在此处和wMsgFilterMin中使用 WM_INPUT仅指定WM_INPUT消息。 如果wMsgFilterMin和wMsgFilterMax都为零则GetMessage将返回所有可用消息即不执行范围过滤。 返回值 类型BOOL 如果函数检索WM_QUIT以外的消息 则返回值为非零值。 如果函数检索 WM_QUIT消息则返回值为零。 如果有错误则返回值为-1。 7.翻译消息TranslateMessage
将虚拟密钥消息转换为字符消息。字符消息被发布到调用线程的消息队列以便在线程下次调用GetMessage或 PeekMessage函数时读取 。
函数原型
BOOL WINAPI TranslateMessage(_In_ const MSG *lpMsg
);
参数解释 lpMsg 类型const MSG * 指向MSG结构的指针该 结构包含使用GetMessage或 PeekMessage函数从调用线程的消息队列中检索的消息信息 。 返回值 类型BOOL 如果消息被转换即字符消息被发布到线程的消息队列中则返回值非零。 如果消息是 WM_KEYDOWN WM_KEYUP WM_SYSKEYDOWN或 WM_SYSKEYUP则无论转换如何返回值都是非零的。 如果消息未被转换即字符消息未发布到线程的消息队列中则返回值为零。 8.传递消息 DispatchMessage
该函数分发一个消息给窗口程序。通常消息从GetMessage函数获得或者TranslateMessage函数传递的。消息被分发到回调函数过程函数)作用是消息传递给操作系统然后操作系统去调用我们的回调函数也就是说我们在窗体的过程函数中处理消息。
函数原型
LONG DispatchMessageCONST MSG*lpmsg参数解释 lpmsg指向含有消息的MSG结构的指针。 返回值 返回值是窗口程序返回的值。尽管返回值的含义依赖于被调度的消息但返回值通常被忽略。 三、补充
1. WIndow API 函数大全方便查找:
链接https://blog.csdn.net/qq_27361833/article/details/78192526
2.CreateWindowEx和CreateWindow的区别
链接https://blog.csdn.net/ohmygol/article/details/6135897 作者说: 从中午一直写到现在晚饭都还没有呢我发现自己总结再写出来后这样记得更牢固效率高了很多。最大的好处就是方便自己以后查找相关知识。 这篇知识总结是windows 应用程序编程和win32的敲门砖认真看完理解后能很快进入windows 应用程序的编程。 注下一篇将是VS的Win32 应用程序创建用于补充这篇未涉及的内容。 参考1Win32学习笔记 - CreateWindowEx()函数 参考2CreateWindow函数详解 参考3msdn官网 参考4《数据结构课程设计编程实例----基于Win32 API编程 厉旭杰、赵汉理编著