中国石油大学(华东)VC++实验2_中国石油大学华东

2020-02-28 其他范文 下载本文

中国石油大学(华东)VC++实验2由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“中国石油大学华东”。

实验二 熟悉 Windows 源程序基本结构

一、实验目的(1)熟悉Visual C++ 6.0开发环境;

(2)熟悉Windows系统事件驱动的运行机制;(3)熟悉Windows应用程序源程序基本结构;

二、实验内容

创建一个空白的 Win32 Application 应用程序,建立相关文件,手工输入下列 代码,实现一个 Windows 窗口程序。

#include “windows.h”

LRESULT CALLBACK WndProc(HWND hwnd,UINT megae, WPARAM wParam,LPARAM lParam);

int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow){

WNDCLASS ws;HWND hWnd;MSG msg;ws.style = 0;

ws.lpfnWndProc = WndProc;ws.cbClsExtra = 0;ws.cbWndExtra = 0;

ws.hInstance = hThisInst;

ws.hIcon = LoadIcon(NULL, IDI_HAND);

ws.hCursor = LoadCursor(NULL,IDC_CROSS);

ws.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);ws.lpszMenuName = NULL;

ws.lpszClaName = “DemoCla”;if(!RegisterCla(&ws)){

return-1;}

hWnd = CreateWindow(“DemoCla”,“My First Windows Program”, WS_OVERLAPPEDWINDOW,100,200,640,480, NULL,NULL,hThisInst,NULL);ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);

while(GetMeage(&msg,NULL,0,0)){

TranslateMeage(&msg);DispatchMeage(&msg);}

return msg.wParam;}

LRESULT CALLBACK WndProc(HWND hwnd,UINT megae, WPARAM wParam,LPARAM lParam){

switch(megae){

case WM_DESTROY: PostQuitMeage(0);break;default:

return DefWindowProc(hwnd,megae,wParam,lParam);}

return 0;}

三、实验报告

(1)列出源程序清单,以及程序的运行结果;

#include “windows.h” LRESULT CALLBACK WndProc(HWND hwnd,UINT megae,WPARAM wParam,LPARAM lParam);

//LRESULT处理消息产生的一个有符号值 //WndProc窗口过程 扩充 窗口函数 //UINT无符号整型 //WPARAM消息类型

//LPARAM传递参数

int WINAPI WinMain(HINSTANCE hThisInst, HINSTANCE hPrevInst,LPSTR lpszCmdLine, int nCmdShow)//WINAPI函数

//HINSTANCE标示当前实例句柄 //LPSTR字符串

{ WNDCLASS ws;//WNDCLASS窗口类

HWND hWnd;MSG msg;ws.style = 0;ws.lpfnWndProc = WndProc;//WNDCLASSEX 中最重要的成员莫过于lpfnWndProc了。前缀 lpfn 表示该成员是一个指向函数的长指针 ws.cbClsExtra = 0;//cbClsExtra Specifies the amount of extra memory, in bytes, that Windows should reserve for the cla.ws.cbWndExtra = 0;//cbWndExtra Specifies the amount of extra memory, in bytes,//that Windows should reserve for each window in the cla.懒得翻译了,自己看吧 ws.hInstance = hThisInst;ws.hIcon = LoadIcon(NULL, IDI_HAND);//LoadIcon图标//hIcon图标句柄//NULL空操作语句//IDI_HAND 手形图标 ws.hCursor = LoadCursor(NULL,IDC_CROSS);//hCursor光标句柄

//LoadCursor该函数从一个与应用事例相关的可执行文件(EXE文件)中载入指定的光标资源 //IDC_CROSS 十字光标

ws.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);//hbrBackground是主窗口背景色,调用CreateWindow时创建的客户区默认使用的就是窗口背景色

//HBRUSH画刷句柄//GetStockObject取得一个图形对象//WHITE_BRUSH白色背景 //通过函数来设置一个一个白色的背景,这里大家设置为NULL看看,会很有趣的 ws.lpszMenuName = NULL;//wndcla里的lpszMenuName的类型问题 ws.lpszClaName = “DemoCla”;//DemoCla试讲 if(!RegisterCla(&ws))//RegisterCla注册窗口类

{ return-1;} hWnd=CreateWindow(“DemoCla”,“MyFirstWindowsProgram”,WS_OVERLAPPEDWINDOW,100,200,640,480,NULL,NULL,hThisInst,NULL);//WS_OVERLAPPEDWINDOW可以创建一个拥有各种窗口风格的窗体,包括标题,系统菜单,边框,最小化和最大化按钮等。ShowWindow(hWnd,nCmdShow);//参数 nCmdShow 指定程序的窗口应该如何显示,例如最大化、最小化、隐藏等。UpdateWindow(hWnd);while(GetMeage(&msg,NULL,0,0)){ TranslateMeage(&msg);//该函数将虚拟键消息转换为字符消息

DispatchMeage(&msg);//函数功能:该函数分发一个消息给窗口程序。} return msg.wParam;} LRESULT CALLBACK WndProc(HWND hwnd,UINT megae,WPARAM wParam,LPARAM lParam)//自定义消息处理函数都要求返回LRESULT,如果返回值不需要处理,可直接返回0即可。如果改消息需要返回特殊值,//就看程序的需要进行返回相应的值。{ switch(megae){ case WM_DESTROY: //在发送 WM_QUIT消息时,要使用PostMeage发送,否则,窗口已经关闭,但任务管理器中进程还存在。PostQuitMeage(0);//PostQuitMeage仅仅让消息循环退出,多数情况下消息循环退出后进程也该退出了。//使用这种方式能让系统处理完所有的消息,并有机会释放各种资源。break;default: return DefWindowProc(hwnd,megae,wParam,lParam);//函数功能:该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理。

//该函数确保每一个消息得到处理。调用DefWindowProc函数时使用窗口过程接收的相同参数。

//函数原型:LRESULT DefWindowProc(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM IParam); } return 0;} 程序运行结果如下:下图为鼠标没有在框内的情况。

下图为鼠标指向框内的结果。

(2)总结 Windows 源程序的结构特点,说明各个主要程序段的作用;

Windows 源程序的结构特点:图形界面,面向对象程序设计,事件驱动,高效的内存管理,设备独立性动态连接。WINDOWS程序设计的特点: 传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。一个程序是一系列预先定义好的操作序列的组合,它具有一定的开头、中间过程和结束。程序直接控制程序事件和过程的顺序。这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。

事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。

对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件。

各个主要程序段的作用:主要程序的作用已在程序清单的注释中写出。(3)总结实验的心得体会,实验中遇到的困难以及解决的方法等。

这次试验,程序跟第一次的试验程序相差很大。第一次的程序是水鲜花的程序,用C语言编写的,能看明白。而这一次的就不行了,真正的用到了老师上课讲的知识了。很多固有的函数名,很多程序段,都看不明白,还得看看书,问问百度,自己理解。

老师上课讲了,自己也不太明白,上实验课,正好是自己理解和吸收课堂知识的时候。这个时间我要好好利用,争取理解好老师讲的知识。

其实,还是有很多的程序不太明白,还得自己问老师,问同学。VC++说实话,跟C++完全不一样,这是我的感觉,因为,很多的函数名,符号,都跟C++不一样,上课,听的头有些大。

但是,我会好好理解的,因为这门课对我以后的编程序很重要。

《中国石油大学(华东)VC++实验2.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
中国石油大学(华东)VC++实验2
点击下载文档
相关专题 中国石油大学华东 中国 石油大学 VC 中国石油大学华东 中国 石油大学 VC
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文