编程实验指导书范文.doc_第1页
编程实验指导书范文.doc_第2页
编程实验指导书范文.doc_第3页
编程实验指导书范文.doc_第4页
编程实验指导书范文.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

编程实验指导书范文 Wi ndows编程实验指导书专业的文档Visual C+6.0开发环境VC开发环境界面Windows编程是指在Windows操作系统上开发各种应用程序,开发工具是多种多样的,使用的计算机语言也是不同的,有C+、Pascal、Basic等,本门课程主要讲授使用C+语言开发Windows应用程序,开发工具使用的是微软公司的Visual C+6.0软件(以下简称VC)。 图1-1VC开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口以及状态栏组成,如图1-1所示。 标题栏上显示当前被操作的文档的文件名。 菜单栏包含了开发环境中几乎所有的命令,它为用户提供了文档操作、程序的编译、调试、窗口操作等一系列的功能。 菜单中的一些常用命令还被排列在相应的工具栏上,以便用户更好地操作。 项目工作区窗口位于开发环境的左边,它包含用户项目的一些信息,包括ClassView、FileView、ResourceView。 在项目工作区窗口中的任何标题或图标处单击鼠标右键,都会弹出相应的快捷菜单,该快捷菜单包含当前状态下的一些常专业的文档用操作。 文档窗口一般位于开发环境的右边,它用于各种程序的源代码,我们大部分时间都是和这个窗口打交道。 输出窗口一般出现在底部,它包括了编译、调试、查找文件等相关信处的输出。 这些输出信息以多页面标签的形式出现在输出窗口中,例如“编译”页面标签显示的是程序在编译和连接时的进度及错误信息。 状态栏一般位于最底部,它用于显示当前操作状态、注释、文本光标所在的行列号等信息。 开发的基本步骤虽然编程是一项创造性的工作,但仍然需要遵循一些章法,掌握这些基本方法是学习编程必不可少的步骤,无论要编写一个多么庞大的程序,都是从这些最简单的工作开始的。 下面我们就介绍一下要编写一个Windows应用程序的基本步骤。 1、创建工程。 选择“FileNew”菜单,或是使用快捷键“CTRL+N”,将会弹出创建工程界面(图1-2)。 图1-2在界面左侧,可以选择要创建的工程类型,VC中预置了十几种工程类型,我们只要从中选择一种我们需要的即可。 在学习C和C+语言课程时,大家可能使用的是Win32Console Application类型的工程,如果要开发可视化应用程序,可以选择MFC AppWizard或Win32Application等。 右侧的输入框用于指定工程名(Project name)和工程文件存放的硬盘路径(Location),这些都由程序员自己决定。 选择好后点击“OK”进入下一步的工程配置,此处我们暂以Win32Console Application工程为例,取名为“MyFirstApp”,将为出现工程配置对话框(图1-3)。 直接点击“Finish”完成工程的创建。 专业的文档图1- 32、创建源文件。 此时的工程是空的,没有任何源文件,我们需要手工创建。 选择“FileNew”菜单,此时出现的界面(图1-4)和刚刚有所不同,其实仅仅是该对话框上方的选项卡变化所造成的,此时的选项卡是“File”,可以试着点击“Project”选项卡看看效果。 和新建工程一样,选择一种要创建的文件类型,这里我们选择C+Source File,并在右侧取一个文件名,然后点击OK即可。 图1- 43、编写、调试程序代码。 这是程序员创造性工作的部分,在文档窗口中完成代码的编写工作,并不断地做调试工作,最后编译并运行代码。 实验环境本课程所有的实验环境均为PC计算机、Windows2000操作系统以及VC+6.0软件。 专业的文档实验一Win32程序框架设计实验一实验目的掌握Win32程序的基本原理和程序柜架编写方法;掌握鼠标消息结构,使用API编写一个简单的Windows窗口程序,能够捕获鼠标消息并打印出鼠标坐标。 二实验要求理解Windows程序的运行原理,并了解如何创建一个可视化的应用程序,了解使用Windows API完成各种功能,如打印文本等。 三实验内容创建一个最简单的Windows应用程序,包含一个主窗口,让程序捕获用户的鼠标动作,并且不停地在主窗口坐标(100,200)处打印鼠标当前位置的坐标值。 四实验步骤创建一个空的工程,参考代码如下#include#includeLRESULT CALLBACKWinSunProc(HWND hwnd,/handle towindow UINTuMsg,/message identifierWPARAM wParam,/first messageparameter LPARAM lParam/second messageparameter);int WINAPIWinMain(HINSTANCE hInstance,/handle tocurrent instanceHINSTANCE hPrevInstance,/handle toprevious instanceLPSTR lpCmdLine,/mand lineint nCmdShow/show state)WNDCLASS wndcls;wndcls.cbClsExtra=0;wndcls.cbWndExtra=0;wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);专业的文档wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);wndcls.hInstance=hInstance;wndcls.lpfnWndProc=WinSunProc;wndcls.lpszClassName=sdut;wndcls.lpszMenuName=NULL;wndcls.style=CS_HREDRAW|CS_VREDRAW;RegisterClass(&wndcls);HWND hwnd;hwnd=CreateWindow(sdut,山东理工大学计算机学院,WS_OVERLAPPEDWINDOW/*&WS_MAXIMIZEBOX*/,0,0,600,400,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOWNORMAL);UpdateWindow(hwnd);MSG msg;while(GetMessage(&msg,NULL,0,0)TranslateMessage(&msg);DispatchMessage(&msg);return0;LRESULT CALLBACKWinSunProc(HWND hwnd,/handle towindow UINTuMsg,/message identifierWPARAM wParam,/first messageparameter LPARAM lParam/second messageparameter)switch(uMsg)case WM_CHAR:char szChar20;sprintf(szChar,char is%d,wParam);MessageBox(hwnd,szChar,weixin,0);break;case WM_LBUTTONDOWN:MessageBox(hwnd,mouse clicked,weixin,0);HDC hdc;hdc=GetDC(hwnd);专业的文档TextOut(hdc,0,50,计算机编程语言培训,strlen(计算机编程语言培训);ReleaseDC(hwnd,hdc);break;case WM_PAINT:HDC hDC;PAINTSTRUCT ps;hDC=BeginPaint(hwnd,&ps);TextOut(hDC,0,0,维新培训,strlen(维新培训);EndPaint(hwnd,&ps);break;case WM_CLOSE:if(IDYES=MessageBox(hwnd,是否真的结束?,weixin,MB_YESNO)DestroyWindow(hwnd);break;case WM_DESTROY:PostQuitMessage (0);break;default:return DefWindowProc(hwnd,uMsg,wParam,lParam);return0;专业的文档实验二文本输出程序一实验目的掌握MFC的单文档程序设计原理;掌握CDC的文字处理程序的编写,如何产生自定义字体和自定义插入符,熟悉对CString类的使用。 二实验要求掌握CDC的文字处理程序的编写,如何产生自定义字体和自定义插入符,熟悉对CString类的使用。 掌握定时器的使用和DrawText函数的巧妙运用。 掌握CDC的裁减功能。 三实验内容创建一个文本处理应用程序,包含一个主窗口,能产生自定义字体和自定义插入符,模拟卡拉OK字幕变色的功能。 四实验步骤 1、生成一个单文档应用程序。 2、部分代码void CTextView:OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)/TODO:Add yourmessage handler code hereand/or calldefault CClientDC dc(this);CFont font;font.CreatePointFont(300,华文行楷,NULL);CFont*pOldFont=dc.SelectObject(&font);TEXTMETRIC tm;dc.GetTextMetrics(&tm);if(0x0d=nChar)m_strLine.Empty();m_ptOrigin.y+=tm.tmHeight;else if(0x08=nChar)COLORREF clr=dc.SetTextColor(dc.GetBkColor();专业的文档dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);m_strLine=m_strLine.Left(m_strLine.GetLength()-1);dc.SetTextColor(clr);elsem_strLine+=nChar;CSize sz=dc.GetTextExtent(m_strLine);CPoint pt;pt.x=m_ptOrigin.x+sz.cx;pt.y=m_ptOrigin.y;SetCaretPos(pt);dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);dc.SelectObject(pOldFont);CView:OnChar(nChar,nRepCnt,nFlags);void CTextView:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add yourmessage handler code hereand/or calldefault SetCaretPos(point);m_strLine.Empty();m_ptOrigin=point;CView:OnLButtonDown(nFlags,point);void CTextView:OnTimer(UINT nIDEvent)/TODO:Add yourmessage handler code hereand/or calldefault m_nWidth+=5;CClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetrics(&tm);CRect rect;rect.left=0;rect.top=200;rect.right=m_nWidth;rect.bottom=rect.top+tm.tmHeight;专业的文档dc.SetTextColor(RGB(255,0,0);CString str;str.LoadString(IDS_WEIXIN);dc.DrawText(str,rect,DT_LEFT);rect.top=150;rect.bottom=rect.top+tm.tmHeight;dc.DrawText(str,rect,DT_RIGHT);CSize sz=dc.GetTextExtent(str);if(m_nWidthsz.cx)m_nWidth=0;dc.SetTextColor(RGB(0,255,0);dc.TextOut(0,200,str);CView:OnTimer(nIDEvent);专业的文档实验三菜单程序设计一实验目的掌握菜单的工作原理及编写应用,菜单命令消息在MFC框架程序的几个类中的传递顺序和处理过程。 二实验要求掌握标记菜单、缺省菜单的实现原理、图形菜单的实现掌握动态菜单的编写,如何让程序在运行时产生新的菜单项及如何手工为这些新产生的菜单命令。 更进一步掌握CString类的应用三实验内容创建一个菜单应用程序。 四实验步骤 1、生成一个单文档应用程序。 2、部分代码void CMenu2View:OnChar(UINT nChar,UINT nRepCnt,UINT nFlags)/TODO:Add yourmessage handler code hereand/or calldefault CClientDC dc(this);if(0x0d=nChar)if(0=+m_nIndex)m_menu.CreatePopupMenu();GetParent()-GetMenu()-AppendMenu(MF_POPUP,(UINT)m_menu.m_hMenu,PhoneBook);GetParent()-DrawMenuBar();m_menu.AppendMenu(MF_STRING,IDM_PHONE1+m_nIndex,m_strLine.Left(m_strLine.Find();m_strArray.Add(m_strLine);m_strLine.Empty();专业的文档Invalidate();elsem_strLine+=nChar;dc.TextOut(0,0,m_strLine);CView:OnChar(nChar,nRepCnt,nFlags);void CMenu2View:OnPhone1()/TODO:Add yourmand handler code hereCClientDC dc(this);dc.TextOut(0,0,m_strArray.GetAt (0);void CMenu2View:OnPhone2()/TODO:Add yourmand handler code hereCClientDC dc(this);dc.TextOut(0,0,m_strArray.GetAt (1);void CMenu2View:OnPhone3()/TODO:Add yourmand handler code hereCClientDC dc(this);dc.TextOut(0,0,m_strArray.GetAt (2);void CMenu2View:OnPhone4()/TODO:Add yourmand handlercode hereCClientDCdc(this);dc.TextOut(0,0,m_strArray.GetAt (3);专业的文档实验四对话框窗口及子窗口控件程序设 一、实验目的 1、熟悉对话框编程的一般步骤。 2、熟练应用模式对话框和无模式对话框。 3、掌握静态控件、框、按钮类控件的属性及应用。 4、掌握列表框、组合框的使用。 5、掌握滚动类控件(滚动条、滑动条、旋转按钮)的使用。 二、实验内容与步骤 1、静态文本、框和命令按钮的使用 2、单选按钮、复选按钮和分组框的使用 3、列表框的使用 4、组合框的使用 5、滚动条、滑动条和旋转按钮的使用 6、计算器的设计设计一个简单的计算器,能够实现实数的四则运算、求倒数、求平方根等功能。 【实验步骤】 (1)创建工程利用AppWizard向导,创建一个对话框应用程序,工程名“MyCalculator”。 (2)设计对话框界面在对话框中添加20个命令按钮和一个框,界面如下各控件的属性设置见下表控件类型控件的ID控件的连接变量与类型专业的文档Caption019.+/-+-*/C sqrt1/x=Edit Button Button Button Button Button Button ButtonButtonButtonButtonButtonButtonButtonButton EditBox IDC_BUTTON0IDC_BUTTON1IDC_BUTTON9IDC_BUTTON_POINT IDC_BUTTON_SIGN IDC_BUTTON_ADD IDC_BUTTON_SUB IDC_BUTTON_MUL IDC_BUTTON_DIV IDC_BUTTON_CLEAR IDC_BUTTON_SQRT IDC_BUTTON_RECI IDC_BUTTON_EQUAL IDC_DISPLAY(只读、右对齐)m_display CString (3)为框“IDC_DISPLAY”连接成员变量为框“IDC_DISPLAY”连接一个CString类型的成员变量m_display,用来显示操作数和运算结果。 (4)为CMyCalculatorDlg类添加数据成员为了保存操作数和运算结果,需要在“CMyCalculatorDlg.h”中加入五个变量double m_first;/存储一次运算的第一个操作数及一次运算的结果double m_second;/存储一次运算的第二个操作数char m_operator;/存储运算符double m_coff;/存储小数点的系数权值bool m_flag;/单目(true)、双目(false)运算标志 (5)在构造函数中初始化以上成员变量CMyCalculatorDlg:CMyCalculatorDlg(CWnd*pParent/*=NULL*/):CDialog(CMyCalculatorDlg:IDD,pParent)/AFX_DATA_INIT(CMyCalculatorDlg)m_display=_T(0.0);m_first=0.0;m_second=0.0;m_operator=+;m_coff=1.0;m_flag=true;/AFX_DATA_INIT/Note thatLoadIcon doesnot requirea subsequentDestroyIcon inWin32m_hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);专业的文档 (6)为所有的Button按钮的BN_CLICKED事件添加消息处理函数对象的ID IDC_BUTTON0IDC_BUTTON1IDC_BUTTON9IDC_BUTTON_POINT IDC_BUTTON_SIGN IDC_BUTTON_ADD IDC_BUTTON_SUB IDC_BUTTON_MUL IDC_BUTTON_DIV IDC_BUTTON_CLEAR IDC_BUTTON_SQRT IDC_BUTTON_RECI IDC_BUTTON_EQUAL消息BN_CLICKED BN_CLICKEDBN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED BN_CLICKED消息处理函数OnButton0OnButton1OnButton9OnButtonPoint OnButtonSignOnButtonAdd OnButtonSubOnButtonMul OnButtonDivOnButtonClear OnButtonSqrtOnButtonRect OnButtonEqual (7)为CMyCalculatorDlg类添加一个成员函数UpdateDisplay,用来去除实数尾部的无效0,并更新框。 代码如下void CMyCalculatorDlg:UpdateDisplay(double lVal)m_display.Format(%f,lVal);int i=m_display.GetLength();/格式化输出,将输出结果后的零截去while(m_display.GetAt(i-1)=0)m_display.Delete(i-1,1);i-;UpdateData(false);/更新框变量m_display (8)添加数字按钮的消息处理函数代码数字按钮的消息处理函数代码类似,当点击数字按钮时,应该更新第二个操作数m_second的值。 例如数字按钮8的单击消息处理函数代码如下void CMyCalculatorDlg:OnButton8()/TODO:Add yourcontrol notificationhandlercode here if(m_coff=1.0)m_second=m_second*10+8;/作为整数输入数字时专业的文档elsem_second=m_second+8*m_coff;/作为小数输入数字m_coff*=0.1;UpdateDisplay(m_second);/更新框的数字显示。 (9)为CMyCalculatorDlg类添加一个成员函数calculate,用来进行四则运算,并为下一次运算做准备。 代码如下void CMyCalculatorDlg:calculate()switch(m_operator)case+:m_first+=m_second;break;case-:m_first-=m_second;break;case*:m_first*=m_second;break;case/:if(fabs(m_second)=0.000001)m_display=除数不能为0;UpdateData(false);return;m_first/=m_second;break;UpdateDisplay(m_first);/更新框显示内容m_second=0.0;m_coff=1.0;m_flag=false; (10)添加运算符按钮的消息响应函数当点击运算符按钮时,调用calculate,函数执行前面的运算,并保存当前点击的运算符。 加法按钮的代码如下void CMyCalculatorDlg:OnButtonAdd()/TODO:Add yourcontrol notificationhandlercode here calculate();m_operator=+;减法、乘法、除法按钮的功能实现类似,自己实现。 (11)添加”=“按钮的消息响应函数代码专业的文档void CMyCalculatorDlg:OnButtonEqual()/TODO:Add yourcontrol notificationhandlercode here calculate();m_operator=+; (12)添加sqrt按钮的消息处理函数sqrt按钮的功能是求平方根,参考代码如下void CMyCalculatorDlg:OnButtonSqrt()/TODO:Add yourcontrol notificationhandlercode here if(!m_flag)m_second=m_first;m_first=0;m_flag=true;if(m_second-0.000001)m_display=被开方数不能为负数;UpdateData(false);return;m_second=sqrt(m_second);UpdateDisplay(m_second);/更新框显示内容减法、乘法、除法按钮的功能实现类似,自己实现。 (13)添加sqrt按钮的消息处理函数sqrt按钮的功能是求平方根,参考代码如下取反(+/-)、求倒数(1/x)按钮的功能实现类似,自己实现。 (12)添加清零按钮的消息处理函数如下void CMyCalculatorDlg:OnButtonClear()/TODO:Add yourcontrol notificationhandlercode here m_display=_T(0.0);m_first=0.0;m_second=0.0;m_operator=+;m_coff=1.0;m_flag=true;UpdateData(false);专业的文档 (13)编译、链接、运行程序。 7、系统集成设计开发一个较多功能的应用程序,单击每个命令按钮时,将调用另一个对话框实现一个具体的功能。 【实验步骤】 (1)利用MFC AppWizard创建一个基于对话框的新工程,命名为A01。 (2)然后用对话框器设计界面如下 (3)为对话框中的各个命令按钮填加对话框模板资源。 例如为“求方程的根”按钮填加一个对话框资源IDD_DIALOG1,然后用对话框器设计界面如下 (4)为对话框IDD_DIALOG1创建一个新类CDlg1。 (5)为对话框中的计算按钮(Button1)添加消息处理函数,并代码如下void CDlg1:OnButton1()/TODO:Add yourcontrol notificationhandlercode here UpdateData();double disc;disc=(double)(m_b*m_b-4*m_a*m_c);if(fabs(disc)0)double x1,x2;x1=(-m_b-sqrt(disc)/(2*m_a);x2=(-m_b+sqrt(disc)/(2*m_a);m_x1.Format(x1=%x1=%6.2f,x1);m_x2.Format(x2=%x1=%6.2f,x2);elsedouble realpart,imagpart;realpart=-m_b/(2*m_a);imagpart=sqrt(-disc)/(2*m_a);m_x1.Format(x1=%6.2f+%6.2fi,realpart,imagpart);m_x2.Format(x2=%6.2f+%6.2fi,realpart,imagpart);UpdateData(false); (6)为主对话框中“求方程的根”按钮添加显示对话框的代码CDlg1dlg1;dlg1.DoModal(); (7)在主对话框的实现文件中添加头文件include”Dlg1.h” (8)编译并运行。 【实验提示】其余对话框资源的编程操作同上,自己实现。 方法二 (1)利用MFC AppWizard创建一个基于对话框的新工程,命名为A01。 (2)然后用对话框器设计界面如下专业的文档 (3)将设计好的应用程序可执行文件填加到当前文件夹下 (4)为每个命令按钮填加消息映射函数,编写代码例为按钮所编写的代码为ShellExecute(NULL,NULL,”qiufangchengdegen.exe”,NULL,NULL,Sw_SHOWNORMAL);ShellExecute(NULL,NULL,”jiaquanshu.exe”,NULL,NULL,Sw_SHOWNORMAL);ShellExecute(NULL,NULL,”tianchongyuan.exe”,NULL,NULL,Sw_SHOWNORMAL);ShellExecute(NULL,NULL,”jisuanqi.exe”,NULL,NULL,Sw_SHOWNORMAL); (5)编译并运行。 专业的文档实验五图形程序设计 一、实验目的 1、了解文档与视图结构的实现 2、掌握画图的工具。 2、了解一档多视的实现。 二、实验内容与步骤编写程序,在打开的单文档窗口中可实现画线的功能。 通过创建一个能建立画布并能实现画线的简单功能的应用程序,进一步了解视图的工作原理【实验步骤】 1、建立Application利用AppWizard创建一个单文档应用程序Exam5_1。 2、在视图类中添加数据成员 (1)在项目工作区的打开FileView选项卡,展开Header files树,双击Cexam5_1View.h,在其中加入数据成员的定义protected:int m_Tag;/用来记录鼠标是否被按下状态。 HCURSOR m_HCursor;/用来保存光标指针。 CPoint m_End;/提供其它鼠标信息处理器获得前一鼠标信息的鼠标位置CPoint m_Begin;/存放左键按下的位置 (2)在CExam7View.cpp中对变量进行初始化。 Cexam5_1View:CExam7View()m_Tag=0;/初始化鼠标状态变量,表示鼠标没有按下。 m_HCursor=AfxGetApp()-LoadCursor(IDC_cousor);/用来装载刚才建立的光标,并将光标的句柄保存在变量s_Cross中。 3、添加鼠标消息映射执行菜单查看建立类向导,在类向导窗口的消息处理标签中加入以下三条消息WM_LBUTTONDOWN WM_LBUTTONUP WM_MOUSEMOVE系统自动加入消息处理函数OnLButtonDown()OnLButtonUp()OnMouseMove() 4、在消息处理函数中加入如下代码专业的文档 (1)在鼠标按下的消息处理中加入void Cexam5_1View:OnLButtonDown(UINT nFlags,CPoint point)/TODO:Add yourmessage handlercode hereand/or calldefault m_End=point;/存在鼠标的当前位置m_Begin=point;/存放画线的起始位置SetCapture();/执行这条语句后,当鼠标移动到本窗口以外时,鼠标消息仍然被发送给本窗口m_Draw=1;/表示正在拖动鼠标RECT rect;GetClientRect(&rect);/获得视图窗口区的坐标ClientToScreen(&rect);/将窗口坐标转换为屏幕坐标ClipCursor(&rect);/将鼠标限定在视图窗口区内CView:OnLButtonDown(nFlags,point); (2)在鼠标移动的消息处理中加入void Cexam5_1View:OnMouseMove(UINT nFlags,CPoint point)/TODO:Add yourmessage handlercodehereand/or calldefault SetCursor(m_HCursor);/自定义鼠标形状为十字形if(m_Draw)/判断是否在画线,如果不是就退出CClientDCdc(this);/创建一个客户区的设备环境句柄dc.SetROP2(R2_NOT);/设置绘画方式dc.MoveTo(m_Begin);/将当前点移到指定点,表示画线从这一点开始dc.LineTo(m_End);/用反色绘制直线,实际上是擦除上次所绘直线dc.MoveTo(m_Begin);dc.LineTo(point);/这两条语句是绘制一条从起点到当前鼠标点的直线m_End=point;/保存鼠标当前位置,以便鼠标移动后擦除该线/(即鼠标移动的位置不画线,只有鼠标抬起才决定画线。 )CView:OnMouseMove(nFlags,point); (3)在鼠标抬起的消息处理中加入void Cexam5_1View:OnLButtonUp(UINT nFlags,CPoint point)/TODO:Add yourmessage handlercodehereand/or calldefault if(m_Draw)专业的文档m_Draw=0;/表示已经释放鼠标ReleaseCapture();ClipCursor(NULL);/允许鼠标移动到屏幕任意位置CView:OnLButtonUp(nFlags,point); (4)修改窗口特性,以便所画的线清晰BOOL Cexam5_1View:PreCreateWindow(CREATESTRUCT&cs)cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW,/改变窗口大小时重画窗口0,/不用鼠标(HBRUSH):GetStockObject(WHITE_BRUSH),/设置白色背景0);return CView:PreCreateWindow(cs); 4、构件Exam5_1.exe并运行。 效果图如下。 专业的文档实验六多线程程序设计 一、实验目的掌握多线程程序的编写,了解多线程应用中容易出现的问题。 二、实验要求了解互斥对象,如何利用互斥对象来实现多线程的同步。 如何利用命名互斥对象保证应用程序只有一个实例运行。 三实验内容应用多线程编写网络聊天室程序。 实验四实验步骤创建一个单文档应用程序。 部分代码如下BOOL CChatDlg:OnInitDialog()CDialog:OnInitDialog();/AddAbout.menu itemto systemmenu./IDM_ABOUTBOX mustbe inthe systemmand range.ASSERT(IDM_ABOUTBOX&0xFFF0)=IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOXAppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);/Set theicon forthis dialog.The frameworkdoes thisautomatically专业的文档/when theapplications mainwindow isnot adialog SetIcon(m_hIcon,TRUE);/Set bigicon SetIcon(m_hIcon,FALSE);/Set smallicon/TODO:Add extrainitialization hereInitSocket();RECVPARAM*pRecvParam=new RECVPARAM;pRecvParam-sock=m_socket;pRecvParam-hwnd=m_hWnd;HANDLE hThread=CreateThread(NULL,0,RecvProc,(LPVOID)pRecvParam,0,NULL);CloseHandle(hThread);return TRUE;/return TRUEunless youset thefocus toa controlvoid CChatDlg:OnSysCommand(UINT nID,LPARAMlParam)if(nID&0xFFF0)=IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID,lParam);HCURSOR CChatDlg:OnQueryDragIcon()return(HCURSOR)m_hIcon;BOOL CChatDlg:InitSocket()m_socket=socket(AF_INET,SOCK_DGRAM,0);if(INVALID_SOCKET=m_socket)MessageBox(套接字创建失败!);return FALSE;SOCKADDR_IN addrSock;addrSock.sin_family=AF_INET;addrSock.sin_port=htons (6000);addrSock.sin_addr.S_un.S_addr=htonl(INADDR_ANY);专业的文档int retval;retval=bind(m_socket,(SOCKADDR*)&addrSock,sizeof(SOCKADDR);if(SOCKET_ERROR=retval)closesocket(m_socket);MessageBox(绑定失败!);return FALSE;return TRUE;DWORD WINAPICChatDlg:RecvProc(LPVOID lpParameter)SOCKET sock=(RECVPARAM*)lpParameter)-sock;HWND hwnd=(RECVPARAM*)lpParameter)-hwnd;delete lpParameter;/视频讲述时,遗忘了释放内存的操作。 sunxin SOCKADDR_IN addrFrom;int len=sizeof(SOCKADDR);char recvBuf200;char tempBuf300;int retval;while(TRUE)retval=recvfrom(sock,recvBuf,200,0,(SOCKADDR*)&addrFrom,&len);if(SOCKET_ERROR=retval)break;sprintf(tempBuf,%s说:%s,i_ntoa(addrFrom.sin_addr),recvBuf);:PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)tempBuf);return0;void CChatDlg:OnRecvData(WPARAM wParam,LPARAMlParam)CString str=(char*)lParam;CString strTemp;GetDlgItemText(IDC_EDIT_RECV,strTemp);str+=rn;str+=strTemp;SetDlgItemText(IDC_EDIT_RECV,str);专业的文档void CChatDlg:OnBtnSend()/TODO:Add yourcontrol notificationhandlercodehere DWORDdwIP;(CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS1)-GetAddress(dwIP);SOCKADDR_IN addrTo;addrTo.sin_family=AF_INET;addrTo.sin_port=htons (6000);addrTo.sin_addr.S_un.S_addr=htonl(dwIP);CString strSend;GetDlgItemText(IDC_EDIT_SEND,strSend);sendto(m_socket,strSend,strSend.GetLength()+1,0,(SOCKADDR*)&addrTo,sizeof(SOCKADDR);SetDlgItemText(IDC_EDIT_SEND,);专业的文档实验七数据库的基本实现 一、实验目的 1、熟悉数据源的建立和配置过程。 2、掌握使用ODBC技术创建一个数据库应用程序的基本步骤和技术要点。 3、掌握使用ADO技术创建一个数据库应用程序的基本步骤和技术要点。 二、实验内容与步骤 1、使用ODBC技术访问数据库使用ODBC创建一个简单的学生信息管理系统,能够实现学生基本信息的添加、删除、修改、查询等操作。 通过本题目掌握ODBC数据源的配置过程,了解利用CDatabase类对象连接一个数据库,利用CRecordset类访问数据库的记录,以及CRecordView类的使用。 2、使用ODBC访问多表数据库编写一个学生成绩单管理系统,用来管理某门课程的成绩单。 当教师登录以后,可以对学生成绩进行添加、删除、修改、查询等操作。 而当学生登录以后,只能对成绩进行查询、显示操作。 【实验步骤】 (1)设计数据库用Microsoft Aess创建数据库“学生成绩单.mdb”,其中包含2个表用户口令表USER_PSW

温馨提示

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

最新文档

评论

0/150

提交评论