消息处理函数中编码实现。鼠标左键按下响应O
LButto
Dow
函数,确定绘图起始点,鼠标移动响应O
MouseMove函数,鼠标左键弹起响应O
LButto
Up函数,保存图形相关参数到文档类中并绘制最终的图形。图形相关数据的保存用到图元类,每当用户绘制完一个图形后,我们就可以实例化一个对应的图元子类对象,该对象实例就对应了用户所画的图形,图元的相关参数就保存在该图元类对象中,最后将图元类的指针存入文档类中定义的m_ptrArray列表类变量中。数据暂存模块定义了图元基类CGraph,直线段图元子类Cli
e,椭圆图元子类CEllipse,矩形椭圆子类CRecta
gle,其中CGraph从CObject类公有继承,直线段图元子类CLi
e、椭圆图元子类CEllipse、矩形图元子类CRecta
gle均从CGraph公有派生,CGraph类从CObArray列表对象类继承,CGraph对象实例可用于保存指向CObject对象的指针。创建以上图元类及CGraph类是为了在窗口大小改变或者窗口最大化时能够利用O
Draw函数实现图元的重画。图形属性设置模块比较简单,仅需在视图类中定义相关的变量,并在视图类的构造函数中初始化,然后在程序运
f行时动态改变其参数值即可。视图类中定义了dType、m_ptOrigi
、m_ptNext等变量,控制绘图的线型,
起点,终点等。
3工程步骤:
(1)利用应用程序向导生成一个基于单文档的应用程序,工程名称为Draw123。
(2)在CDraw123View类中添加私有成员变量,添加的成员变量及其对应的ID列于下表1所示。
表1视图类中定义的变量
变量类型
变量名称
变量说明
CPoi
t
m_ptOrigi
鼠标绘图开始点坐标
CPoi
t
m_ptNext
鼠标绘图终止点坐标
DrawType
dType
绘图类型
i
t
m_
Li
eWidth
线宽
COLORREF
m_clr
线色
(3)编辑菜单栏,在菜单栏增加“窗口绘图”菜单项,绘图菜单项子菜单项标题(Captio
)及对应ID
号列于下表2中。
表2菜单项及其对应ID
菜单项标题
ID
菜单项标题
ID
直线
ID_SHOW_SLINE
椭圆
ID_SHOW_ECLLIPSE
曲线
ID_SHOW_CLINE
扇形(无框)
ID_SHOW_NOSECTOR
矩形(位图)
ID_RECTA
扇形(有框)
ID_SHOW_SECTOR
矩形(可遮挡)
ID_Recta1
颜色设置
ID_SHOW_COLOR
字体调整
ID_SHOW_FONT
线型线宽
ID_SHOW_LSTYLEWIDTH
平面绘钟
ID_OMG
闹钟
ID_TEXT_DLG
f利用类向导ClassWizard添加以上菜单项的COMMAND和UPDATE_COMMAND_UI消息处理函数,并编写相关源代码。
(4)添加鼠标消息处理函数O
LButto
Dow
、O
MouseMove、O
LButto
Up。添加过程为:选择View菜单下的ClassWizard菜单项打开类向导,在类列表中选择CDraw123View类,在消息列表框中选择WM_LBUTTONDOWN消息并用鼠标左键双击,此时类向导自动在r