计算机图形学实验指导书(10)
void CMouseSpringView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CDC *pDC=GetDC();
pDC->SelectStockObject(NULL_BRUSH); if (!m_ist) //绘制圆 { m_bO=m_bR=point; //纪录第一次单击鼠标位置,定圆心 m_ist++; } else { m_bR=point; //记录第二次单击鼠标的位置,定圆周上的点 m_ist--; // 为新绘图作准备 DrawCircle(pDC,m_bO,m_bR); //绘制新圆 } ReleaseDC(pDC); //释放设备环境 CView::OnLButtonDown(nFlags, point); }
void CMouseSpringView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CDC *pDC=GetDC();
int nDrawmode=pDC->SetROP2(R2_NOT); //设置异或绘图模式,并保存原来绘图模式 pDC->SelectStockObject(NULL_BRUSH); if(m_ist==1)
-- 22
{ CPoint prePnt,curPnt; prePnt=m_bR; //获得鼠标所在的前一位置 curPnt=point; //绘制橡皮筋线 DrawCircle(pDC,m_bO,prePnt); //用异或模式重复画圆,擦出所画的圆 DrawCircle(pDC,m_bO,curPnt); //用当前位置作为圆周上的点画圆 m_bR=point; } pDC->SetROP2(nDrawmode); //恢复原绘图模式 ReleaseDC(pDC); //释放设备环境 CView::OnMouseMove(nFlags, point); }
第六步:添加成员函数的程序代码。
分别为两个成员函数DrawCircle()和ComputeRadius()添加程序代码,程序如下: void CMouseSpringView::DrawCircle(CDC *pDC, CPoint cenp, CPoint ardp) {
int radius=ComputeRadius(cenp,ardp); // 由圆心确定所画圆的外切区域
CRect rc(cenp.x-radius,cenp.y-radius,cenp.x+radius,cenp.y+radius); pDC->Ellipse(rc); //画出一个整圆 }
int CMouseSpringView::ComputeRadius(CPoint cenp, CPoint ardp) {
int dx=cenp.x-ardp.x; int dy=cenp.y-ardp.y;
//sqrt()函数的调用,在头文件中加入#include \ return (int)sqrt(dx*dx+dy*dy); }
第七步:编译运行程序,验证运行结果。
3.4 菜单程序设计
在Windows应用程序设计中,菜单是重要的用户界面对象和交互手段。Windows支持三种类型的菜单,他们分别是菜单栏(主菜单)、弹出式菜单和上下文菜单(单击鼠标右键弹出的浮动菜单)。本节主要介绍如何对菜单进行编辑、如何响应菜单的消息、如何运用菜单的UI机制、如何动态地改变菜单以及如何处理上下文菜单。
-- 23
3.4.1 菜单编辑器
菜单编辑器用来创建并编辑菜单资源,是一个可视化设计工具。对于MDI应用程序(多文档应用程序),AppWizard自动生成两个菜单资源:IDR_MAINFRAME和IDR_PrjNameTYPE (PrjName是应用程序工程名)。在MDI子窗口打开之前系统显示IDR_MAINFRAME菜单,在MDI子窗口打开之后系统显示IDR_ PrjNameTYPE菜单。对于SDI应用程序,AppWizard只生成一个菜单资源:IDR_MAINFRAME。
在一个SDI文档工程项目中,在工作区窗口中选择ResourceView标签,列出工程项目的所有资源,选择Menu,双击IDR_MAINFRAME,弹出菜单编辑器窗口,如图3-15所示。
图3-15 菜单编辑器 (1)创建菜单和菜单选项
在图3-15中,可以创建主菜单,也可以创建菜单选项。可以通过Tab键(向右移)、Shift+Tab键(向左移),或鼠标定位,通过Ins键在某一菜单前插入新的菜单。另外,用鼠标拖动菜单方框可以改变菜单项的相对位置。例如,在查看菜单前插入一个“绘图”菜单,包括直线、圆、矩形和颜色四个菜单项。
步骤1:定位到“查看”菜单,按下Ins键或Insert键,插入一个空菜单项;通过Delete
键删除一个菜单项;
步骤2:双击空菜单项,弹出菜单项对话框,并输入菜单信息,如图3-16所示。
图3-16 菜单对话框
-- 24
步骤3:添加菜单项条目。
双击“绘图”菜单下的空菜单项,弹出菜单项对话框。如图3-17所示。
图3-17 菜单项对话框
步骤4:重复第3步,完成菜单设计。
在菜单设计中,可以为菜单或菜单项定义助记符,方法是在响应的字符前加符号&。菜单项的ID号,可以选取已有的ID号,也可以自定义ID号,如果不输入ID号,则系统自动生成一个ID号。另外,在菜单项对话框中还可以为菜单项指定风格。另外,还可以为菜单项定义快捷键,方法是在标题后直接输入,转义符\\t表示快捷键左对齐。
(2) 弹出菜单的设计
弹出菜单就是主菜单项的子菜单,也称为级联菜单。
创建级联菜单的方法如下:选择级联菜单项,在该菜单项属性对话框中选中“弹出”(Pop-up)复选项,于是该项便被标记级联菜单符(?),且在该项的右侧出现新的菜单项空方框。添加级联菜单项的方法与上述方法相同。如图3-18所示。
图3-18 级联菜单设计
(3)上下文菜单
单击鼠标右键将弹出相应的上下文菜单。为了在应用程序中使用上下文菜单,首先要创建菜单本身,然后将其与应用程序代码链接。创建上下文菜单的步骤如下:
步骤1:创建带空标题的菜单栏。右击Menu,选择“Insert”,创建一个空的菜单栏; 步骤2:输入菜单标题和菜单项,并保存菜单资源,默认为IDR_MENI1,创建其级联菜单用于显示;
步骤3:在源文件中添加下列程序代码: CMenu menu;
// 装载并验证菜单资源;
VERIFY(menu.LoadMenu(IDR_MENU1));
-- 25
CMenu *pPopup=menu.GetSubMenu(0); ASSERT(pPopup!=NULL);
//显示菜单内容
pPopup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON,
x,y,AfxGetMainWnd());
在创建上下文菜单资源后,应用程序代码装载菜单资源并使用函数TrackPopupMenu()来显示菜单内容。
3.4.2 菜单消息响应
Windows应用程序是通过消息传递机制运行的。为菜单项添加相应功能函数的方法步骤:
步骤1:右击所选菜单项,从弹出的菜单中选择“建立类向导…”,弹出类向导对话框,如图3-19所示;
图3-19 建立类向导对话框 步骤2:选择工程名(Project:),并在类名(Class name:)中选择视图类,在Object IDs:列表中选择菜单项的ID号,在Messages:列表中选择COMMAND; 步骤3:单击“Add Function…”,添加成员函数;
步骤4:选择该成员函数,单击“Edit Code”输入或编辑程序代码。
3.4.3 综合示例
利用菜单资源编辑器在默认的菜单中添加“字体”菜单项。在程序运行过程中改变菜单项的显示状态。
步骤1:创建Mymenu应用程序工程文件,选择单文档应程序; 步骤2:利用Resource View设计菜单,如图3-20所示;
-- 26
…… 此处隐藏:1065字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [基础教育]2016-2022年中国钢芯铝绞线市场现状调
- [基础教育]语文部编版初一语文下册练习题 句式变
- [基础教育]南京继续教育参考答案--深入学习贯彻习
- [基础教育]国旗下讲话稿——珍惜时间好读书
- [基础教育]北师大版六年级数学下册圆锥的体积教学
- [基础教育]人教版-音乐-四年级下册-四年级下册音
- [基础教育]乔布斯2019年斯坦福大学毕业典礼致辞.d
- [基础教育]2015年加油站安全知识竞赛试题及答案
- [基础教育]2020年教师年度考核个人工作总结
- [基础教育]2019年中考历史试题-2019年大庆市初中
- [基础教育]初三仁爱英语第一轮总复习教案
- [基础教育]SG-A094电气配管安装工程隐蔽验收记录
- [基础教育]冀教版小学数学三年级下册第六单元教材
- [基础教育]青岛版(五制)小学科学二年级下册16《制
- [基础教育]2018-2019年初中科学初一中考真卷测试
- [基础教育]幼儿园大班期末简短评语精选
- [基础教育]2018云南临沧公务员考试申论技巧:这样
- [基础教育]学校食堂经营管理方案
- [基础教育]新中国砥砺奋进的七十年原文
- [基础教育]真空泵的选型及常用计算公式
- 高职田径课程教学现状与对策
- 全髋关节置换术在老年股骨颈骨折患者中
- 青人社厅函〔2016〕576号(附件)工资
- cp101-07砂子检验作业指导书 - secret
- 微观经济学 第八章 博弈论 习题
- 2014高考真题(词语运用)汇编及答案
- 2018年人教版七年级语文下册《第三单元
- 苏教版数学四年级上册第一单元试题 - M
- 四川大学新闻与传播考研2000-2010年真
- 浙江万里学院英语专业四年制本科教学计
- 最新2018马年事业祝福语-范文word版(2
- 最全模具行业术语英文翻译
- 皮亚杰的发展心理学理论
- 64篇高考情景式默写 练习题及答案
- 仿写(学生稿)
- 《SQL Server数据库技术》试卷A
- 第七章作业答案
- 江苏省赣榆县海头高级中学高中语文必修
- 浙江省2001年10月自考正常人体解剖学答
- 2012英语重点短语




