粉丝9425获赞4.0万


大家好,本节我们来讲一下 mfc 当中的模态对话框和非模态对话框,模态对话框就是在显示之后,不能够对同一个程序中其他的窗口进行操作,非模态对话框在显示之后,还可以对同一个程序的其他窗口进行操作。 现在呢我们就打开一下开发工具,然后呢新建一个项目,选择 m f c, 然后呢 m f c 应用程序, 然后选择下一步,这里呢选择机遇对话框,然后呢这里安全检查勾选掉。 为了方便程序的可依据性,我们就在静态库中使用这个 mfc, 然后选择下一步,因为我们这只是一个对话框,所以呢可以最小化,没有必要最大化,那这里呢根据我们的需要可以进行勾选,然后呢选择下一步, 然后点击完成。我们现在呢就使用了这个对话框,然后按一下 ctrl 快捷键全选,然后再按一下 delete, 把它们都给删掉。我们先来修改一下这个窗口的标题,在我们外观这里,然后呢选择一下 caption, 然后呢再来点击一下工具箱,拖进去两个按钮, 第一个呢默认的名字叫做八探一,第二个呢叫做八探二,我们把鼠标放上去,选中这个按钮,其实也可以来修改他的标题,这里呢我写一个叫做模态对话框 id 呢,因为是一个模态对话框,我们将按照 q t 当中的一个标准,我们就写 e f e c, 当然了名字也可以自己来定, 然后这里的 id 我们给它改成 idc 授。接下来呢再进入到资源视图,然后呢我们再来新建两个 dialog caption, 这里呢我们就写一个叫模态对话框, 然后再插入进去一个按钮,同时呢进入这个资源视图,选择一下这个 i d d, 但是 logo 一,我们把这个 i d 呢给它改成 i d d, 然后呢 e s e c, 然后再来新建一个单儿 log, 也就是插入单儿 log, 然后修改一下这个 id, 给它改成瘦。然后呢进入到我们最开始的这个自愿视图,然后呢 选择这个闪电型的图标,也就是控件的事件,这里呢有一个 button click, 我们点击一下,然后呢选择 add, 这是一种方法。然后呢我们再回到这个资源视图,然后双击一下非母胎对话框,现在呢他又添加了一个,那这两个部分呢,就需要我们来处理一下这个代码,当我们点击的时候呢,我们要触发弹出母胎对话框和非母胎对话框。 那首先呢我们再进入到我们的模态条框,找到这个资源识图,现在呢这只是个 ui 界面,我们必须把它映射成这个代码,点击一下,鼠标右键选择添加类,然后呢 esec, 然后再来选择一下非模态退化框, 然后点击鼠标右键选择添加类,然后点击一下,完成。这里我们已经自动生成了戴 log esec 点 h 还有,但是 log 受点 h, 我们在这里呢添加一下 includ, 我们通过 c 带儿 log, 然后呢 e s e c 创建出一个模态对话框的变量, 我们起个名字呢就叫 d l g, 然后呢写上 d l g 点儿度 model, 这样一个模态的话 框就已经创建完了,然后我们再来运行一下,点击一下模特对话框,那我们操作一下后面的戴尔 log, 这显然呢是没有反应的, 我们呢在这里面也来写一下 see dialog, 然后呢授创建出一个 dialog 对象, 然后呢还要写上 dialog 点 crete, crete 里面呢这是一个参数,参数里面呢是我们的这个非模特电话框的 id, 我们写上 idd, 然后呢收, 我们呢还可以给这个窗口呢添加一个居中,比如说写上 dialog, 然后呢 center 命斗,最后呢我们最终 的是寿命斗, darlok 点寿命斗,但是呢这里显示其实还是有一个问题的,因为呢我们的 cret 这个位置啊只可以被创建一次,然后呢创建 darlog 对象的话,我们把它写到头文件里面, 我们剪切一下,找到呢这个解决方案,然后点击一下 m f, c application, 然后呢 d, l, g 点 h, 然后呢我们就写到最后 public 里面,然后粘贴一下。这一步写完之后呢可瑞特应该写到哪个位置呢?我们先把它剪切, 然后呢找到这个类似图,然后呢选择一下我们的 dialog, 这里呢有很多函数,然后呢我们这里呢就写上 on, 这里已经给我们写好了,也是在当前的这个文件当中,但是呢他会给我们自动的做一个定位,这里呢已经提示了,我们再次添加额外的初始化代码,然后粘贴,然后呢再点击一下运行, 这里呢我们依然是报了一个错误,这里呢是由于我们的头文件引用是有问题的,我们应该引用的呢是这个带二 log 瘦,然后呢再来重新的生成一下, 然后点击一下运行,选择一下模特对话框, 然后再来点击一下非模台对话框,现在呢我们就可以自由的来操作后面的对话框,那现在呢我们的程序 就已经成功了,如果发布的话呢,把 debug 这个位置改成 release, 然后呢再来重新的生成一下, 这里的 e s e 呢就已经成功了,那我们把这个 e s e 呢拖到我们的收音机里面,这个应用程序呢叫做 m f c oppo 雷根三,然后点击一下运行, 依然是完全没有问题的,那么本期的分享就到这里,谢谢大家。

