windows程序设计1_第1页
windows程序设计1_第2页
windows程序设计1_第3页
windows程序设计1_第4页
windows程序设计1_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WINDOWS程序设计实 验 指 导 书(第2版)东北林业大学信息与计算机工程学院计算机科学与技术专业目 录1 实验目的与要求12实验环境13 实验一般步骤14 实验时数15 实验内容和要求2实验一 编程实现Windows程序框架2实验二 Windows窗口绘图6实验三 菜单消息的接收和响应6实验四 对话框基本控件的设计实现8 1 实验目的与要求按照“素质教育”要求,以培养面向21世纪具有一定创新能力的人才为目标。Windows程序设计实验主要为验证性实验,属于计算机科学与技术专业及相近专业选修实践型课程,是Windows程序设计课程的重要组成部分。通过本实验课程可以培养学生以下几方面的能力:

2、学习windows环境下程序设计的基本方法;掌握基本的Windows API接口函数;理解Windows环境下程序的基本组成及基本原理。2 实验环境Windows 2000/Windows XP,Visual C+ 6.0 以上版本。3 实验一般步骤 (1)准备好实验所需的程序。手编程序应书写整齐,并经人工检查无误后才能实验,以提高实验效率。对程序中自己有疑问的地方,应作出标记,以便在上机时给予注意。初学者切忌不编程序或抄别人程序去上机,应从一开始就养成严谨的科学作风。 (2)上机输入和调试自己所编的程序。应该一人一组,独立实验。上机过程中出现的问题,除了是系统的问题以外,一般应独立处理,不要

3、轻易举手问教师。尤其对“出错信息”,应善于自己分析判断。这是学习调试程序的良好机会。 在程序调试通过后,打印输出程序清单和运行结果,在运行时要注意在输入不同数据时所得到的不同结果。此时应运行几次,分别检查在不同情况下程序是否正确。 (3)实验结束后,提交实验报告,实验报告应包括以下内容: 实验目的; 实验内容; 程序清单(手写或计算机打印出的程序清单); 运行结果(必须是上面程序清单所对应打印输出的结果); 结果分析:对运行情况所作的分析以及本次调试程序所取得的经验。如果程序未能通过,应分析其原因。4 实验时数总实验时数不得少于8学时。5 实验内容和要求实验一 编程实现Windows程序框架本

