window程序设计复习材料.doc.pdf

上传人:tbuqq 文档编号:5616461 上传时间:2020-07-02 格式:PDF 页数:27 大小:3.74MB
返回 下载 相关 举报
window程序设计复习材料.doc.pdf_第1页
第1页 / 共27页
window程序设计复习材料.doc.pdf_第2页
第2页 / 共27页
window程序设计复习材料.doc.pdf_第3页
第3页 / 共27页
window程序设计复习材料.doc.pdf_第4页
第4页 / 共27页
window程序设计复习材料.doc.pdf_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《window程序设计复习材料.doc.pdf》由会员分享,可在线阅读,更多相关《window程序设计复习材料.doc.pdf(27页珍藏版)》请在三一文库上搜索。

1、Q创建新的工作空间(B) 脈加到当前工作空间回 厂从属于(0: I 3 取消 三明学院2012-2013学年第一学期Wi ndows程序设计 重修考试试卷(上机开卷) 班级:11软件1. 2班考试时间:120分钟 题号 * 二三四五六七总分 得分 评阅人 复核人 提示:4个题的工程文件名为XXX01? XXX03,XXX为考生 姓名缩写 , 运行效果可参考Exam01?exe? Exam03? exe。 1、创建一个MFC基本对话框的应用程序(24分)。 若单击【确定】后提示“XXX :你单击【确定】按钮关闭程序!“;若单击【取消】后提示XXX :你单 击【取消】按钮关闭程序!(如下图所示);

2、其屮“XXX为考生姓名缩写。 设计功能要求 : 创建基本对话框丁程(3分)(要求丁 ?稈名命名为“xxxor ,其屮xxr为考生姓名缩写); 新建工程,名字为LhhOl: .ATL COM AppWizard Cluster Resource Type Wizard 胡Custom AppWizard Database Project $DevStudio Add-in Wizard nExtended Stored Proc Wizard filSAPI Extension Wizard (Makefile 工程名称业 |LhhO1 包置? |D:Program Files (x86)Mic

3、rosof1 ActiveX Controlwizard 画MFC AppWizard (dll) 58 MFC AppWizard (exe) Tj Utility Project 亏1 Win32 Application 1 Win32 Console Application g Win32 Dynamic-Link Library 飼Win32 Static Library 平台(0: PiWin32 确定 选择基本对话框 : 文件 工程i工作区I其它文档I 您要创建的应用程序类型是: 单文档固 多重文档 (M) v 文档/ 査看体系结构支持世 I 您的用的语言是: I 中文简体申国 3

4、 完成I 取消 点击完成。岀现这个界面: 石登录票统 TODO:在这里设置对话控制。 ? : :ML (2)设置对话框的标题为“登录系统3设置对话框标签的标题为“姓名二设置确定按钮的标题为 可登录浆统 TODO:在这里设置对话控制。 ID: |IDD_LHH01_DIALOG 字体名 称:朱体字体大小: 9 三标題 () :登录系 细 菜单 (M) “进入”,设置取消按钮的标题为“退出“(6分): 答:在这个界面上的对话框上右击,打开菜单,选择“属性”。在对话属性屮将“标题”改为“登录 系统”。 对话层性 占纟常損样式| 更多样式扩展样式 | 更多扩展样式 ! 位置丫 : 类名称:I 再在各个

5、控件上右击,点击“属性”,打开属性对话框,将标题改为题II要求的文字,然后加上文本 控件和编辑框,将控件的位置调整好。最终效果如下: 佃轄球i : : 姓名:期辑 登录 | 退出I (3)添加编轲框控件 , 并添加编辑框控件相关联的成员变量,变最名为“m_XXXEditl“(3分) ; 将鼠标移到编辑框上面,右击,选择“建立类向导”,打开类向导对话框,选择第二个“变量”(具 体英文叫什么,懒得打了,包容一下哈。)选项卡。 Message Maps Member Variables Automation ActiveX Events Class Info Description: 取消 然后双击

6、黄色的地方,就是那个“ii ) c_Ei) m ”,打开“添加变量”对话框。然后按照题口要求,将控件的 名字变量改成“m_XXXEditl”,从这里我们町以看出,这个m_LhhEditl是字 符串类型的CString,这么想 , 这玩意肯定是代表这个编辑框的内容, 最后点击“0K”,如 下图: Add Member Variable I 左 Member variable name: r OK 1 m LhhEdit1 p , Category: (Value Cancel Variable type: | CString Description: CString with length va

7、lidation 单-击【进入】按钮或按冋乍键后弹出提示信息框,显示内容为“YYY:你要遡入系统厂,其屮YYT为编辑 框内容(6分)(注意 : 读编辑框数据前要调用UpdateDataO更新数据): 答:分别双击“登录”按钮和“退出”按钮, 然后弹出建立函数方法对话框, 都点击“0K”, 生成按钮的函数方 法。完成效果如下: uoid CLhhO1Dlg:OnOK() uoid CLhh01Dlg?:0nCancel() uoid CLhhOIDlg:0nCancel() / TODO: Add extra cleanup here CDialog:0nCancel(); 然后通过之前建立的变

8、量名m_LhhEditl来获得编辑框内容。 (5)单汁?【退出】按钮或按Esc键后弹出提示信息框,显示内容为“YYY:你耍退出系统厂,其屮 YYY为编辑框内容(6分)(注意:(4)若只显示消息框而没显示“YYY“,得一半分数)。 答:在函数方法屮加入以下代码,具体的代码解释功能我已经打了注释。 CString name; uoid CLhhO1Dlg:OnOK() Rect3ng:Le(p1 ?x,p4 ?y ,p2?x,p2.y);调用pDC来画 矩形pDC-MoueTo(p1);/将线条的开始点移动到P1 pDC- LirwTo(p2); 备线条画到P2 答:在这个类文件屮右击,打开“ 新

9、建类向导 ” ,选择第一个选项卡。 / / ULIIIIUZLV 丄tfW UUllLr UULUUL丄UH CPoint p19p2; CLhhO2Uiew:CLhhO2Uiew() 然后运行看一下,什么情况,是否正确,哎呀,那肯定是对的。 (3)利用鼠标 Message Maps Projec t: Lhh02 Member Variables Automation | ActiveX Events Class name: jJ |CLhhO2View Class Info Add Class. Add Function Delete Function CLhhO2View厶CalcWin

10、dowRect ID APP ABOUT ID APP EXIT 9 Create DefWindowProcJ ID EDIT COPYDestroyWindow ID EDIT CUTDoDataExchange ID EDIT PASTEGetScrollBarCtrl ID EDIT UNDOIsSelected Edit Code Member functions: V OnBeginPrinting V OnDraw V OnEndPrinting V OnPreparePrinting PreCreateWindow Descriptio n: 确定取消 找到LButtonDow

11、n,然后点击右边的Add Function,点击Edit Code。 MFC ClassWizard 一 Message Maps | Member Variables | Automation ActiveX Events | Class Info | Project:Class name: |LhhO2 23 |cLhhO2View D:ALhhO2LhhO2View.h, D:.LhhO2LhhO2View.cpp Add Class. Add Function Object IDs: Delete Function CLhhO2View ID_APP_ABOUT ID_AFP_EXIT

12、 ID_EDI 匚COPY ID_EDIT_CUT ID_EDIT_PASTE ID_EDIT_UNDO WM KEYUP WM KILLFOCUS WM LBUTTONDBLCLK |WM LBUTTONDOWN 1 WM LBUTTONUP WM MOUSEMOVE WM MOUSEWHEEL Edit Code Member functions: V OnBeginPrinting V OnDraw V OnEndPrinting V OnPreparePrinting V PreCreateWindow Description: Indicates when left mouse bu

13、tton is pressed 然后在出现的方法里面,加入以下的代码: Messages: D:JLhhO2LhhO2Viewh D:.JLhhO2LhhO2View.cpp Object IDs: Messages: Projec t: Lhh02 Class name: |cLhhO2View Add Class. D:.LhhO2LhhO2View.h, D:ALhhO2LhhO2View.cpp Add Function Delete Function CLhhO2View CalcWindowRect Create DefWindowProc ID APP ABOUT ID APP

14、EXIT ID EDIT COPY ID EDIT CUT ID EDIT PASTE DestroyWindow DoDataExchange GetScrollBarCtrl ID EDIT UNDO IsSelected Edit Code 确定 uoid CLhh02Uiew:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default P1 -x=point.x;/#键点击的位萱给P1 P1 -Sl=point -y;/#左键点丟的位置给P

15、1 Inualidate();/ij 新一下董绘 CUiew:OnLButtonDown(nFlags, point); 然后运行看卜效果。 利川鼠标移动事件且有左键按下时(nFlags=MK丄BUTTON)僦标所在位置作为绘制直线和矩形的停止位 置画直线和矩形3分(注意:改变图形位胃 ?或显示信息后要调HJlnvalidateO使系 统重新绘制 ) 。 答:接下来我们根据题I丨需要做一个鼠标移动事件的冋调函数,在这个类文件屮右击,打 开“新建类向导”,选择第一个选项卡。 MFC ClassWizard Message Maps | Member Variables Automation Ac

16、tiveX Events | Class Info V OnBeginPrinting V OnDraw V OnEndPrinting V OnPreparePrinting V PreCreateWindow Description: 取帝j 找到MouseMove,然后点击右边的Add Function,点山Edit Code。 Object IDs: Messages: Member functions: Message Maps | Member Variables Automation ActiveX Events | Class Info Class name: Project:

17、 |LhhO2 D:.LhhO2LhhO2View.h, D:.JLhhO2LhhO2View.cpp 习|CLhhO2View Add Class. Add Function Object IDs: Messages: Delete Function CLhhO2View ID APP ABOUT ID ID ID ID ID APP_EXIT EDITlCOPY EDIT_CUT EDIT_PASTE EDIT UNDO Member functions: WM_LBUTTONDOWN WM LBUTTONUP WM MOUSEMOVE WMMOUSEWHEEt WMMOVE WM_PAI

18、NT WM RBUTTONDBLCLK V OnBeginPrinting V OnDraw V OnEndPrinting W OnLButtonDown ON WM LBUTTONDOWN Description: Indicates mouse-cursor movement 确定 Edit Code 取消 然后在出现的函数方法屮写入以下代码: uoid CLhhO2Uiew:OnMouseMoue(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default p2.x=

19、point.x;/将鼠标 移动的位置给P2 p2.y=point .y; Inualidate(); CUiew:OnMouseMoue(nFlags, point); 再运行一下看一下效果。但是有一个问题,怎么让它停下来呢?我想到了一个我经常用的东西,那就是标 志,嘿嘿,flag。我们建一个int整形变量,然后给它的值不是1就是0, 0 代表“关”,1代表“开”,作为 一个开关变量。然后左键最开始点击的时候是0,将坐标作为起点,然后再次点击的时候是1,将左键的坐标作 为终点,这样就对以了,那么开始做。首先在函数外定义下半身的全局变暈flag,给它初值是“关”(0)。 iF(Flag=0)/

20、判断是否p1.x=point.x;/3 左 叱冃 丄 口且二 口 P1 -y=Point 左键点击的莅萱给 Flag=1;/A标志他想珊; else/否则朗机的 , 护 f p2.x=point.x;/ 鼠 p2.=point.y; flag=0;/将标志做成关机 的 Passage handlers int Flag=O; volrrCrHn0VWOnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default P1 -x=point.x;/将左键点击

21、的位萱给P1 P1 -y=Point?y ;/将左键点击的位置给P1 InualidateO;/刷新一下董绘 CUiew:OnLButtonDown(nFlags, point); void _thiscall CWnd:OnLButtonDown(unsigned intCPoint) uoid CLhh02Uiew: nrxdyb, uruniL puxiic; / TODO: Add your message handler code here and/or call default p2.x=point.x;/ 将鼠标移訪的位置给P2 p2 .y=point .y; Inualidat

22、e(); CUiew:OnMouseMoue(nFlags, point); 然后重新场左键点击事件。 int Flag=0; uoid CLhhO2Uiew:OnLButtonDovm(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default ? - 旦丕- 的,就说明是左键作为起点 P1 P1 InualidateO ;刷新一下重绘 CUiew:OnLButtonDown(nFlags 9 point); 运行一下看一下,结果发现效果不太对啊,咋冋事呢?嘿嘿,其实是因为

23、我们鼠标不小心动了一卜 ?,导致鼠标移动事件被触发了,我们现在要做的就是将鼠标移动事件跟fbg开关 绑定起来。所以我们 也要加入判断。 uoid CLhhO2Uiew:OnMouseMoue(UINT nFlags, CPoint point) Inualidate(); CUiew:OnMouseMoue(nFlags, point); 最后运行一下,发现完成了!厉害把? CXXX02View的OnDrav事件屮设置画刷填充颜色为蓝色3分: 答:反正很麻烦的东西,我们要做一个画刷,然后重新画图形,我们先找到OnDraw方法。 看下代 码。 uoid CLhh02Uiew:OnDrau(CDC

24、* pDC) Rectangle(p1.x,p1 .y ,p2.x,p2.y) ;/调用pDC来画矩形pDC- MoueTo(p1);/LineTo(p2);将线条画到 P2 / TODO: add draw code For natiue data here 现在我们要将那个矩形里面填充蓝色。 我们作一个画刷,然后设置成填充格式,并且是蓝色的。代码如下: void CLhhO2Uiew:OnDraw(CDC? pDC) SelectObject(/#!刷的地址设置到P匹上面去,pDC是王下文,类似于屏幕。 pDC-Rectangle(p1.x?p1.yp2.xp2.y);/j用pDC 来画矩

25、形 pDC-MoueTo(p1);/#LineTo(p2);/# 画到P2 / TODO: add draw code for natiue data here 然后运行一下,看到效果: LJ Q aa e 咱 v | m | CXXX02View的OnDraw事件屮设置画笔宽度为5、颜色为绿色3分: 答:接下來要设置一个画笔,并且是宽度5,并月?是绿不拉机的颜色。 代码如下: uoid CLhh02Uiew:OnDraw(CDC* pDC) CLhh02Doc* pDoc GetDocunent(); ASSERT_UALID(pDoc); CBrush brush;/声明一个画刷 brus

26、h.CreateSolidBrush(RGB( 0,0,255);/设让为实心并且将蓝色伎入到画刷里面,蓝色星RGB ( 0, 0, 255)PDC- SelectObject(/将画刷的地址设置到P些上面去 ,pDC王下文,类似于屏幕。 pDC-Rectangle(p1 .x,p1 .y fp2.x,p2.y);/调用pDC来画矩形 CPen pen(PS_SOLID,508(0,25,0);/作一仝画笔,是宽度5绿色的pDC-SelectObject(/Rectangle(p1.xfp1.yp2.xfp2.y);/i|J用pDC来画矩形,主要是画边框PDC-MoueTo(p1);将线条的开

27、始点 移动到氏pDC-LineTo(p2);将线条画到P2 / TODO: add draw code for natiue data here 最后运行一下看一下效果。 罂Untitled ? LhhO2 . 文件(E)輪辑(E)查看也飞助 (ti) DEIS船电念寻缪 CXXX02View的OnKeyDown事件中实现丿IJ t I 光标移动键控制直线和矩形上下左右移动3 分; 答:接下来我们要添加一个键盘事件用来接收t I - 这四个按键。 所以我们根据题口在这个类文件屮右击,打开“新建类向导”,选择第一个选项卡。 MFC ClassWizard Message Maps | Membe

28、r Variables Projec t: Automation ActiveX Events | Class Info Class name: Lhh02 |CLhhO2View Add Class. Add Function Delete Function CLhhO2ViewCalcWindowRect ID APP ABOUT ID APP EXIT 1 Create DefWindowProcJ ID EDIT COPYDestroyWindow ID EDIT CUTDoDataExchange ID EDIT PASTEGetScrollBarCtrl ID EDIT UNDO

29、IsSelected Edit Code Descriptio n: 确定取消 找到Key Down,然后点击右边的Add Function,点击Edit Code。然后加入以下代码 : uoid CLhhO2Uiew:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here and/or call default switch(nChar) _ InualidateO;/重绘 CUiew:OnKeyDown(nChar9 nRepCnt9 nFlags); 运行看下效

30、果,嘿嘿,不错吧? CXXX02View类屮添加CString类型成员变量s,用于存储CXXX02View的OnChar事件屮所接收到的键 盘字符信息,并在OnDraw事件屮将接收到的字符显示于图形右边(如上右图Good)6 分。 答:我们需要声明一个CString变量s,我们在构造函数上面声明,因为我们需要在OnDraw 方法屮把它画 出来,而声明的越高,作用域越大。 D:JLhhO2LhhO2Viewh D:.JLhhO2LhhO2View.cpp Object IDs: Messages: Member functions: V OnBeginPrinting V OnDraw V On

31、EndPrinting V OnPreparePrinting PreCreateWindow / / ULIIIIUU 丄匕 W UUllLr UUL JLUH/UWLF UULXUII CPoint p1 ,p2; CString s; | CLhhO2Uiew:CLhhG)2Uieu() Text0ut(p2.x*50vp2.yvs); uurusn brusn;声明一个吊厂 brush.CreateSolidBrush(RGB( 0,0.255);/设勁实心并且将蓝色传入到慎刷里面,蓝包是RG8 ( 0. 0. 255): PDC- Select0bject(6brush);将画刷的地

32、雌 “到P匹上面去,卩DC是上下文,萸仪于屏pDC- Rectangle(p1.xtp1.y,p2.xfp2.y);/igpDC 来画矩形 CPen pen(PS-S0LID,5?RGB(0.255) ;作一仝画笔 . 是気度5绿色的pDC-Select0bject(6pen);/将画笔的地址设賓到 pDC上画去,pDC-Rectangle(p1.xtp1.ytp2.xtp2.y);/i?用pDC来画矩形,主要是画边框 PDC-MoueTo(p1);将线茨的开始点移动到P1 pDC-LineTo(p2);将线条画到P2 / IODO: add draw code for natiue data

33、 here 然后再在键盘那边将字符输出到s屮,最后画出来。 uoid CLhhO2Uiew:OnKepDown(UINT nChar, UINT nRepCnt9 UINT nFlags) CUiew:OnKeyDoun(nChar 9 nRepCnt 9 nFlags); 最后运行,看下效果!嘿嘿嘿,懂了吗?。 3?汉字输岀、主菜单和弹出菜单、字体和颜色设置、通用对话框(46分) 。 口回冈 颜色 创建单文档工程(3分)(要求T程名命名为“XXX O37英TXXX“为考生姓名缩写) ; 答:按照之前建立单文档丁程的方法建立一个LhhO3T.程。 CXXXO3View类屮添加COLORREF类

34、型成员变量col和LOGFONT类型成员变量If, colJTH :存储所 显示文本的颜色,If用于存储所显示文本的字体(3分): 答:打开View类。在构造函数之前加上变量定义: / CLhh03Ui 色初 const 尸uction/|dest:ruct:ion COLORREF col;LOGFONT 1F;| 03 褊宗 取消 设置 左无标题 - Exa03 设计功能耍求 : COLORREF col;LOGFONT IF; CLhh03Uiew:CLhh03Uiew() SetTextColor(col);设萱颜色CFont F;声明 字体 F.CreateFontIndirect(

35、/ 将逻辑字体给字体pDC-SelectObject(F);丧置 字体pDC-TextOut(1O0,100,s);/ 输岀穴字 / TODO: add draw code For natiue data here 添加一个主菜单项,标题为“设置二其下添加两个了菜单项,标题分別为“?体 讦旷颜色二 ID分别为ID_FONT和ID_C0L0R (6分); 答:找到VC+6.0左栏的Rescource -? Lhh03 classes + CAboutDIg ? *i: CLhhO3App 毎F CLhh03Doc + ?UCLhhO3View 国CMainFrame + LJ Globals 打

36、开进入 , 再选择Menu,双击红框的那个 菜单项目厘性 勺缪常爆1扩展样式1 1D : ID FONT 标?() :II字体| 厂分 厂已 提示( 隔符回厂弹出(Q) 厂 非活动中斷回: | 无d 帮助0L) M): 1 并且赋给儿个ID,具体如下 : Class name: Project: |LhhO3 二|CLhhO3View D:.LhhO3LhhO3View.h/ D:ALhhO3LhhO3View.cpp Object IDs: ID_FILE_PRINT ID_FILE_PRINT_PREVIEW ID_FILE_PRINT_SETUP ID_FILE_SAVE ID FILE

37、 SAVE AS Add Class. Add Function Delete Function flS_NEXT_PANE Member functions: V OnBeginPrinting W OnColor ONJDCOLORlCOMMAND V OnDraw OnEndPrinting Edit Code 确定 菜单项目雇性 虫缪常損I扩展样式I ID: |ID_COLOR| Fl 标?(CJ:| 顏色 厂分隔符回厂弹出回厂非活动中断回:底3 厂已复选凶厂已变灰回厂帮助UJ 提示(M): CXXX03Viev中添加“字体”菜单项(ID_FONT )单击事件代码,实现弹出字体对话框,

38、 并 f值和col值作为字体对话框的初值(颜色通过字体对话框对象的m_cf? rgbColors属性设置),单击 字体对话框【确定】按钮后,将所选择的结果存冋If和col,并重新刷新视(调JTIInval idateO 刷新) (6分): 答:在当前界面上右击 , 选择建立类向导 , 找到ID_FONT,选择command,点击Add Funciton, (注要 选择ClassName 是V i ew) MFC ClassWizard Message Maps I Member Variables Automation ActiveX Events | Class Info ON ID FON

39、T:COMMAND Description: Handle a command (from menu, accel cmd button 取消 Messages: 然后在函数屮添加代码代码段: Message Maps | Member Variables Automation j ActiveX Events | Class Info Class name: uoid CLhhO3Uiew:0nFont() / TODO: Add your command handler code here| CFontDialog dlg( dig .rgbColors=col; if(dlg.DoMod

40、al()?=IDOK)return; col=dlg?m_cF.rgbColors; dig.GetCurrentFont( Inualidate(); (7) CXXX03View? p添加“颜色 “ 菜单项(ID_COLOR )单击事件代码 , 实现弹出颜色对话框 , 并col值 作为颜色对话框的初侑(颜色在定义颜色对话框对象时直接赋们. ),单击颜色对话框【确定】 按钮后,将所选择的结果存冋col,并重新刷新视(iJTIlnvalidateO刷新)(6分); 答:在半前界面上右山,选择建立类向导,找到I DECOLOR,选择command,点JiAdd Fimcitom (注 意要选择C

41、1 as sName是V i ew) MFC ClassWizard Add Class. Add Function Project: |LhhO3 二 |CLhhO3View D:.LhhO3LhhO3View.h, D:.LhhO3LhhO3View.cpp 然后在函数小添加代码代码段: uoid CLhhO3Uiew:0nColor() / TODO: Add your command handler code here CColorDialog dlg(col); if(dlg.DoModal()!=IDOK)return; col=dlg .GetColor() ;| Inualidate(); CXXX03View右由事件代码屮添加弹出菜单, 菜单项标题分别为“字体”和“颜色”,其功能主菜 单下的“字体”秋濒色”菜单项功能一致(6分)o 答:最后运行一下,看一下,嘿嘿,不错把?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1