创建基于 Win32 的应用程序 (C++)

合集下载

linux gcc编译win32程序

linux gcc编译win32程序

linux gcc编译win32程序如何通过Linux GCC编译Win32程序在跨平台开发中,有时候我们可能需要在Linux操作系统上编译Windows 平台的程序。

虽然Windows和Linux是两种截然不同的操作系统,但是通过使用GCC编译器和一些工具,我们仍然可以完成这个任务。

在本文中,我将向您展示一步一步使用Linux GCC编译Win32程序的过程。

请按照以下步骤进行操作。

步骤1:安装GCC编译器首先,确保您的Linux系统中已经安装了GCC编译器。

如果没有安装,可以通过以下命令在终端中进行安装:shellsudo apt-get install build-essential这条命令将会安装GCC编译器以及相关的开发工具。

步骤2:安装MinGW工具链MinGW是一个在Windows上运行的开发工具链集合,可以用来编译Windows平台的可执行文件。

我们将在Linux上使用MinGW工具链来编译Windows程序。

您可以通过以下命令在终端中进行安装:shellsudo apt-get install mingw-w64这条命令将会安装MinGW工具链。

步骤3:创建Win32交叉编译环境现在,我们需要为GCC编译器创建一个Win32交叉编译环境。

在终端中运行以下命令:shellsudo update-alternatives config x86_64-w64-mingw32-gcc该命令将显示一个列表,列出了可用的编译器版本。

选择与您的系统架构相对应的gcc版本。

按照提示进行选择。

步骤4:编写Win32程序在准备好编译环境后,我们可以开始编写Win32程序。

创建一个C语言源文件,比如"hello.c",并输入以下代码:c#include <windows.h>#include <stdio.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCEhPrevInstance, LPSTR lpCmdLine, int nCmdShow) {MessageBoxA(NULL, "Hello World!", "Hello", MB_OK);return 0;}这是一个简单的Win32程序,用于显示一个消息框。

用C语言写windows窗体程序

用C语言写windows窗体程序

很多学C的朋友认为C语言只能写DOS程序,而不能像C#那样写windows窗体的程序,这你可就打错特错了,今天我来简单掩饰下C语言怎么利用windows提供出来的API写windows窗体程序。

开发工具VC6.0,开发平台windows7。

首先第一步,打开VC,新建工程,选择win32 application,如下图然后新建一个C语言源文件,这个就不截图了,如果这也不会的话相信你也不会来看这篇帖子~呵呵建好文件以后把一下代码输入进去。

