【mfc】利用到MFC菜单、字体对话框、OnSize函数实现简易记事本

经过了之前大量mfc已经明白了许多功能,但是之前的项目一直没有使用到mfc的菜单功能,菜单是Win32功能很常见的东西,这个也必须要懂。其实菜单的建立也很简单,配合之前的文件操作功能,已经能够把开始->附件->记事本,就是那个notepad.exe写出来了。

一、基本目标

首先,这个记事本能够最大化,最小化,里面的编辑框也能够跟住最大化最小化,就是记事本里面组件不会失真,这个也不是理所当然的时候,要对OnSize进行写作,否则里面的组件是不会跟着最大化的,这大概就是mfc比vb艰难的原因吧!

之后,这个记事本的窗体大小与平常Windows的窗口一样,能够自由调整大小,里面有相应的餐单。按帮助->关于,能够显示版权信息。其实这里已经把记事本模仿得很像了,要不是那个版权信息太丑的话~

点击“新建”按钮会弹出提示框,告诉用户如果继续执行这个命令,所有没有保存的信息会丢失,如果用户点“是”,则新建一个文件

之后是打开与保存、另存为功能,这里就不再介绍是什么样了,如下图,就是跟你平常用的记事本一模一样

最后是设置字体功能,能够设置记事本显示的字体,这与Windows里面的记事本是一模一样,毕竟记事本从头到尾都是一个纯文本的编辑器,设计字体只是设置其显示字体而已!用户选择相应的字体之后,记事本里面的字体就会以用户选择的字体显示。

二、准备过程

1、首先还是新建一个简单的mfc工程,里面什么都没有,我们之后再添加,主要是windows自带的东西太渣了,我们自己写出来更加漂亮。如果你连mfc的创建都不会,也没有关系,可以看我之前的文章

2、新建出来的工程与之前的《【mfc】用对话框的切换实现重新登录》(点击打开链接)一样,把确定按钮的OnOk函数注释掉,免得这个对话框一按回车就没有

3、之后把对话框里面的组件拉成如下图的形式,同时把各个组件的样式设置好:

4、之后,我们就开始为这个对话框建立菜单,如下图,为这个工程插入资源,如《【mfc】对于对话框程序的优化与为程序创建图标》(点击打开链接)中的图标一样,菜单也是资源的一种,只是菜单的编辑方式不同而已。

5、菜单的编辑如下图所示,里面还有“分隔符”选项,如果一点分隔符,组件中的所有东西都会变灰,系统自动识别这是“分隔符”而不是一个有功能的子菜单

6、长按一个子菜单拖拽可以改变子菜单的位置

7、按照上面的方式,建立如下图的菜单,然后切换的主对话框CxxDlg,其中xx为你的工程名,在这个主对话框中的样式添加菜单

8、之后,如下图为各个菜单中添加相应的类函数

9、把这个菜单的子菜单的消息映射函数与对话框关联起来,则设置其函数名,最后才能添加函数

10、对子菜单创建完消息映射函数则与组件的函数一样,能够在ClassView看到,当然,双击ClassView里面的函数也一样能够编辑,为所有子菜单,也就是那些"新建"、"打开"……添加完消息映射函数,我们则可以正式进行程序的写作。

三、各个子菜单的功能制作

虽然上面的准备功能很多,但是之后的函数就很简单,组件的布局完毕,之后写一些简短的函数就完成了,这就是微软旗下的编程的特点,它不像java中的Swing,单单是布局都要写一大堆代码。现在做微软编程的人看不起写Java的,说写一大段然后才能实现一个功能,写java看不起写微软的,说是拖控件的,谁也看不起谁。其实,无知者才是最可怕的,各有各特点,控件你不懂也不拖,代码你不懂你才觉得写一大段才能实现自己的功能,主要是自己废,不关人家编程语言的事情。你两方面都懂才是王道。好了,废话不多说了,回到这个功能里面来。

(一)编辑框的大小随同窗口的大小变化而变化

1、首先你要为这个主功能添加一个窗口消息处理函数,在里面找到WM_SIZE添加,这个与《【mfc】利用文件的读写,theApp全局变量来现实登录帐号管理系统》(点击打开链接)中添加OnInitDialog与OnDestory一样。不多说了,不明白可以翻翻我之前的日志。

2、之后对这个OnSize函数写上如下代码,这个函数主要是对用户调整窗口大小时做出的响应,包括最大化,但不包括最小化。最小化的功能系统自己就能够实现,但是它会把自身的窗口坐标变成负数,导致下面基于窗口尺寸的控件大小,出现负值,程序就崩溃。所以正确的做法是,一旦窗口的坐标变成负数,就不要执行这段代码。

挫折其实就是迈向成功所应缴的学费。

【mfc】利用到MFC菜单、字体对话框、OnSize函数实现简易记事本

相关文章:

你感兴趣的文章:

标签云: