MFC编程几个知识点

创建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()函数了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值