编译即可~代码讲解会下帖子下方1.#include <windows.h>2.3.LRESULT CALLBACK Windo WP roc(4. HWND hwnd, //handle to window5. UINT uMsg, //message identifier6. WPARAM wParam, //first message parameter7. LPARAM lParam //second message parameter8. );9.10.11.int WINAPI WinMain(HINSTANCE hInstance,12. HINSTANCE hPrevInstance,13. L PS TR lpCmdLine,14. int nShowCmd15. )//入口函数16.{17. WNDCLASS wndclass;18. HWND wndhwnd;19. MSG msg;20. wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);//加载图标21. wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);//加载鼠标样式22. wndclass.style=CS_VREDRAW | CS_HREDRAW;//窗口样式23. wndclass.lpfnWndProc=WindowProc;//窗口过程回调函数24. wndclass.cbClsExtra=0;//类额外内存25. wndclass.cbWndExtra=0;//窗口额外内存26. wndclass.hInstance=hInstance;//27. wndclass.hbrBackground=(HBRUSH)GetStockObject(SYSTEM_FONT);//窗口颜色28. wndclass.lpszMenuName=NULL;//窗口菜单29. wndclass.lpszClassName="testWindow";//窗口类名30.31. RegisterClass(&wndclass);32. wndhwnd=CreateWindow("testWindow","windows",WS_OVERLAPPEDWINDOW& ~WS_MAXIMIZEBOX,33. CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,34. NULL,NULL,hInstance,NULL);35. ShowWindow(wndhwnd,SW_SHOWNORMAL);36. UpdateWindow(wndhwnd);37. while(GetMessage(&msg,NULL,0,0))38. {39. TranslateMessage(&msg);40. DispatchMessage(&msg);41. }42.43. return 0;44.}45.46.LRESULT CALLBACK WindowProc(47. HWND hwnd, //handle to window48. UINT uMsg, //message identifier49. WPARAM wParam, //first message parameter50. LPARAM lParam //second message parameter51. )52.{53. HDC hdc,hDC;54. PAINTSTRUCT ps;55. char szchar[20];56. static int i=0;57. switch (uMsg)58. {59. case WM_PAINT://窗口重绘消息,窗口加载和重绘的时候产生该消息60. hdc=BeginPaint(hwnd,&ps);61. TextOut(hdc,0,0,"窗口加载完成",strlen("窗口加载完成"));//往窗口输出文本62. //MessageBox(hwnd,"Hello World","Hi",MB_OK);63. EndPaint(hwnd,&ps);64.65. break;66. case WM_CHAR://处理键盘按键消息67. sprintf(szchar,"char is %c",wParam);68. MessageBox(hwnd,szchar,"提示",MB_OK);69. break;70. case WM_LBUTTONDOWN://处理鼠标左键按下消息71. MessageBox(hwnd,"mouse click","提示",MB_OK);72. hDC=GetDC(hwnd);73. TextOut(hDC,0,50,"鼠标事件处理时显示文字",strlen("鼠标事件处理时显示文字"));74. ReleaseDC(hwnd,hDC);75. break;76. case WM_CLOSE://窗口关闭消息77. if(IDYES==MessageBox(hwnd,"你确定要关闭吗?","提示",MB_YESNO))78. DestroyWindow(hwnd);79. break;80. case WM_DESTROY:81. PostQuitMessage(0);82. break;83. default:84. return DefWindowProc(hwnd,uMsg,wParam,lParam);//使用缺省值来调用窗口过程函数85. }86. return 0;87.}复制代码要说明的事,windows程序必须包含的头文件就是windows.h,而程序的入口函数叫做WinMain(dos的入口函数叫main),如果搞不清有几个参数,参数怎么写,可以查阅MSDN,WindowProc函数是窗口过程函数,也就是处理窗口消息的函数;先来看winamin函数内部,首先定义了一个WNDCLASS类型的数据,这个类型是windows 提供出来的结构体,他里面有10个成员。

VS2024使用教程(使用VS2024编写C语言程序)

VS2024使用教程(使用VS2024编写C语言程序)

VS2024使用教程(使用VS2024编写C语言程序)VS2024是微软公司推出的一款集成开发环境,可用于编写和调试各种编程语言的程序,包括C语言。

下面是一份简单的VS2024使用教程,以帮助您快速上手。

1.安装和启动VS2024-按照安装向导的指示完成安装。

-安装完成后,启动VS20242.创建新的C语言项目-在VS2024的启动界面,选择“新建项目”。

- 在弹出的对话框中,选择“Visual C++”栏目下的“Win32控制台应用程序”。

-输入项目名称和保存位置,点击“确定”。

-在后续对话框中,保持默认设置,点击“下一步”。

-在下一个对话框中,勾选“空项目”,然后点击“完成”。

3.编写C语言程序代码-在解决方案资源管理器中,找到“源文件”文件夹,右键点击并选择“添加”->“新建项”。

- 在弹出的对话框中,选择“C++文件(.cpp)”。

- 输入文件名称,如“main.c”,然后点击“添加”。

-在新创建的文件中,输入您的C语言程序代码。

4.构建和运行程序- 点击工具栏上的“生成”按钮(绿色三角形),或者使用快捷键“Ctrl + F5”进行构建。

-如果程序编译成功,控制台窗口将弹出,并显示程序的输出结果。

5.调试程序-在代码中设定断点,用于在调试时暂停程序的执行。

-点击工具栏上的“运行”按钮(红色圆圈),或者使用快捷键“F5”进行调试。

-当程序执行到断点处,程序将暂停执行,您可以检查变量的值、查看堆栈信息等。

-使用调试工具栏上的按钮,如“继续”、“单步执行”等,进行具体的调试操作。

6.运行程序的不同方式-通过命令行参数运行:在VS2024的菜单栏中,选择“调试”->“以命令行参数运行”进行设定。

-通过修改属性设置运行:右键点击项目,选择“属性”->“配置属性”->“调试”进行设置。

