现在的位置: 首页 > 综合 > 正文

Vs2008中MFC简单绘图学习笔记

2013年09月30日 ⁄ 综合 ⁄ 共 887字 ⁄ 字号 评论关闭

这几天刚刚学习MFC,不想在VC++6.0中写代码,结果在VS2008中是各种问题。下面写一下学习心得,以防日后再用,如果那里不对请大牛指正~~

讲到画图,不得不提及MFC的消息映射机制:通过窗口句柄映射表和消息映射表来用窗口类的处理函数进行响应。

问题一:

为了了解消息机制,我首先做了一个事件:左击鼠标弹出对话框:用MFC中的MessageBox(“NIHAO”);结果出错,进过研究,是Unicode和ANSI之间的转化问题。vc6.0使用的字符编码是ANSI,而vs2008默认是使用Unicode编码,只要更改vs2008的默认字符集设置就行了。方法如下:右击工程名——>属性——>配置属性——>常规——>字符集——>改为“未设置”。

问题二:

在VS2008中消息添加有所不同,下面以View为例:1:打开类视图,右键选择属性,选择到消息中,里面包含大量的消息,然后添加消息即可,变量右键View也可以,有的参数类型没有,需要自己输入。

更为主要的是以前的Vc++6.0中的ClassWizard在vs2008中被遣散了,所以要麻烦一些。

问题三

框架类和视图类的关系:框架类像墙一样,视图类像墙纸一样,所以视图类总是在框架类前面。

问题四:绘图的集合简单类及其用法

1)绘画直线我们可以选择SDK中的HDC,也可以选择MFC中的CDC,也可以用CClientDC代码如下:

~HDC~

HDC hdc;
 hdc=::GetDC(m_hWnd);
 MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);//m_ptOrigin 自己声明的变量 
 LineTo(hdc,point.x,point.y);
 ::ReleaseDC(m_hWnd,hdc);

~CDC~

CDC * PDC=GetDC();

~CClientDC~

CClientDC dc(this)

2)绘画曲线或者连续曲线

用CClientDC可以实现,具体:1)添加一个变量用于确定左键的状态2)添加鼠标移动消息3)在鼠标移动消息中划线,注意要变化起点。

很多细节没有时间写出来,希望大家见谅~~~

 

抱歉!评论已关闭.