在 mfc 对话框模式中,无边框对话框、灰色背景、无标题栏和边框。因此我们需要改变对话框的背景颜色,重新绘制标题栏和边框。 已创建一个新的 m f c 应用项目,命名为 m f c view demo r。 应用程序类型,选择对话框,并将主对话框设置为无边框模式。 二、给类 c m f c view demo, r d l g 添加变量,背景颜色变量 m 下画线 c l r b k 以及画刷变量 m 下画线 brush 如下所示。 三、在类 c m f c view demo, r d l g。 的初始化函数 on the net dialog 中添加 m 下划线 c l r b k 和 m 下划线 brush 的初始化代码,如下所示。 四、给类 c m f c view demo, r d l g。 添加消息 w m 下划线 control color 的映射函数 on c t l color, 修改 on c t l color 的代码,如下所示。 五、编译代码运行程序就可以发现对话框变成蓝色的了。 六、给类 c m f c view demo, r d l g。 添加函数 draw border 和 draw caption 函数 voice c m f c view demo, r d l g drawboarder cdc 信号 pdc 用于自绘无边框对话框的边框函数 voic cmfc view demo, r d lg draw caption c d c 星号 p d c 用于自会无边框对话框的标题栏。 七、修改函数 c m f c view demo, r d l g drawboarder 的代码如下所示。 八、修改函数 c m f c view demo, r d l g draw caption 的代码如下所示。 九、在类 c m f c view demo, r d l g 的函数 on paint 中添加如下代码, 实编一程序就可以看到一个蓝色背景灰色边框的带标题栏的对话框了。