7.版本控制和协作-使用VS2024的“解决方案资源管理器”可以对项目进行版本控制,如添加、删除和比较文件等。

如何创建一个最简单的Windows桌面应用程序

如何创建一个最简单的Windows桌面应用程序

如何创建一个最简单的Windows桌面应用程序(C++)最近刚开始学习C/C++开发Windows应用程序,这里将会以零基础的视角把学习过程完全记录下来。

如果你也刚刚起步,那本文一定非常适合你。

进入正题,本文讨论如何使用Visual Studio生成一个最简单的C窗体应用程序,并向用户显示Hello~下面我们一步步来介绍,对于涉及代码的地方,我们只介绍大体的框架,完整的代码会在文章最后给出。

创建基于Win32 的项目1.在文件菜单上,单击新建,然后单击项目。

2.在“新建项目”对话框的左窗格中,依次单击“已安装模板”和“Visual C++”,然后选择“Win32”。

在中间窗格中,选择“Win32 项目”。

在“名称”框中,键入项目名称,例如HelloApp。

单击“确定”。

3.在“Win32 应用程序向导”的欢迎页面中,单击“下一步”。

在“应用程序设置”页的“应用程序类型”下,选择“Windows 应用程序”。

在“附加选项”下,选择“空项目”。

单击“完成”以创建项目。

4.在“解决方案资源管理器”中,右键单击 HelloApp项目,然后依次单击“添加”和“新建项”。

在“添加新项”对话框中选择“C++ 文件(.cpp)”。

在“名称”框中,键入文件名,例如GT_HelloWorldWin32.cpp。

单击“添加”。

添加引用我们的应用程序需要使用许多现有定义才能完成所需功能,针对我们的需求,添加引用如下(其中前两个是必须的):[cpp]view plain copy1.#include <windows.h>2.#include <stdlib.h>3.#include <string.h>4.#include <tchar.h>WinMain函数正如每个C/C++控制台应用程序在起始点必须具有main 函数,每个基于Win32 的应用程序的1.int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);实现WinMain函数时内部逻辑大体相同,主要有以下几部分:1.创建描述窗体信息的窗口类结构WNDCLASSEX如何创建一个WNDCLASSEX 类型的窗口类结构?下面的代码演示了一个典型的窗口类结构WNDCLASSEX 的定义:[cpp]view plain copy1.//创建 WNDCLASSEX 类型的窗口类结构。

创建第一个C++Win32控制台应用程序

创建第一个C++Win32控制台应用程序

创建第一个C++的Win32控制台应用程序
1.打开VS2008,依次选择菜单:文件--→新建--→项目。

2.在新建项目窗口中,依次选择项目类型中的其他语言--→Visual C++ ----→Win32,选择模板中的Win32控制台应用程序。

在名称栏中输入项目名称 Win32ConsoleApplicaiton,项目所在位置可单击浏览按钮选择目录位置。

选择完毕后,单击确定按钮。

3.在Win32应用程序向导中单击“下一步”
4.不用修改任何选项,单击“下一步”
5. 右侧是解决方案的资源管理器,双击文件名可以打开相应文件。

找到相应的main函数。

6.在main函数中输入相应的代码。

7.stdafx.h的作用,当我们使用AppWizard来自动生成某些项目的时候,系统会自动把所需要include的头文件在stdafx.h中先include一下,这样,我们只需要直接include这个stdafx.h文件即可.因为同一个项目中的不同源文件CPP都包含相同的include文件,这样,为每个.CPP文件都重复include这些文件就显得很傻了。

所以,在stdafx.h中填写头部文件。

在有main函数的文件中在添加代码:#include “stdafx.h”
即可。

8.按“Ctrl+F5”可以查看运行结果。

如果按F5或单击工具栏中的“”可以进行调试,
但无法保留最终运行结果。

实验01 创建 Win32 应用程序

实验01 创建 Win32 应用程序

实验一、创建 Win32 应用程序Win32 API(也称为 Windows API)是用于创建 Windows 应用程序的基于 C 的框架,自 Windows 1.0 以来就已存在。

在Windows API中可以找到有关此 API 的大量文档。

在本过程中,我们将创建向窗口显示“Hello, World!”的简单 Win32应用程序。

过程中的步骤对于所有 Win32 应用程序都是相同的。

