为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

vc可视化实验一

2020-03-08 10页 doc 25KB 2阅读

用户头像

is_682974

暂无简介

举报
vc可视化实验一实验一:HelloWorld程序的实现 一:实验目的 ● 掌握Windows程序基本的运行原理。 ● 学会编写简单的Windows程序。 二:实验内容 ● 用Windows API(SDK)实现图形化HellowWorld程序。 ● 用MFC类库实现图形化HellowWorld程序。 三:实验步骤及源代码 ● 用Windows API(SDK)实现HellowWorld程序 实验步骤: ? 打开VS2008,从File菜单中选择New,单击Project标签,选择Win32 Application,输入项目名称和工程存放目录...
vc可视化实验一
实验一:HelloWorld程序的实现 一:实验目的 ● 掌握Windows程序基本的运行原理。 ● 学会编写简单的Windows程序。 二:实验内容 ● 用Windows API(SDK)实现图形化HellowWorld程序。 ● 用MFC类库实现图形化HellowWorld程序。 三:实验步骤及源代码 ● 用Windows API(SDK)实现HellowWorld程序 实验步骤: ? 打开VS2008,从File菜单中选择New,单击Project标签,选择Win32 Application,输入项目名称和工程存放,点击确定后出现3中选择,在此选择创建一个空的工程,点击工程的File View,向Source Files中添加源文件,然后编写代码。 1.windows程序的入口函数: int WINAPI WinMain( HINSTANCE hInstance,      // 应用程序当前示例句柄 HINSTANCE hPrevInstance,  // 应用程序其他实例句柄 LPSTR lpCmdLine,          // 指向程序命令行参数的指针 int nCmdShow              //应用程序开始执行时窗口显示方式的整数值标识 ) 2. 窗口的创建: 创建一个完整的窗口需要经过下面四个操作步骤: <1>.设计一个窗口类: WNDCLASS类(结构体),定义如下: typedef struct _WNDCLASS { UINT      style;      //窗口风格 WNDPROC    lpfnWndProc; //窗口过程 int        cbClsExtra;  //扩展空间 int        cbWndExtra;  //扩展空间 HINSTANCE  hInstance;  //实例句柄 HICON      hIcon;      //图标设置 HCURSOR    hCursor;    //光标设置 HBRUSH    hbrBackground; //窗口背景颜色 LPCTSTR    lpszMenuName;  //窗口类菜单 LPCTSTR    lpszClassName; //窗口类文本名称 } WNDCLASS, *PWNDCLASS; 用WNDCLASS定义一个窗口变量,然后依次初始化起它的每一个成员,注意:第二个成员变量lpfnWndProc指定了这一类型窗口的过程函数(函数名可以作为该函数的首地址),也称回调函数。每一种不同类型的窗口都有自己专用的回调函数。 <2>.注册窗口类:调用RegisterClass()函数注册窗口,函数原型如下: ATOM RegisterClass( CONST WNDCLASS *lpWndClass ); <3>.创建窗口:调用CreateWindow()函数创建窗口,函数原型如下: HWND CreateWindow( LPCTSTR lpClassName,  // 窗口类名 LPCTSTR lpWindowName, // 窗口标题名 DWORD dwStyle,        // 窗口的样式 int x,                // 窗口左上角坐标 int y,                // 窗口左上角坐标 int nWidth,          //窗口的宽度 int nHeight,          // 窗口的高度 HWND hWndParent,      // 该窗口的父窗口句柄 HMENU hMenu,          // 窗口主菜单句柄 HINSTANCE hInstance,  // 创建窗口的应用程序当前句柄 LPVOID lpParam        // 指向一个传递给窗口的参数值的指针 ); <4>.显示及更新窗口: 在CreateWindow()调用返回后,Windows已经分配了一块内存,用于保存创建窗口的全部信息,然而窗口并未在显示器上显示,所以需要调用ShowWindow()函数显示窗口和UpdateWindow()更新窗口,两个函数原型分别为: BOOL ShowWindow( HWND hWnd,    // 窗口句柄 int nCmdShow  // 窗口显示形式标识 ); BOOL UpdateWindow( HWND hWnd    // 窗口句柄 ); 4.消息循环: 当窗口显示在显示器上后,程序必须准备读入用户用键盘和鼠标输入的数据。Windows为每一个应用程序维护一个“消息队列”,当发生输入事件后,Windows将事件转化成一个消息,并将消息放入程序的消息队列中。 程序通过执行以下一段代码从消息队列中取出消息: while(GetMessage(&msg,NULL,0,0)) //获取消息 { TranslateMessage(&msg);//消息翻译 DispatchMessage(&msg); //发送消息给窗口过程 } Msg变量为MSG结构体类型,类型定义如下: typedef struct tagMSG { HWND  hwnd; UINT  message; WPARAM wParam; LPARAM lParam; DWORD  time; POINT  pt; } MSG, *PMSG; 5.头文件包含: 在每一个Windows程序C语言编写的Windows程序都可以看到#include。 Windows.h是主要的包含文件,它包含的windows的其它头文件。 源代码: #include #include //窗口过程函数声明: LRESULT CALLBACK WinLiuProc( HWND hwnd,      // handle to window UINT uMsg,      // message identifier WPARAM wParam,  // first message parameter LPARAM lParam  // second message parameter ); int WINAPI WinMain( HINSTANCE hInstance,      // 应用程序当前示例句柄 HINSTANCE hPrevInstance,  // 应用程序其他实例句柄 LPSTR lpCmdLine,          // 指向程序命令行参数的指针 int nCmdShow              //应用程序开始执行时窗口显示方式的整数值标识 ) {    HWND hwnd;  //窗口句柄 MSG msg;    //消息 //声明一个窗口类 WNDCLASS wndcls; //设置窗口类的属性: wndcls.cbClsExtra = 0; wndcls.cbWndExtra = 0; wndcls.hbrBackground = ( HBRUSH)GetStockObject( WHITE_BRUSH ); wndcls.hCursor = LoadCursor( hInstance, IDC_ARROW ); wndcls.hIcon = LoadIcon( hInstance, IDI_APPLICATION ); wndcls.hInstance = hInstance; wndcls.lpfnWndProc = WinLiuProc; wndcls.lpszClassName = "Windows prog test"; wndcls.lpszMenuName = NULL; wndcls.style = CS_HREDRAW | CS_VREDRAW; //注册窗口类 RegisterClass(&wndcls); //创建窗口 hwnd = CreateWindow( "Windows prog test", TEXT ("The Hello Program,SDK style"), WS_OVERLAPPEDWINDOW | WS_VISIBLE,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL ); //显示窗口 ShowWindow( hwnd, SW_SHOWNORMAL ); UpdateWindow(hwnd); while (GetMessage( &msg, NULL, 0, 0))    { TranslateMessage(&msg); DispatchMessage(&msg); } return 0; } LRESULT CALLBACK WinLiuProc( HWND hwnd,      UINT uMsg,      WPARAM wParam,  LPARAM lParam  ) { switch(uMsg) { //字符输入消息 case WM_CHAR: char szChar[20]; sprintf(szChar,"键盘按键按下"); MessageBox(hwnd,szChar,"Title",0); break; //鼠标左键按下消息 case WM_LBUTTONDOWN: MessageBox(hwnd,"左键按下","Title",0); HDC hdc; hdc=GetDC(hwnd); ReleaseDC(hwnd,hdc); break; //鼠标右键按下消息 case WM_RBUTTONDOWN: MessageBox(hwnd,"鼠标右键按下","Title",0); break;
/
本文档为【vc可视化实验一】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索