一
创建MFC一般这个按钮都不选
注意选单个文档 而不是多个文档
注意如果需要数据库 的话 要选仅头文件
还有一定要是MFC标准
在单个文档那张图里改
一开始会生成
1 CSDN类就以工程文件为名字的类
2 Doc类与储存有关的类
3 View类 视图类 就用户界面可视化
但是直线 矩形的绘制OnDraw函数还是在自己的类
这个View只是外部的窗口与用户的界面
4Resource 资源类 就像各种菜单为什么是哪个样子的
各种位图资源的管理这种
5 stdafx
这个很重要是映射函数类
二
然后就是dlg就是对话框类 就是这种
它是我从编辑菜单 下边有一个图形属性 打开 出现的 就弹出的对话框它的ID一般都是IDD_这样子的
但是这个对话框为什么和图形属性那个菜单选项对应呢 接下来我们就来说这个问题
也就是为什么我们点编辑菜单栏下的 “图形属性” 出来的是“DIALOG1”而不是2呢
、、、、、
是这样的 我们先进入资源文件
右键Dialog
插入dlg
会出来一个这个
它的属性默认的为
IDD_DIALOG1所以我们不用管
然后接下来的做法 是以这个窗口为基础 右键它添加类
比如我们可以叫它 图形属性 类
然后这个类做好了
接下来 再
打开Menu的UI界面
我们输入对话框一
注意如果把Separator改为true
他就变成了菜单选项的分隔符
然后我们现在想一下 我们有了对话框的样子
和 对话框对应的菜单选项
接下来我们要想办法 把这两个个事对应起来
即点一下菜单选项会出来对话框
我们要建立这种联系
就要先给菜单选项的ID 做一个名字
假如是跟图形属性有关的对话框
就把ID 改为IDD_SHAPE
然后 我们之前说了 与用户交互的按钮的功能实现
即窗口可视化 实线 都是在View类里
因此打开类向导
选中View类
找IDD_SHAPE
这是那个菜单选项的ID名
然后双击它 会有COMMAND:(命令指挥)
然后就会在View类生成一个函数
这个OnIddShape函数就是
你一旦点击菜单选项的 “图形属性就会执行这个函数”
这是一个消息函数
然后既然我们一点击菜单选项的“图形属性就会执行这个函数 ”
而我们又已经给 我们的对话框定义了类 那我们 创建一个类对象就行了
注意我们生成的类是
这个类 这个类就是那个对话框 类 我们刚才右键生成类了吗 不是已经
这个函数一般分两个部分 先将View类里那些变量赋给对话框类
然后计算机会等待 如果你在那个对话框点确认了 即“IDOK“”了
就最下面这个确认的ID默认为IDOK
就等待你按确认或者取消
确认的话
会反过来赋值 即 对话框类的那些变量赋给View类同样的变量
至此 OnIddShape函数结束
也就是你点击菜单选项 弹出对话框一 然后按确认了
这是从View类到对话框类大的框架
然后像假如在窗口画线的话
它是要触发
WM_LBUTTUNUP
与WM_LBUTTONDOWN消息的
但是我们必须在类向导里 消息
也是加command消息就会生成
On函数 即 一点击鼠标 就会执行这个函数
有一个很重要的事忘说了
IDM(ID Menu)
IDD(Dialog)
IDC(Control Box)控件
所以前面那个菜单选项 应该是IDM_SHAPE 不好意思
所以就是我们点菜单选项或者对话框控件啥的 都是委托即 事件控制的
用的很多
就我们点菜单选项 因为我们已经在类向导 通过在VIEw类
里对菜单选项ID加了COMMAND事件
那就会根据生成的Onxxxx函数
执行这个函数 可能是
出现一个对话框 假如是颜色对话框这种系统
已经定义好的 对话框
就直接
CColorDlg 。。。生成一个对象就行了
然后根据是否等于那个IDOK
就决定View类相同变量存到CColorDlg
类相同变量函数反过来
如果需要自己定义对话框那就 自己先在rc2
自己做一个对话框 加各种控件啥的
做好那个对话框一定记得
它的ID是默认的IDD_DIGLOG1这样
然后右键对话框生成他自己的对话框类
菜单选项与我们自己定义好的对话框类 的联系
就在View类On菜单ID()这个函数 里
生成对话框 就在这一个点上
然后像控件这种
就ID 是IDC_开头 的
控件属于对话框的
所以他的消息函数即
On控件ID()函数在类向导
中是要在所属的对话框类中
添加COMMAND消息的
就我们在某个对话框一点哪个控件
如果想有反应 就给他在类向导 中
在它所属的对话框类中加command消息
那么你一点哪个控件 就会执行On函数了
这些函数是在所属的对话框类中的
然后就像WM_消息
wndows message吗 窗口消息一般都在最大的那个
框架 View类中 弄的
比如OnLbuttonUp函数
也可以将某个控件 注意只是控件与对话框类中的某个成员变量绑定
比如 m_nLineWidth与那个文本编辑框的绑定 在类向导
对话框类 成员变量中操作的
然后比如一点直线那个菜单选项 前面会有对勾
是在类向导 View类 IDM_
然后它除了第一个COMMAND 消息
还有一个第二个就是可以打对勾的消息
还有就是
我们一般在自己定义的对话框类
都会有例子 比如展示这个线是什么样的
都会有预览
它是通过在类向导 自己的对话框类
WM_Paint加COMMAND函数
生成OnPAINT()函数
那么只有windows系统已给这个窗口对象发一个
WM_PAINT消息 就会执行OnPAINT()函数
类似windows API 回调函数中的操作
如果我们想对某个控件做出
比如实现 虚线这种 一点完 就在窗口的预览图看到变化那么在控件对应的函数最后加Invaliate()
我猜想它就是给windows发送一个WM_paint消息 然后就执行OnPaint()函数了