4、实验帮助学生理解Windows环境下程序的基本结构。要求学生使用API接口函数设计一个窗口程序,在窗口中显示“hello world”。 示例程序:/*#include #include /函数声明BOOL InitWindow( HINSTANCE hInstance, int nCmdShow );LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );/*/函数:WinMain()/功能:Win32应用程序入口函数。创建主窗口,处理消息循环/*int PASCAL WinMain(

5、 HINSTANCE hInstance, /当前实例句柄HINSTANCE hPrevInstance, /前一个实例句柄LPSTR lpCmdLine, /命令行字符int nCmdShow) /窗口显示方式MSG msg;/创建主窗口if ( !InitWindow( hInstance, nCmdShow ) )return FALSE;/进入消息循环:/从该应用程序的消息队列中检取消息,送到消息处理过程,/当检取到WM_QUIT消息时,退出消息循环。while (GetMessage(&msg, NULL, 0, 0)TranslateMessage(&msg);DispatchMe

6、ssage(&msg);/程序结束return msg.wParam;/*/函数:InitWindow()/功能:创建窗口。/*static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )HWND hwnd; /窗口句柄WNDCLASS wc; /窗口类结构/填充窗口类结构wc.style = CS_VREDRAW | CS_HREDRAW;wc.lpfnWndProc = (WNDPROC)WinProc;wc.cbClsExtra = 0;wc.cbWndExtra = 0;wc.hInstance = hInstance;wc.h

7、Icon = LoadIcon( hInstance, IDI_APPLICATION );wc.hCursor = LoadCursor( NULL, IDC_ARROW );wc.hbrBackground = GetStockObject(WHITE_BRUSH);wc.lpszMenuName = NULL;wc.lpszClassName = EasyWin;/注册窗口类RegisterClass( &wc );/创建主窗口hwnd = CreateWindow(EasyWin, /窗口类名称一个基本的Win32程序, /窗口标题WS_OVERLAPPEDWINDOW, /窗口风格,

8、定义为普通型100, /窗口位置的x坐标100, /窗口位置的y坐标400, /窗口的宽度300, /窗口的高度NULL, /父窗口句柄NULL, /菜单句柄hInstance, /应用程序实例句柄NULL ); /窗口创建数据指针if( !hwnd ) return FALSE;/显示并更新窗口ShowWindow( hwnd, nCmdShow );UpdateWindow( hwnd );return TRUE;/*/函数:WinProc()/功能:处理主窗口消息/*LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wPa

9、ram, LPARAM lParam )switch( message )case WM_KEYDOWN:/击键消息switch( wParam )case VK_ESCAPE:MessageBox(hWnd,ESC键按下了!,Keyboard,MB_OK);break;break;case WM_RBUTTONDOWN:/鼠标消息MessageBox(hWnd,鼠标右键按下了!,Mouse,MB_OK);break;case WM_PAINT:/窗口重画消息char hello=你好,我是EasyWin !;HDC hdc;PAINTSTRUCT ps;hdc=BeginPaint( hWn

10、d,&ps ); /取得设备环境句柄SetTextColor(hdc, RGB(0,0,255); /设置文字颜色TextOut( hdc, 20, 10, hello, strlen(hello) );/输出文字EndPaint( hWnd, &ps ); /释放资源break;case WM_DESTROY:/退出消息PostQuitMessage( 0 );/调用退出函数break;/调用缺省消息处理过程return DefWindowProc(hWnd, message, wParam, lParam);程序输入完毕,即可编译执行。在窗口中击鼠标键或按ESC键时,会弹出一个对话框以表示

11、你的操作。实验二 Windows窗口绘图通过本实验能够使学生理解Windows环境下在窗口中绘制基本图形、显示文本的方法。在实验一中设计的窗口程序的基础上,能够根据不同的菜单消息绘制直线、圆、圆弧并显示多行文字。示例程序:说明:在实验一的基础上,修改WsM_PAINT消息响应代码,绘制直线的例子如下:caseWM_PAINT: point.x=LOWORD(lParam); point.y=HIWORD(lParam);hdc=BeginPaint(hWnd,&ps); hpen=(HPEN)GetStockObject(BLACK_PEN); SelectObject(hdc,hpen);M

12、oveToEx(hdc,Oldpoint.x,Oldpoint.y,NULL); LineTo(hdc,point.x,point.y); Oldpoint.x=point.x; /*point的值在响应WM_MOUSEMOVE时获取*/Oldpoint.y=point.y; EndPaint(hWnd,&ps);实验三 菜单消息的接收和响应通过本实验帮助学生理解Windows环境下程序的消息响应机制,掌握Windows程序中资源文件的编制及使用方法。要求学生使用文本编辑器建立菜单资源文件,自定义消息句柄,在程序中正确响应该消息。资源文件示例:Menu.rc #define IDM_TEST

13、1 #define IDM_HELLO 2 #define IDM_GOODBYE 3 #define IDM_EXIT 4 FirstMenu MENU POPUP &PopUp MENUITEM &Say Hello,IDM_HELLO MENUITEM Say &GoodBye, IDM_GOODBYE MENUITEM SEPARATOR MENUITEM E&xit,IDM_EXIT MENUITEM &Test, IDM_TEST 上面的几行定义了菜单项的ID号。只要注意菜单项ID号必须唯一外,您可以给ID号任何值。 用关键字MENU定义菜单。 POPUP &PopUp MENUI