完成此过程后,您可以将这里创建的代码用作创建任何其他 Win32 应用程序的主干。

创建新的 Win32 项目1.在“文件”菜单上,单击“新建”,然后单击“项目...”。

2.在“项目类型”窗格中,选择“Visual C++”节点中的“Win32”,然后在“模板”窗格中选择“Win32 项目”。

键入项目的名称,如win32app。

您可以接受默认位置、键入一个位置或者导航到要保存项目的目录。

3.在“Win32 应用程序向导”中,选择“下一步”。

4.在“Win32 应用程序向导”中,在“应用程序类型”下选择“Windows 应用程序”。

在“附加选项”下选择不要勾选“空项目”。

原样保留剩余的选项。

单击“完成”创建项目。

5.在“生成”菜单中选择“生成解决方案”。

6.在“调试”菜单中选择“启动调试”。

观察程序的运行效果。

在所给"WinUI.chm"//windows下的标准帮助文件格式文件中查找RegisterClassEx、CreateWindow、ShowWindow等函数的文档,在所给"GDI.chm"中查找UpdateWindow等函数的文档。

并按要求修改源程序。

1、将窗口标题中的字符修改为"这是我的第一个窗口":在资源视图-->String table 中修改IDS_APP_TITLE的内容;2、修改窗口的图标(右上角)和最小化时的图标:在资源视图-->icon文件夹上右键菜单点击插入资源,在弹出窗口中选择icon,然后导入资源,选择两个不相同的图标(ico)文件,在属性窗口中修改资源ID;修改窗口类注册处的两个LoadIcon 函数中的ID,编译运行,观察左上角的图标和最小化的图标。

基于Win32的应用软件本地化分析设计

基于Win32的应用软件本地化分析设计

关键词 : 本地化 ; n 2 资源文件 ; 态链接库 ; Wi3 ; 动 XML
中圈分类号:P 1 . T 31 2 5
文献标识码: A
文章编号:09 3 4 (063 - 12 O 10— 042 0)5 07 ~ 4
W U Ch n e
An lss& De ino f r o aiain B s d o i3 piain ay i sg fSot eL c l t a e nW n 2 Ap l t wa z o c o
维普资讯

多媒体 技术 及其 应 用 . . . .
本 目 任 辑: 桂 栏 贺编 李瑾
基于 Wi3 n 2的应用软件本地化分析设计
臭 晨
( 同济 大 学软 件 学 院 , 海 2 10 ) 上 0 8 4
摘 要 : 着信 息技 术 和 软 件 工 程 的发 展 。 随 软件 本 地 化 技 术 越 来越 得 到软 件 开 发 者 的重 视 。 别是 对 于面 向全 球 市 场的 软 件 产 品 , 特 本地 化 是 软 件 开 发 中, 可 少 的过 程 。 本 地 化 最核 心 的 问题 就是 对 多 个 国 家地 区语 种和 使 用 习惯 的 支持 , 文 从 一个 基 于 W i3 资 源 文 必不 本 n 2的 件 剖 析 出发 , 析 和 比 较 现 有 的 本 地化 方式 。 改进 设 计 一 种 新 的 本地 化 方 法 。 分 并
ia o h r cs o a t gapo u tt p c clcl a g aea la utr o's I Is rce wes r f m i3 eo re zt n i tep o es f d pi r d c oasei o a ln u g swe sc l a n r l n ti at l, i s a n i f l ul K . l i t tr a o aW n 2rsu c i 。 h n a a z n o aetee i dme d fl az t n a h n ;wed s n a d i lme ta fce tmeh d o cl a o c fe te n y ea d c mp r h xse to so cl a o 。 ttee d l l t h o i i ei n mpe n n e iin to fl ai t n a- g o zi c rigt h h rce sc f odn t ec aatr t so XM L O ii 。

windows环境下32位汇编语言程序设计附书代码

windows环境下32位汇编语言程序设计附书代码

windows环境下32位汇编语言程序设计附书代码汇编语言是一种底层计算机语言,用于编写与计算机硬件直接交互的程序。

在Windows环境下,可以使用32位汇编语言进行程序设计。

本文将介绍一些常见的32位汇编语言程序,并附带相关的代码示例。

1.程序的基本结构:在32位汇编语言中,程序的基本结构由三个部分组成:数据段、代码段和堆栈段。