多抽出一分钟时间来学习,让你的生命更加精彩。大家好,欢迎大家来到 vc 驿站,那么今天呢,我给大家带来的动画教程就是 c c 加加 windows 程序设计的第二十五课啊,名字呢就是 m f c 中的窗常用窗口类及关系啊, 那么之前呢,给大家介绍了一些 m f c 的这个基本知识啊,以及 m f c 中哈编写代码的这一个高效的情况啊。那么今天呢,来给大家说一下啊, m f c 当中咱们常用的一些窗口类的和关系 啊,那么可以说咱们当前呢使用 m f c 主要呢是教大家如何来开发一些界面类的这个程序啊,如何用 m f c 写一些小界面, 是这样的,所以说呢,咱们首先呢给大家讲解的是窗口啊,窗口类啊,那么 m f c 中呢,有很多窗口类,那么他们的关系是怎么样的呢?咱们来给大家说一下啊,那么因为毕竟哈你要去使用 m f c, 那你要去使用 m s c 去编写界面,那么这个时候呢,它常用的一些类的这个关系呢,你就要知道 啊,比如说你用这个电脑啊,那么这个时候一般情况下你都会知道哎,电脑呢,有这个 cpu 啊,有内存呐啊,他们之间是怎么样的一个关系哈,包括操作系统也是一样 啊,你先要开机对吧,然后去打开这个窗口啊,所以说咱们在使用 msc 的过程当中啊,他的一些窗口类的关系呢,咱们也要掌握啊,不然的话呢,可能 使用起来呢就比较蹩脚啊,我不要求大家把 mfc 中啊内部的一些窗口类的机制都理解了啊,但是啊,基本的一些窗口类的这个关系,比如说谁是谁的父亲,谁是谁的儿子这一块呢,大家一定要大概了解一下啊,知道是怎么一回事 啊,好,那么这里面呢,给大家归纳了几个知识点啊,那么这一块呢,咱们这里面呢,仍然是这个界面开发三步走啊,开发三步走的这个,哎, 在这啊,界面开发三步走的第三步啊, m m c 窗口的这个自动创建,加上自动创建空间,还有自动响应消息啊,所以说咱们这块呢,继续是讲解 m m c 这一块啊,那么 啊,这里面呢,我给大家归纳了一下啊, mfc 中的这个常用窗口类及关系啊,第一个 cwnd cwnd, 那么这个类大家要记住了啊,那么这个类呢,它是窗口类的这个祖宗 啊,可以说他是窗口类的祖宗,那么所有的窗口都是从这个 c w n d 这个类呢派生过来的 啊,那么这个 c w n d 它呢是一个缩写啊, c 呢,就是 class 啊,类的意思,那么 w n d 呢,就是 window i n d o w 窗口啊,一个简写,所以说呢, c w n d 啊,它呢就是窗口类的这个祖宗, 所有的窗口类呢,都是从他派生过来,包括咱们常用的这个对话框类啊,各种空间类等等,因为对话框也是窗口, 空间呢,他还是窗口啊,所以说呢,他们归根结底都是窗口,那么也就是呢,都从这个 c w n d 这个类呢,哎,继承派生过来 啊,那么所以说啊,这个 c w c w n d 这个类呢,它的内部封装了很多对于窗口的这个操作 啊,包括大家常用的一些什么创建窗口啦,关闭窗口啊,便利窗口、禁用窗口、获得窗口的大小,获得窗口的标题等等等等,很多很多,几十个,上百个 啊,那么咱们这里面呢,可以来看一下啊,呃,咱们比如说先看一下这个 msdn 这一块啊,在这 m s d 音当中啊,关于 c w n d 啊,这个类的这个结构啊,我们来看一下啊,大家可以看到哈,这个类它呢是从这个 c c m d 它给的,从这个类呢派升过来啊,它也有积类,它也有负类的啊, 然后这里面呢包含了很多他的一些啊,这个成员函数啊,和成员变量啊,比如说这块呢是 public constructor 啊,就是什么呀啊,公共的这个 啊,构造函数啊,下面呢 public messers 啊,就有很多啊,这个 public 这种方式的一些可以访问到的这个成员函数啊,大家可以看一下哈, 有这么多,你看看这个滚动条啊,变已经变得很小了,就说明他的这个方法呢,大家看一下,很多很多啊, 对不对?还有这个保护类型的啊,很多很多,那么也就是说呢,这些呢是都为我们所提供的啊,都是为了让我们去调用的,而且这些操作呢,可以说都是作用于他当前的这个窗口 啊,窗口的一些常用操作,他都进行了封装啊,都进行了封装,所以说呢,这就是 m f c 中啊,使用这个私家家语言,对于啊 s d k 的一些 sdk api 的一些封装,就是这么个意思啊。那么这一块啊,可能英文大家看起来也不是很方便,所以说之前呢,我给大家找了一个中文方面的一个介绍的资料啊, 大家可以看一下啊,我搜到的啊,大家可以看啊, c w d 这个类啊,得一个介绍啊,他这里面呢包括是很多啊,包括什么 初始化呀啊,窗口状态的函数啊,比如说窗口当年什么状态,是显示状态还是隐藏状态还是禁用状态等等,还有窗口的这个大小和位置啊,还有这个绘图窗口的这个坐标,窗口文本的函数滚动啊,滚动条等等 啊,上面还有很多这个工具栏,状态栏,窗口消息函数剪贴板呢啊等等很多很多的啊,那么我们我们可以往下看啊,数据成员 h w n d 啊,那么之前给大家说过了, m l c 当中的这个窗口类 是对 s d k a p i 的一些封装啊,那么它既然是窗口啊,那么它的一些方法呢,肯定要作用于当前的窗口,对不对?不对?那么用什么来标识当前的窗口呢?哎,就是这个啊, m 向后线 h w n d 他呢就是一个窗口句柄啊,就是一个窗口句柄,那么这个窗口句柄呢,就是标识啊,当前的这个窗口啊,就是这个这个类型, 就是我来输一下啊, h w n d 啊,这个类型,大家之前呃学习这个 win 三二 a p i 编写窗口 create windows 之类的,应该见过啊,他就是一个窗口句柄, 用来标识是哪一个窗口的啊?不管是空间也好,或者是对话框也好,或者是普通这个窗口也好,他们都是窗口,所以说只要有窗口,他每一个窗口呢都有自己的这个窗口剧名 啊,所以说在 c w n d 这个类啊,窗口类的内部呢,肯定会封装这么样的一个成员变量啊,标识了当前窗口的这个窗口距离啊,那么其他的一些 函数啊,比如说什么啊?获得这个呃什么窗口的这个大小啊啊,获得这个窗口的这个位置啊啊,创建窗口,关闭窗口啊,获得窗口的标题啊等等。获得的是哪一个窗口啊? 获得的都是 c w n d 这个类内部的这个 m h w n d 这个窗口,聚饼所标识的这个窗口, 明白了吗?就是这个意思啊,大家细琢磨琢磨啊。好,那么我们接下来看一下啊,有很多方法,包括一些初始化类型的啊,有这个创建窗口啊啊,其他一些获得窗口的这个样式啊 啊,这个关联窗口聚丙啊等等啊,还有在上面创建空间啊之类的啊,还有窗口状态啊,比如说这个窗当前窗口是不是启用的呀啊?是不是禁用的呀?获得窗口是否聚焦了呀?当前窗 窗口是否是这个呃这呃哪去了?在这啊,是否聚焦了啊,然后呢?获得桌面的这个窗口聚饼啊等等啊,还有下面很多窗口的大小和位置啊,在这啊,窗口大小和位置还能设置窗口大小和位置啊, 还有这个便利窗口啊,获得窗口的子窗口,比如说子空件纸窗口啊,他内部一些空件的这个便利等等啊,还有一些什么三头 window 啊,这个呢,比如说可以让咱们这个多摇晃窗口启动的时候呢,就自动啊,居于屏幕的这个中央 啊,别让他居左,也别让他居右,居于屏幕的中中央啊,还有一些绘图的函数啊,如何进行描画了等等啊,还有其他的一些,比如说这个窗口文本,窗口标题啊,比如说我们这个记事本啊,这个 窗口它上面呢有一个星无标题杠记事本,这就是他的标题,对不对啊?啊,还能设置窗口的这个文本的这个字字体啊等等,还有其他的一些滚动条的函数啊,啊,还有这个什么对话框方面的哈,对话框方面的有很多啊, 还有这个什么工具提示啊,菜单函数啊,定时器啊等等,大家看到了吗?这么多啊,这么多,还有一些消息之类的啊,所以说呢,这个 c w d 啊,他不愧为窗口的这个,呃,祖宗啊,祖宗类 啊,它内部包含了很多很多关于窗口操作的这个啊,函数方法啊,所以说这一块呢啊,正常 m f c 当中所有的这个对话框啊,这个子窗口啊,空间啊等等都是 从他派生过来的,哎,就是这意思啊,好,那么这个窗口啊,给大家说的就差不多了啊,接下来呢,我们往下说啊, 接下来呢就是这个对话框啊,对话框,那么这个对话框也是我们非常常用的一个啊,这个窗口类程序 啊,那么可以说呢,哎,对话框呢,因为我们可以说他有这个对话框模板,我们可以向对话框模板上面 去拖拽一些空件,所以说呢,创建窗口呢就非常方便了啊,这个空件呢,也不用我们这个手动写坐标了啊,自动拖拽就可以了 啊,它呢啊就是对话框类 see dialog 啊, see 呢就是 class 的意思, dialog 呢就是对话框的意思啊,所以说在 m m c 当中的这个对话 框类就是 c dialog 啊,那么因为它也是窗口,所以说呢,它从这个窗口类 c w n d 派生过来啊,那么 就是这意思啊,那么该类呢,主要是针对对话框程序的,可以从资源加载对话框模板 啊,以及创建模太和非模太的对话框。那么那么关于什么是模太对话框,什么是非模太对话框,咱们之前在这个 vsrapi 当中给大家已经讲解了,对吧?啊,什么样是模太和非模太?大家这块呢,可以把视频暂停一下想一想啊, 那么这里面呢,给大家再说一下,从 v s 二零零三之后, m l c 当中呢,新增加了一个 c dialog ex 这个类啊,比之前的这个 c dialog 呀啊,结尾多了一个 ex, 那么这个是什么意思呢啊?他跟 cdellog 有什么区别?那么这一块呢,也算是给大家留的一个小作业,课后呢去靠自己啊,去百度啊,谷歌啊之类的啊,去搜索一下啊,看一看有没有讲解这方面的文章,关于他们两个有什么区别和联系 啊,是什么关系呢啊,大概这样啊,好,那么这个呢就是对话框类啊,那么这一块呢,呃,之后会给大家讲解啊,那么这一块啊,先给大家来看一下吧啊,我们先打开我们上节课的这个新建的这个 mfc 对话框的工程,我们来看一下啊, 默认呢,这里面呢是两个类,那么在下一节课这块哈,我会给大家详细的讲解咱们对话框工程的这个这个结构啊,为什么是这么样生成的啊?以及每个类 之间的这个关系是怎么样的啊?咱们先来看这个啊,工程里面的这个对外框类啊,我们来看一下对外框类是什么呀, 就是这个啊,因为我们工程的名字叫做 dialogue test, 所以说呢,对话框类呢,就是 c dlg test, dlg 啊,就是这个啊,那么这个这个类是一个对话框类,所以说呢,按照我们刚才说的这个对话框类呢,是 c delog 啊,按照我们刚才说的这个过程,所以说呢,我们这个类呢,一定是从 c delog 这个对话框机类派生过来的, 大家看到了吗?生成的代码也是这样的啊,所以说呢,在我们的这个工程当中,就会有一个从对外框鸡肋派生过来的这个子类啊,那么这个子类的名字呢,会根据你 工程的名字而变化啊,大家明白了吗?就是这个意思啊,这就是对话框类啊,那么咱们再来看一下 c delog 这个对话框类,它的负类是什么呢?我们 f 十二一下啊,鼠标光标定位到 c delog 之上,然后呢点击键盘的这个 f 十二, 大家看到了吗?啊?呃, class c delog public c w n d, 它是从 c w n d 这个啊,窗口类派升过来的 啊,虽说跟我们刚才给大家讲解的这个过程啊,是啊,没有任何偏差的,对吧?啊,就是这意思啊,所以说他们之间的关系大家一定要明白啊,对话框呢,也是窗口啊, 好,那么接下来呢,我们来看一下这个各种空件类啊,各种空件类啊,那么空件啊 啊,那么实际上呢,在 m f c 当中,每一种空间儿,它都有与之关联的一个空间儿类 啊,比如说我们常用的一些按钮啊, see butt 啊,编辑框 see idit 啊,列表框 see list, 高级列表框, see list, ctrl 啊,竖形空间 see tree control 啊,静态文本框空间 see static, see static 啊,那么还有这个进度条空间 c progress ctrl, 还有这个标签页,属性页空间 c type ctrl 等等等等啊,那么这里面呢,我只给大家列出来了一些咱们常用的一些空间类 啊,所以说呢,在 m l c 当中,每一个空间儿都有与它对应的这个空间儿类啊,那么每一个空间儿类 啊,他们因为也是窗口,所以说每一个空间类呢,都是从啊 c w n d 这个机类呢拍摄过来的。 那咱们不妨可以看一下啊,比如说这个,咱们这个工程啊,咱们先进这个段框初始化函数,在这里面哈,比如说咱们加一个按钮的对象 c 巴特啊,然后定义,比如说叫叫这个 m m button 啊,然后我们编一下啊,我们看一下啊,鼠标打在这个 c button 上之后呢, f 十二,大家可看到了吗?啊,这个 c button, 它呢,因为也是窗口,虽然是空间儿也是窗口,所以说呢,它也是从 c w d 这个窗口类 拍摄过来啊,内部呢,包含了很多关于按钮方面的一些操作啊,所以说就像我这个这个这个 ppt 里面介绍的哈, 呃,虽然他们都是从 c w n d 派生过来,但是呢,各个空间类都有自己特有的一些操作方法 啊,比如说按钮类,那么他呢按钮呢,可能是被点击啊,被抬起,那么编辑框类呢啊,可能内部呢,可以说往里面输入文本, 那么也可以从这个 cid 的这个编辑框类内部获得编辑框控件上面的一些文本信息,对不对?那么列表呢,可能是有一行一行的啊,高级列表呢,可能既分行又分列等等,竖形控件呢,可能是一对多啊这样的关系,静态文本框控件,它内部呢是一个 啊,文本啊,这样的啊,所以说呢,不同的这个空间类都有自己特有的一些方法啊,所以说每一个空间类呢都是针对于他空间自身的 啊,大家明白了吗?啊,就是这个意思啊,所以说在 m f c 当中,如果说你想使用一个空件,你可以先把空件呢拖拽到咱们这个对话模板上面啊, 在这你可以先拖过来啊,拖过来之后啊,你就可以去操作这个空间了啊,当然呢,你可以是绑定这个空间类,你可以你也可以不绑定,都是可以啊,那么具体什么时候绑定,什么时候不绑定 啊,这就是我们要给大家讲解的这个干货了啊,干货了啊,第四小点啊,什么时候绑定,什么时候不绑定呢啊,我们来看一下啊, m f c 中的这个对话框模板,如果说不添加自定义的操作,那么这个时候呢就不用绑定自定义的这个对话框类 啊,直接使用啊,默认的这个对话框的鸡肋 c delog 或者是 c delog ex 就可以了啊,明白了吗?大家啊,因为咱们这块呢,可以像这里面大家可以看一下插入一些对话框模板对不对?比如说咱们新插入的这个 idd delog e 啊,咱们 这个这个想不想使用它呀?想使用啊,想使用之后,比如说我这上面我拖一些空间之类的哈,比如说,呃,拖一些什么什么这个数学空间之类的吗?哈。哎,我拖拽上来了之后啊, 比如说我想使用这个都要晃,我怎么样用啊?比如说我在这个啊,负都要晃,在这里面初始化的时候加一下哈, c 哈, c dialog, d l g 哈, see dialog, 这是对话框的积累,咱们定一个激烈的对象啊,之后呢,我看一下用这个怎么去加载对话框模板哈,它的构状函数中 啊,在这啊,有一个对话框模板啊,在这这不吗? id 吗?对吧?那么咱们用它就可以了,咱们新加的这个对话框模板 id 是多少啊? idd 代老一之后咱们干什么呀?比如说直接创建一个毛太太对外晃啊,赌 model, 这个之后啊,会给大家讲解,咱们把这个代码放在 按钮的响应函数当中,放这里哈,咱们先把之前的这个注视掉 往下放,这憋一下,好,憋一成功了,咱们启动,然后点击吧探一 啊,大家看到了吗?咱们上面的这个模态对话框啊,新加的这个 delog 就弹出来了,对不对啊?咱们用自定义的拍摄类了吗?没有啊,就用鸡类 cdlog 就可以了。 但是呢,这里面我没有去响应这个纸对话框上面任何的一些操作啊,就像我这个这个课件里面说的哈, 啊,如果不添加自定义的操作,就不必要啊,绑定自定义的这个对话框类啊,但是如果说你要操作了啊,比如说你要在这个呃数钱空间里面加一些这个这个节点啊,或者说你在这上面呢,要 啊响应一些事件,那么这个时候呢,你就要给这个对话框绑定一个啊,派生字 see delog 这个对话框类的这个子类之后呢,你在子类当中去添加响应这些消息,就类似于咱们这个主对话框 see delog, test delog 类似于他一样 啊,大家明白了吗?哎,你要想自定义操作,你就绑定一个子类,具体怎么绑定这个子类,哎,这块刚才什么了啊,具体怎么样去绑定这个子类,咱们下一节课呢会给大家讲解 啊,那么同理啊,同理空件呢也是一样的啊,空件也是一样的啊,如果说 你要为这个空间啊,去这个自定义一些消息的时候,那么这个时候呢,哎,你就要 啊,这个给这个空件啊哈,去绑定一些啊,变量啊,去绑定一些自定义的这个类啊之类的等等啊,那么之后呢会给大家讲解啊,或者说大家呢也可以看一下咱们之前哈 vc 驿站给大家出的这个在这哈, 呃,使用 vc 编程之玩转控件啊,看一看这套教程啊,因为这套教程里面呢,我给大家讲解了很多咱们平时常用的一些控件,包括按钮啊,静态文本框啊,高级列表框啊等等啊,如何来进行 空件的这个绑定啊,如何来进行啊,使用一些开源类之类的啊,在这里面都有讲解啊,所以说关于空件这块,大家可以看看这套教程啊,所以说这一块啊,空件和对摇晃呢也都是一样的啊,就是说 可以不绑定类的时候呢,你不用绑定,但是大多数情况可以说都得绑定,尤其是对话框啊,尤其是对话框,因为在 mfc 当中哈一个对话框模板就对应着一个对话框子类, 哎,明白了吗?就是这意思啊,好,最后一个这个干货啊,可能相对呢复杂一些,这块呢,大家不要说这个课上理解不了啊,没有关系,因为咱们之后的这个课程当中呢,还会继续以实力的方式来给大家进行讲解的啊,那么在 m f c 讲解几节课 之后,咱们这块啊会给大家讲一个实力啊,那么我准备呢给大家讲解一个优盘小偷啊,讲解这样的一个实力课程啊,那么这个优盘小偷呢?就是,哎,其实大家应该听过吧,是吧,就是说他会监控电脑上面 usb 口啊,插入的一些优盘, 如果说插入的话,那么咱们这个 usb 小偷呢,就会在后台默默的啊,把这个 u 盘内的文件啊都拷贝到咱们指定的这个目录下 啊,这就是一个 usb 小偷啊, u 盘小偷啊,大家呢可以说到网上找一找这样的这个啊程序可以先了解一下,咱们之后的这个实力课程中会给大家讲解这个啊,大概就在两三节课之后吧,咱们这块就会讲解这个实力课程,到时候希望大家呢都过来学习 学习,那么自己呢也亲自动手去敲一敲代码,看一看靠你自己的能力能不能写出来啊。 嗯,好了,那么这节课的这个知识点呢,就差不多了啊,再给大家总结一下,第一个呢,讲解了这个窗口类的祖宗 c w n d 啊,他是所有窗口类的这个呃共同的这个机类,那么这里面包含了很多关于窗口类的这个操作啊,之后呢给大家讲解了这个对话框类啊, cdi log, 那么它呢,是从 cwnd 派升过来,内部包含了模太非模太都要晃之类的一些操作啊。第三个呢,就是各种空间儿啊,因为各种空间儿呢,它也是窗口,所以说呢,都是从 cwnd 派升过来的 啊,同时呢,每一个空间类内部都有很多对呃空间自身的一些操作啊,当然他们之间 都是不同的啊。最后一个呢,就是铆钉关系啊,就是说一般情况下哈,你像工程中添加了一个对外框模板啊,大多数情况下呢,都是需要你去根据这个对外框模板去绑定一个对外框的这个子类 啊,一般都是这样的啊,那么,呃,不然的话呢,你可能一些消息什么的事件什么的,你都响应不了了啊, 呃,总体上的这个知识点呢,就是这么四个啊。最后呢,给大家留了几个小作业啊,第一个就是刚才课上给大家提到的哈, see dialog ex 和 see dialog 它们两个有什么区别?又有什么联系呢啊, 大家课后去找一找啊。第二个啊, c w n d 与 h w n d 他们两个的区别又 是什么呢啊?那么如何进行转换啊?直接强制类型转换可以吗?可不可以啊?比如说这里面 cwnd 星这个指针啊和 hwnd 啊这个窗口聚丙他们两个能不能直接强制类型转换呢?根据我刚才给大家讲解的这一块,大家认为能不能呢, 课后去找一找啊?第三个啊,比如说有一个指针啊,他一会呢是 c w 逆行,一会呢又是 c 巴坦行啊,那么他们两个的这个指针能不能互相转换,为什么啊? 那么在转换的前提下,什么情况下是安全的,什么情况下呢是不安全的啊,这里面大家课后呢再想一想啊, c w n d 星呢是一个负类的指针, c 八特星呢是一个子类的,这个指针,他们两个 能不能强制类型转化,能不能相互的进行转化,大家想一想啊,就是这么三个小作业,希望大家课后呢,靠自己的这个双手,靠自己的这个努力到网上去找资料啊,来巩固一下咱们课堂上的这个知识啊。 好了,那么本节课呢就差不多了,最后呢,还是请大家多多支持我们 vc 驿站,这样的话呢,以后才有更多更好的这个教程啊,相关的这个课件啊,作业啊,圆码呀,扩展阅读,大家可以到我们 vc 驿站上面的这个板块中进行查看 啊,那么如果说在编程过程当中遇到的任何问题啊,那么可以到咱们 vc 驿站的这个提问专区互助平台啊里面发贴提问,那么我看到了之后呢,都会及时的去给大家解答啊,咱们这个提问专区呢在这啊, 教学服务提问专区,小蔡举手,或者说点击导航栏上面的这个互助平台都是可以的啊。好了,那么这节课呢,就给大家说到这了哈,咱们下次课程再见。