14、TEM &Say Hello,IDM_HELLO MENUITEM Say &GoodBye, IDM_GOODBYE MENUITEM SEPARATOR MENUITEM E&xit,IDM_EXIT 定义一个有四个菜单项的子菜单,其中第三个菜单项是一个分隔线。 MENUITEM &Test, IDM_TEST 定义主菜单中的一项。 实验四 对话框基本控件的设计实现通过本实验能够使学生理解Windows环境下对话框基本控件的类别及其实现方式,掌握控件消息的响应方法。要求学生实现文本编辑框、按钮、单选按钮、复选按钮等的资源文件的编写,并在实现这些控件及其消息的响应。 对话框资源文件示例: #

15、define APSTUDIO_READONLY_SYMBOLS / Generated from the TEXTINCLUDE 2 resource.#define APSTUDIO_HIDDEN_SYMBOLS#include windows.h#undef APSTUDIO_HIDDEN_SYMBOLS#include resource.h#undef APSTUDIO_READONLY_SYMBOLS/ Chinese (P.R.C.) resources#if !defined(AFX_RESOURCE_DLL) | defined(AFX_TARG_CHS)#ifdef _WIN

16、32LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED#pragma code_page(936)#endif /_WIN32501 MENU DISCARDABLE BEGIN POPUP 文件(&F) BEGIN MENUITEM 启动服务器(&S), IDM_FILELISTEN MENUITEM 启动客户端(&C), IDM_FILECONNECT MENUITEM SEPARATOR MENUITEM 退出(&E), IDM_FILEEXIT END POPUP 编辑(&E) BEGIN MENUITEM 撤销(&U), IDM_EDI

17、TUNDO MENUITEM SEPARATOR MENUITEM 剪切(&X)tCtrl+X, IDM_EDITCUT MENUITEM 复制(&C)tCtrl+C, IDM_EDITCOPY MENUITEM 粘贴(&P)tCtrl+V, IDM_EDITPASTE MENUITEM SEPARATOR MENUITEM 传送文件(&S), IDM_TRANSPORTFILE END POPUP 帮助(&H) BEGIN MENUITEM 使用帮助(&U), IDM_HELPHELP MENUITEM SEPARATOR MENUITEM 访问我的博客(&B), IDM_HELPMYBLO

18、G MENUITEM 关于(&A)., IDM_HELPABOUT ENDEND/ DialogIDD_DEMO DIALOG DISCARDABLE 0, 0, 247, 227STYLE DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENUCAPTION 聊天程序FONT 9, SystemBEGIN LTEXT IP:,IDC_STATIC,4,4,8,12,NOT WS_GROUP LTEXT PORT:,IDC_STATIC,78,4,20,12,NOT WS_

19、GROUP EDITTEXT IDC_IP,16,4,60,12,ES_AUTOHSCROLL EDITTEXT IDC_PORT,100,4,28,12,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_REVTXT,4,29,234,111,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_WANTRETURN | WS_VSCROLL PUSHBUTTON LC,IDB_LC,130,4,60,12,BS_CENTER PUSHBUTTON QQ,IDB_QQ,194,4,20,12,BS_CENTER PUS

20、HBUTTON SEND(&S),IDB_SEND,136,200,46,12,BS_CENTER PUSHBUTTON EXIT(&X),IDCANCEL,202,200,30,12,BS_CENTER EDITTEXT IDC_SENDTXT,3,144,235,52,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL EDITTEXT IDC_NICKNAME,38,198, 40,12,ES_AUTOHSCROLL LTEXT NickName,IDC_STATIC,4,200,34,12 LTEXT ,IDC_TIME,6,19,214,8END#endif / Chinese (P.R.C.) resources#ifndef APSTUDIO_INVOKED#define ID_MENU 501#define IDD_DEMO 801#define IDM_FILENEW 200#define IDM_FILEOPEN 201#define IDM_FILELIST

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论