Windows下的C和C++编程(MFC基本入门级).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Windows下的C和C++编程(MFC基本入门级).doc》由会员分享,可在线阅读,更多相关《Windows下的C和C++编程(MFC基本入门级).doc(41页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Windows下的C/C编程Windows下的C/C编程对于任何一种编程语言,都会以一个最基本的程序入门,就是大家都很熟悉的Hello World。那么,我们也从这里开始吧。最简单的Windows程序1)TC中的Hello World相信对于下面的Turbo C 程序大家都不会陌生,这就是最简单的TC经典入门程序:include main( )prinft(“ Hello World !”);这个程序将在DOS模式中输出“Hello World”。2)最简单的Windows下的Hello World其实,下面的程序并不是标准的Windows应用程序,它不产生传统意义上的窗口,而只是跳出一个对话
2、框。让我们详细的操作一下:首先从开始菜单中选择Microsoft Visual C+ 6.0(其他版本也行);(见图1-1)图1-1 Microsoft Visual C+ 6.0然后通过File菜单中的new选项新建一个工程。在Projects选项中选择Win32 Application;然后指定工程名,这里是:Hello World;再指定存储路径,这里是D:DirectX8.0游戏编程;最后点击OK。(见图1-2)图1-2 Projects选项Win32 Application下面出现以下窗口,选择An empty project;点击OK。(见图1-3)图1-3 An empty pr
3、oject这样,就创建了一个空的工程,工程名为Hello World,存储路径为D:DirectX8.0游戏编程下的Hello World文件夹。下一步,在空的工程中加入C语言的源程序文件。在Visual C+ 6.0的File菜单中选择new选项;在弹出的File菜单中选择C Source File;选中Add to project 选框;选中加入到那个工程中,这里是Hello World,就是刚才创建的工程;填写文件,这里是Hello World,下面是工程的存放路径;最后,选择OK。(见图1-4)图1-4工程的存放路径这样,就在刚才的空工程中加入了一个文件,可以在Vc的FileView框
4、中看到它,右边是它的编辑框,在那里编写源程序。(见图1-5)图1-5Vc的编辑框那么,加入如下代码:#include int WINAPI WinMain ( HINSTANCE hInstance ,HINSTANCE hPrevInstance , LPSTR lpcmdLine ,int nCmdShow) MessageBox ( NULL , TEXT(Hello World!) ;TEXT(My 1st Program) , MB_OK) ; return 0 ;然后,选择执行,或者直接按F5键。就会得到如下的执行结果:一个弹出的对话框(见图1-6)。图1-6 Hello Worl
5、d弹出框3)程序分析和TC程序比较,这个Windows程序基本相同。包含了头文件,有一个主函数,在主函数中调用了一个系统函数,主函数返回一个整数值。每个语句以分号结束,复合语句用大括号包含。下面对它进行详细的分析。4)程序的参数下面,对上面的程序的参数从上至下进行分析。 #include程序包含了一个头文件windows.h ,基本上所有的Windows程序都会包含这个文件。它定义了Windows的基本数据类型、数据结构、系统函数等。 int WINAPI WinMain Tc中的程序是以main函数为程序入口的,而Windows程序是以WinMain函数为入口的,这个函数的定义如下:函数原型
6、int WINAPI WinMain ( HINSTANCE hInstance ,HINSTANCE hPrevInstance ,LPSTR lpcmdLine ,int nCmdShow);第一个参数hInstance是当前实例句柄,为一个整数,用于标识窗口、程序等。第二个参数hPrevInstance 被置为NULL。第三个参数lpcmdLine是运行程序的命令行。第四个参数nCmdShow用于指定程序窗口最初的显示模式,可以在初始是指定是正常还是最大化等。WinMain函数返回一个整数。WINAPI用于指定调用约定,具体在WINDEH.H中定义。 MessageBox Message
7、Box是一个Windows API函数,用于弹出一个对话框,显示一些简短的信息。定义如下:函数原型MessageBox ( HWND hWnd , LPCTSTR lpText ,LPCTSTR lpCaption ,UINT uType ) ; 第一个参数hWnd是一个窗口句柄,表明对话框所属的窗口。第二个参数lpText是一个字符串,表明需要显示的信息。TEXT是一个宏。第三个参数lpCaption是一个字符串,表明对话框的标题。第四个参数uType用于指定对话框中的按钮和图标。(见表1-1)各种按钮和图标类型可以同时使用,用“ | ”连接,如“MB_OK | MB_ERROR” 。类型按
8、钮图标MB_OK确定-MB_OKCANCEL确定和取消-MB_YESNO是和否-MB_INFORMATION-提示MB_WARNING-警告MB_ERROR-出错表1-1按钮和图标试一试注意试试让系统弹出不同的对话框 Windows应用程序1)真正的Hello World上一节中,实现了Windows弹出一个对话框,显示了一个简短的信息“Hello World”。但是,这和平时看到的大多数Windows应用程序不太一样,没有窗口,没有最大化、最小化按钮等。虽然如此,它还是相当重要的,特别在显示出错或提示信息时尤为简便。下面,来看一看一个真正的Windows窗口程序。同样,创建一个新的工程,这里
9、是Hello World Windows(见图1-7): 图1-7Hello World Windows工程然后加入一个新的C源文件(其实可以看成是C源文件,只是换了后缀名),文件名为Win Hello World。下面是程序的代码。注意要利用空格和回车,还要注意程序代码的缩进,这样才能保证代码的可读性,同时也会方便修改:#includeLRESULT CALLBACK WndProc (HWND , UINT , WPARAM , LPARAM ) ;int WINAPI WinMain ( HINSTANCE hInstance ,HINSTANCE hPrevInstance, LPST
10、R lpcmdLine , int nCmdShow)static TCHAR szAppName = TEXT( HelloWorld ) ;static TCHAR szClassName = TEXT( HelloWorldClass );HWND hwnd ;MSG msg ;WNDCLASS wndclass ;wndclass. style = CS_HREDRAW | CS_VREDRAW ;wndclass. lpfnWndProc = WndProc ;wndclass. cbClsExtra = 0 ;wndclass. cbWndExtra = 0 ;wndclass.
11、hInstance = hInstance ;wndclass. hIcon = LoadIcon ( NULL , IDI_APPLICATION) ;wndclass. hCursor = LoadCursor ( NULL , IDC_ARROW) ;wndclass.hbrBackground = ( HBRUSH ) GetStockObject ( WHITE_BRUSH ) ;wndclass. LpszMenuName = NULL ;wndclass. lpszClassName = szClassName;if ( ! RegisterClass ( & wndclass
12、) )MessageBox ( NULL , TEXT ( This programrequires Windows NT !) , szAppName , MB_ICONERROR ) ;return 0 ;hwnd = CreateWindow ( szClassName ,TEXT(My Hello World to Windows Program) , WS_OVERLAPPEDWINDOW ,CW_USEDEFAULT ,CW_USEDEFAULT ,CW_USEDEFAULT ,CW_USEDEFAULT ,NULL ,NULL ,hInstance ,NULL ) ;ShowWi
13、ndow (hwnd , nCmdShow ) ;UpdateWindow ( hwnd ) ;while ( GetMessage ( & msg , NULL , 0 , 0 ) )TranslateMessage ( &msg ) ;DispatchMessage ( &msg) ;return msg. wParam ;LRESULT CALLBACK WndProc ( HWND hwnd , UINT message ,WPARAM wParam ,LPARAM lParam )HDC hdc ;PAINTSTRUCT ps ;RECT rect ;switch ( message
14、 )case WM_CREATE :MessageBox( NULL , HelloWorld! , Hello World , MB_OK) ; MessageBeep ( MB_OK ) ; return 0 ;case WM_PAINT:hdc = BeginPaint ( hwnd , &ps ) ;GetClientRect ( hwnd , &rect ) ;DrawText ( hdc , TEXT ( Hello , Windows !) , -1 , &rect ,DT_SINGLELINE | DT_CENTER| DT_VCENTER) ;EndPaint ( hwnd
15、, &ps ) ;return 0 ;case WM_DESTROY :PostQuitMessage ( 0 ) ;return 0 ;return DefWindowProc ( hwnd , message , wParam , lParam ) ;运行这个程序,将得到如下结果:首先弹出一个对话框,并且伴随一个很熟悉的“当”的一声(见图1-8):图1-8 Hello World弹出框点击确定以后,关闭这个对话框,打开了一个Windows窗口(见图1-9):图1-9 Windows窗口这个窗口大家因该很熟悉了吧。一个标准的Windows窗口,可以最大化、最小化、拖动等。好,接下来仔细分析一
16、下整个程序的代码。当然,没有必要去记住这些所有的代码,基本上也没有人记得住,以后在使用的时候,可以直接复制过去,然后作相应的修改就行了。2) Windows类在程序分析之前,先说明一些基本的新的东西。 数据类型在这里,出现了一些在TC中没有见过的数据类型。这些是Windows程序的一些常见数据类型。基本上,它们的命名与相应的英文含义相同,或是在前面加上表示类型的字母,如32位的类型加上L,不过部分因为Windows版本的变迁而失去了原来的意义,只是沿用以前的名字。详细的说明以后会慢慢熟悉,下面列举了一些常用的前缀和表达的意义(见表1-2):前缀表示的数据类型ccharbyBYTE (无符号字符
17、)nshortx、yint (表示x坐标和y坐标)cx、cyint (表示x方向长度,y方向长度)wWORDlLONGppointer (指针)szstring ended with zero (以0结尾的字符串)sstringdwDWORDfnFunction (函数)bBOOL (int)表1-2常用的前缀 函数这里,除了MessageBox之外,还有一些Windows API函数,下面列表说明(见表1-3):API函数作用LoadIcon加载程序图标LoadCursor加载鼠标GetStockObject获取图形设备对象RegisterClass注册窗口类CreateWindow创建窗口
18、ShowWindows显示窗口UpdateWindow刷新窗口GetMessage从消息队列中获取消息TranslateMessage转换消息DispatchMessage发送消息MessageBeep发出系统声音BeginPaint开始在用户区绘制GetClientRect取得用户区DrawText显示文本EndPaint结束绘制PostQuitMessage插入推出消息DefWindowProc执行缺省的消息处理表1-3 Windows API函数好,现在来看看Windows类。Windows窗口类规定了窗口的一些基本特征,如显示方式、名称、风格等等。创建的窗口是属于窗口类的一个具体的实例
19、,由窗口类可以创建多个窗口。就像房子的窗户一样,窗户类定义了窗户是用来采光、通风的、有一个外框、可以用一些材料封闭等;而窗户就是一个个窗户类的实例,当然,窗户有很多种,但是它们的基本特征就是上面所说得。就像在房子上开一个窗户要准备一些材料、工具一样,在创建一个Windows窗口之前有一系列准备工作,要为窗口注册一个窗口类,告诉Windows希望创建一个什么样的窗口。RegisterClass函数用于注册窗口类,它的定义如下:函数原型ATOM RegisterClass(const WNDCLASS *lpWndClass);如果调用成功,返回一个非零值,ATOM数据类型保证其返回的值在系统中是
20、唯一的;调用失败,返回零。RegisterClass函数的参数只有一个,是一个指向WNDCLASS数据类型的指针,WNDCLASS数据类型是一个结构,Windows有一个通用的定义:typedef struct _WNDCLASSUNIT style ;WNDPROC lpfnWndProc ;Int cbClsExtra ;Int cbWndExtra ;HINSTANCE hInstance ;HICON hIcon ;HCURSOR hCursor ;HBRUSH hbrBackground;LPCTSTR lpszMenuName;LPCTSTR lpszClassName ; WND
21、CLASS ;看到这里大家因该想到些什么了吧。对了!在创建窗口之前要注册窗口,在注册窗口之前,就是要填充上面这个结构。下面,一项项看: 首先,定义了一个WNDCLASS结构:WNDCLASS wndclass ;下面就填充这个结构 wndclass. style = CS_HREDRAW | CS_VREDRAW ;表示当窗口的水平方向或垂直方向的大小发生变化时,完全刷新窗口,这使得Hello , Windows !一直位于窗口的正中心。 wndclass. lpfnWndProc = WndProc ;设置窗口函数为WndProc。这个函数处理窗口里的所有消息。 wndclass. cbCl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows C+ 编程 MFC 基本 入门
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内