MFC的DLG的困惑

记得当时刚开始学习vc时,自己也很傻,指导我的人说:mfc的dlg很简单,你就从这个开始吧。于是二话没说,就开始了dlg的艰难旅程。现在想想,会用DLG

做程序的人真的很傻很天真。MFC简单吗?我想,说简单的人多半也就是是知道用那玩意做做界面忽悠忽悠别人比较简单吧。

闲话就不说了。只是谈谈最近工作中遇到的些问题。

不知道为什么,总觉得MFC只有哦学会了如何使用自定义控件(也就是派生类的应用)才能算MFC的真正入门。小打小闹,绘制绘制界面,然后用类向导链接个函数这都是毛皮。

个人总感觉派生类应该算是比较难的,越是强大的东西,其学习的难度就越大。之前花了估计一周的时间学习了类的派生、继承。然后就在MFC的DLG里试验起来。可效果却是异常打击人的。‘

坦白的将因为对MFC的框架的结构不甚了解。单纯的了解c++l类的派生结构似乎派不上用场。

为了最快速度学会在MFC里的类的派生。我特地找了许多这方面的手把手教程和源代码来模仿学习。

可打击人的事情总是那么多,就是模仿别人的代码竟然都会编译错误——我还有什么话可说呢?——不过问题没解决,话还是要说的。

我也大概分析下:

DLG的结构有一个主DLG类,命名为:“主类”,自己派生了一个CBUTTOM类,命名为:“从类”。

程序中有个界面

猜想:控制这个界面程序应该是集成到主类,但是这主类中完全没有看到这方面信息,这个猜想貌似有点站不住脚了


如果界面的绘制完全交个了控件,对用户是不可见,主类和次类关系平等,或者主类拥有优先权。他们共享使用这个界面。


记得在《看深入浅出MFC》的时候,说:MFC的winmain 函数时被封装的,用户的编写的代码不再WINMAIN函数里,而是通过初始化的过程来实现。意思大概是这样的,但是对其中的结构还是不甚了解。可悲啊,本想好好看看侯俊杰的书,苦于没时间。也就只有一直边做边模仿。在模仿中学习

MFC中的对话框(Dialog)是Windows应用程序中常用的用户界面元素之一,它可以用来显示一些信息或者与用户进行交互,比如输入一些数据或者选择一些选项等。同时,对话框还可以用来浏览或者编辑文件。 在MFC中,打开或者保存文件对话框可以使用CFileDialog类。这个类提供了一些成员函数和属性,可以用来定制对话框的外观和功能。 下面是一个简单的示例,演示如何使用CFileDialog类来实现文件的打开和保存。 1. 打开文件对话框 ```cpp CFileDialog dlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), this); if (dlg.DoModal() == IDOK) { CString filename = dlg.GetPathName(); // 在这里处理选中的文件 } ``` 2. 保存文件对话框 ```cpp CFileDialog dlg(FALSE, _T("txt"), _T("Untitled.txt"), OFN_OVERWRITEPROMPT, _T("Text Files (*.txt)|*.txt|All Files (*.*)|*.*||"), this); if (dlg.DoModal() == IDOK) { CString filename = dlg.GetPathName(); // 在这里处理保存的文件 } ``` 在上面的示例代码中,CFileDialog的构造函数有5个参数,分别是: - BOOL bOpenFileDialog:指定对话框是打开还是保存文件,TRUE表示打开文件对话框,FALSE表示保存文件对话框。 - LPCTSTR lpszDefExt:指定默认文件扩展名,可以为NULL。 - LPCTSTR lpszFileName:指定默认文件名,可以为NULL。 - DWORD dwFlags:指定对话框的一些属性,比如文件必须存在还是隐藏只读文件等,可以使用位运算符组合多个属性。 - LPCTSTR lpszFilter:指定文件筛选器,用来限制用户可以选择的文件类型。 在执行DoModal()函数后,如果用户点击了“确定”按钮,就可以使用GetPathName()函数获取用户选择的文件名和路径。然后就可以根据需要进行文件的读取或者写入操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值