点击按钮,显示对话框,选中对话框元素,找到对话框,自带变量。呆咯,为什么将内容改为 fos, 这样对话框默认为隐藏状态?选中按钮元素, 找到按钮,点击方法,输入内容 by logicibal 等于 too, 这样我们点击按钮时,对话框就自动弹出来了。关注我,学习更多前端知识!

在 m f c 界面美化过程中,通常会设置对话框为无边框模式,然后再重绘标题栏。 当对话框设置为无边框模式的时候,一般情况下是无法对对话框进行拖动操作和改变大小操作的。 这里来演示一下如何通过写代码让无边框对话框可以拖动及改变大小操作。 已创建一个新的 m f c 应用项目,命名为 m f c view demo。 e。 应用程序类型,选择对话框 二、在 mfc view demo 一的资源视图中选中对话框 idd 下划线 view demo。 一、下划线 dialog, 右键点击打开菜单, 选择在菜单中的属性,打开属性窗口。 三、在属性面板中选择边框,将其设置为 non, 编一只就可以看到一个无边框的对话框了。 四、在类似图中,鼠标右键点击 c m f c view demo, e d l g, 选择弹出的菜单中的属性,打开类 c m f c view demo, e d l g 的属性窗口。 五、在属性面板中选择选项消息,然后再选择 w m 下划线 to test, 创建消息映射函数 on n c hit test。 六、修改 c m f c view demo, e d l g on n c hit test 函数,如下所示。 七、 w m 下划线 intrudist 消息代表非显示区域,命中测试 这个消息优先于所有其他的显示区域和非显示区域鼠标消息。 其中 alpro ram 参数含有鼠标位置的 x 和 y 屏幕坐标 wp ram 在这个消息里没有用 搭载 c m f c view demo, e d l g on n c hit test 函数中 hit caption 表示,点击在标题条上, hit client 表示点击在客户区中。 九、编译代码就可以发现生成的对话框可以拖动操作了。 十、对话框拖动的代码编写好了,接下来编写改变无边框对话框大小的代码。 首先给类在 c m, f c view demo, e, d, l, g。 添加八个函数, point in left border point in right border point in top border point in bottom border point in top left point in top right point in bottom left point in bottom right e point in left border 函数用于判断一个点是否在对话框的左边边框的范围内,其代码如下所示。 十二、 point in right border 函数用于判断一个点是否在对话框的右眼边框的范围内,其代码如下所示。 十三、 point in top border 函数用于判断一个点是否在对话框的上杆边框的范围内, 其代码如下所示。 十四、 point in bottom border 函数用于判断一个点是否在对话框的下杆边框的范围内,其代码如下所示。 十五、 point in top left 函数用于判断一个点是否在对话框的左上顶点范围内,其代码如下所示。 十六、 point in top right 函数用于判断一个点是否在对话框的右上顶点范围内,其代码如下所示。 十七、 point in bottom left 函数用于判断一个点是否在对话框的左下顶点范围内,其代码如下所示。 十八、 point in bottom right 函数用于判断一个点是否在对话框的左下顶点范围内,其代码如下所示。 十九、修改 c m f c view demo e d l g on n c hit test 函数,其代码如下所示。 二十、添加消息 w m 下划线 income button down 的映射函数 c m f c view demo, e, d, l g on n c l button down, 其代码如下所示。 二、十一、编译程序运行后就可以看到无边框对话框可改变大小了。


