这几天刚刚学习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)在鼠标移动消息中划线,注意要变化起点。
很多细节没有时间写出来,希望大家见谅~~~