数据段用来声明和初始化程序中使用的全局变量和常量。

例如,下面的代码段声明了一个全局变量message,存储了一个字符串。

```data segmentmessage db 'Hello, World!',0data ends```代码段包含了程序的实际执行代码。

下面的代码段使用`mov`指令将message变量中的字符串存储到寄存器eax中,并使用`int 21h`来调用MS-DOS功能1来显示字符串。

```code segmentstart:mov eax, offset messagemov ah, 09hint 21hmov ah, 4chint 21hcode ends```堆栈段用来存储函数调用过程中的局部变量和返回地址。

2.入栈和出栈操作:在程序中,我们经常需要使用堆栈来保存和恢复寄存器的值,以及传递函数参数和保存函数返回值。

以下是一些常用的堆栈操作指令: ```push reg ;将reg中的值压入堆栈pop reg ;将堆栈顶部的值弹出到reg中```下面的示例演示了如何使用堆栈来保存和恢复寄存器的值:```code segmentstart:push eax ;将eax保存到堆栈mov eax, 10 ;设置eax的值为10pop ebx ;将堆栈顶部的值弹出到ebxadd eax, ebx ;将eax和ebx相加int 3 ;调试中断,用于程序的暂停mov ah, 4chint 21hcode ends```3.条件判断和跳转指令:汇编语言中的条件判断和跳转指令用于根据条件的成立与否来改变程序的执行流程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Visual C++ 指导教程创建基于Win32 的应用程序(C++)Visual Studio 2010其他版本5(共7)对本文的评价是有帮助评价此主题更新:2010 年12 月本演练演示如何创建基于Win32 的简单基本应用程序,该应用程序在窗口中显示“Hello, World!”。

您可以使用在此演练中开发的代码作为创建其他基于Win32 的应用程序的模式。

Win32 API(也称为Windows API)是用于创建Windows 应用程序的基于C 的框架。

有关Win32 API 的更多信息,请参见Windows API。

重要事项为了可以更加清楚地说明本文档内各步骤中的特定代码段,我们可能会省略一个有效应用程序所必需的某些代码语句,例如include 指令和全局变量声明。

本文档末尾的示例一节显示了完整代码。

系统必备若要完成本演练,您必须了解C++ 语言的基础知识。

如果您是刚开始学习C++,建议您参阅Herb Schildt 编写的“C++ Beginner's Guide”(《C++ 初学者指南》),MSDN 网站上的初学者开发人员学习中心提供了该指南。

有关视频演示,请参见Visual Studio 2008 文档中的Video How to: Creating Win32 Applications (C++)(视频帮助:创建Win32 应用程序(C++))。

创建基于Win32 的项目1.在“文件”菜单上,单击“新建”,然后单击“项目”。

2.在“新建项目”对话框的左侧窗格中,单击“已安装的模板”,单击“Visual C++”,然后选择“Win32”。

在中间窗格中,选择“Win32 项目”。

在“名称”框中,键入项目名称,例如win32app。

单击“确定”。

3.在“Win32 应用程序向导”的“欢迎”页上,单击“下一步”。

4.在“应用程序设置”页上的在“应用程序类型”下,选择“Windows 应用程序”。

在“附加选项”下,选择“空项目”。

单击“完成”创建项目。

5.在“解决方案资源管理器”中,右击Win32app 项目,单击“添加”,然后单击“新建项”。

在“添加新项”对话框中选择“C++ 文件(.cpp)”。

在“名称”框中,键入文件名称,例如GT_HelloWorldWin32.cpp。

单击“添加”。

启动基于Win32 的应用程序1.就像每个C 应用程序和C++ 应用程序都以main函数作为起点那样,每个基于Win32的应用程序同样必须要有WinMain函数。

WinMain具有以下语法。

复制int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow);有关此函数的参数和返回值的信息,请参见WinMain 函数。

2.由于应用程序代码必须使用现有定义,因此应将include 语句添加到文件中。

复制#include <windows.h>#include <stdlib.h>#include <string.h>#include <tchar.h>3.除WinMain函数外,每个基于Win32 的应用程序还必须具有一个窗口过程函数。

此函数通常名为WndProc。

WndProc具有以下语法。

复制LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);此函数处理应用程序从操作系统接收的许多消息。