嘿,大家好,从今天开始我们一起学习如何利用呃,微软基础内裤 mfc 来进行嗯, cdp 接口的开发, 主要就是,嗯,量化交易,进行期货的自动交易。然后我们首先来了解一下什么是 mfc。 mfc 就是微软公司提供的一个内裤,以 c 家家的形式封装了 windows 的 api, 那主要就是用来可以呃通过拖拽的形式来创建一个我们平时经常用的软件界面 啊。接下来我们一起来看一下如何来 创建一个 msc 文件啊。首先我们需要用到的软件是这个 visos 六六二零一九,其他的版本也大同小异吧。然后我们首先创建一个新项目, 嗯,一般来说的话啊,我们首先的话,其实刚开始的话,可能你的软件上没有这个 mfc 的应用 啊,我们可以啊,随便选选一个空项目,然后点击下一步,然后随便取个名称, 嗯,就不要占第一。然后找一个位置在桌面上建,在桌面上建一个 地盘, 新建一个文件夹,叫 mmmc 教学 啊,我们选择这个门面夹以后,程序都在这里进行创建,然后我们创建了一个 pose, 第一,然后点击创建 电脑稍微有一些卡顿,然后我们会进入到这个界面,然后这个时候我们点击这个工具获取呃,工具和功能, 然后就会啊,你如果新安装的话,他会直接一开始就是这个软件,但如果说你需要添加 mfc 一些生成工具之类的 啊,他就会就需要从这个工具里边调出这个软件,然后我们点击这个使用 c 家家的桌面开发,一共我们需要点击三个, 点击这个呢之后他会有一个适用于最新的咪一百幺四二生成工具的新加加 mfc, 然后点上这个, 然后还有啊,这个米色奥斯丢丢拓展开发这个,然后还有一个 哦,然后就没了,就主要就是点这俩,这个 c 家家的琳琳克斯在开发这个点不点都可以,因为我平时有的时候需要用到琳琳克斯,所以说我就把它点上了, 然后大家点完了之后啊,就可以点击这个, 我一般都选择全部下载后再安装,这样的话可以防止下载一半了之后他突然发生什么问题,导致只下了一半,然后就会有一些安装了,有一些没安装, 然后你的这块应该是一个安装,然后到时候点安装就可以,因为我已经下完了,所以说他就没有这个。然后我们下完了之后, 嗯,再次新建一个项目的时候啊,在这会就会出现三个 mfc 的,呃,我往下翻一下, 哦,这个是 哦,这儿 mfc 应用, 然后反正到时候你就找到这个,然后点击下一步,然后起一个名,点击创建,然后他就会出来一个 msc 应用程序类型选项,然后我们只需要把这个改成基于对话框就可以, 然后就一直下一步,下一步,其实这一些都不用改,直接下一步就可以,或者直接点完成, 然后他现在等待, 然后这个时候我们就可以看到他就有一些啊,他自动生成的头文件或者原文件之类,这个时候我们点这个本地 windows 调试器, 他就会自动生成一个窗口,就是这些啊头文件和原文件以及资源文件相关的,然后他就会生成一个初始画的现象, 就是这个,然后这个就是其实就是咱们平时应用程序里边的那个界面, 然后他这块写了再次放置对话框架,嗯,只要能出来这个就证明你的 msc 相关的安装已经可以了。嗯,我们的第一节课也到此结束了。