例如,在具有对话框(该对话框中有一个“确定”按钮)的应用程序中,如果用户单击该按钮,操作系统就会向该应用程序发送一条消息,告知已单击该按钮。

WndProc负责响应该事件。

在此示例中,相应的响应可能是关闭该对话框。

有关更多信息,请参见窗口过程。

向WinMain 函数添加功能1.在WinMain函数中,创建WNDCLASSEX类型的窗口类结构。

此结构包含有关该窗口的信息,例如,应用程序图标、窗口的背景色、要在标题栏中显示的名称、窗口过程函数的名称等等。

下面的示例演示一个典型WNDCLASSEX结构。

复制WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_A PPLICATION));wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = NULL;wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE (IDI_APPLICATION));有关此结构的各字段的信息,请参见WNDCLASSEX。

2.现在您已经创建一个窗口类,接下来必须将其注册。

使用RegisterClassEx函数,并将窗口类结构作为参数进行传递。

复制if (!RegisterClassEx(&wcex)){MessageBox(NULL,_T("Call to RegisterClassEx failed!"),_T("Win32 Guided Tour"),NULL);return 1;}3.现在可以创建一个窗口。

使用CreateWindow函数。

复制static TCHAR szWindowClass[] = _T("win32app");static TCHAR szTitle[] = _T("Win32 Guided Tour Application");// The parameters to CreateWindow explained:// szWindowClass: the name of the application// szTitle: the text that appears in the title bar// WS_OVERLAPPEDWINDOW: the type of window to create// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)// 500, 100: initial size (width, length)// NULL: the parent of this window// NULL: this application does not have a menu bar// hInstance: the first parameter from WinMain// NULL: not used in this applicationHWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,500, 100,NULL,NULL,hInstance,NULL);if (!hWnd){MessageBox(NULL,_T("Call to CreateWindow failed!"),_T("Win32 Guided Tour"),NULL);return 1;}此函数返回HWND,它是某个窗口的句柄。

有关更多信息,请参见Windows 数据类型。

4.现在,使用下列代码来显示窗口。

复制// The parameters to ShowWindow explained:// hWnd: the value returned from CreateWindow// nCmdShow: the fourth parameter from WinMainShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);此时,所显示的窗口不会有太多内容,因为您尚未实现WndProc函数。

5.现在添加一个消息循环以侦听操作系统发送的消息。

如果应用程序收到一条消息,则此循环会将该消息调度至WndProc函数以接受处理。

消息循环类似于下列代码。

复制MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return (int) msg.wParam;有关消息循环中各结构和函数的更多信息,请参见MSG、GetMessage、TranslateMessage 和DispatchMessage。

此时,WinMain函数应与下列代码类似。

复制int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){WNDCLASSEX wcex;wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;wcex.lpfnWndProc = WndProc;wcex.cbClsExtra = 0;wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_A PPLICATION));wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);wcex.lpszMenuName = NULL;wcex.lpszClassName = szWindowClass;wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));if (!RegisterClassEx(&wcex)){MessageBox(NULL,_T("Call to RegisterClassEx failed!"),_T("Win32 Guided Tour"),NULL);return 1;}hInst = hInstance; // Store instance handle in our global vari able// The parameters to CreateWindow explained:// szWindowClass: the name of the application// szTitle: the text that appears in the title bar// WS_OVERLAPPEDWINDOW: the type of window to create// CW_USEDEFAULT, CW_USEDEFAULT: initial position (x, y)// 500, 100: initial size (width, length)// NULL: the parent of this window// NULL: this application dows not have a menu bar// hInstance: the first parameter from WinMain// NULL: not used in this applicationHWND hWnd = CreateWindow(szWindowClass,szTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT,500, 100,NULL,NULL,hInstance,NULL);if (!hWnd){MessageBox(NULL,_T("Call to CreateWindow failed!"),_T("Win32 Guided Tour"),NULL);return 1;}// The parameters to ShowWindow explained:// hWnd: the value returned from CreateWindow// nCmdShow: the fourth parameter from WinMainShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);// Main message loop:MSG msg;while (GetMessage(&msg, NULL, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}return (int) msg.wParam;}向WndProc 函数添加功能1.若要启用WndProc函数来处理应用程序所收到的消息,请实现switch 语句。

相关文档
最新文档