基于文档和视图的MFC程序,基础问题

我写过一些基于对话框的程序,但是基于文档和视图的程序没写过。入门的问题都不会。基于对话框的MFC很好做,在初始化里写预处理,在界面画按钮什么的,双击按钮即可写它的事件。1... 我写过一些基于对话框的程序,但是基于文档和视图的程序没写过。入门的问题都不会。
基于对话框的MFC很好做,在初始化里写预处理,在界面画按钮什么的,双击按钮即可写它的事件。
1、可是基于文档和视图的程序,在menu里添加的内容不知道在哪写它的对应事件,在工具栏添加的图标也没法写它的事件?不知道该怎样写?
2、初始化的东西在哪写?
3、ondraw函数里是一打开程序就绘制的,相当于初始化吧?
4、那我要是手动绘制的话,是在哪里写呢?
5、OnPreparePrinting,OnBeginPrinting,OnEndPrinting这3个函数都是干嘛的?
6、MFC自动建的打开和保存是功能是真的能打开和保存吗?还是只是个摆设?我想写打开和保存要在哪个地方写?
展开
 我来答
nifh80s
2009-12-09 · TA获得超过152个赞
知道小有建树答主
回答量:133
采纳率:100%
帮助的人:71.4万
展开全部
1、在menu里的菜单项,你可以点击右键选择Class Wizard,然后弹出对话框你就可以在右侧Messages里点选command,再点击添加函数按钮就行了。工具栏的图标只要它的ID和对应的菜单项ID一样就行了。
23、初始化函数是CView的派生类的PreCreateWindow,画图就在OnDraw,OnDraw是在窗口发生变化时重绘,但初始化要画图的话我都是在OnDraw里做的,可以用一个static变量决定,不知道有没有别的办法。
4、手动绘制我觉得也应该在OnDraw里,因为我做基于对话框的时候发现在OnPaint里才一定能能画成功,其他地方不一定能画成功。但视图里面没试过,可以添加一个事件,在事件函数里使用CDC画画看,可能可以。
5、这几个是打印的吧,我没打印机,所以从没使用过,做基于文档/视图的时候都是把这几个删掉的
6、工程刚创建的时候用的打开和保存都是使用CWinApp的OnFileNew和OnFileOpen函数,在App类的cpp文件中可以看到下面代码
ON_COMMAND(ID_FILE_NEW, CWinApp::OnFileNew)
ON_COMMAND(ID_FILE_OPEN, CWinApp::OnFileOpen)
我们要做的就是重载这两个函数,使用文件对话框,你在网上再查查文件对话框就知道怎么用了。
希望能对你有帮助吧,我学的不深,基本做的都是基于对话框的,基于文档/视图的项目做的很少,因为基本上用不到。
chichujn
2009-12-09 · TA获得超过663个赞
知道小有建树答主
回答量:1534
采纳率:50%
帮助的人:1103万
展开全部
1.菜单和工具栏是通过命令映射宏来执行的。
ON_COMMAND(ID_***, OnCommand**)
ID_***可以是菜单项ID或者工具栏按钮ID
2.初始化的东西当然是放在构造函数里。
3.OnDraw就是视图的绘制函数。底层也是调用OnPaint的。不过它的功能更多一点。一般自绘都是用OnDraw。另外打印机输出也可以用OnDraw实现。
4.
5.如其名,打印处理的。
6.需要自己写***App类加上成员函数OnFileOpen();
***Doc类加上OnOpenDocument(LPCTSTR lpszPathName);这样实现打开文档。
重载***Doc类的Serialize(CArchive& ar)和OnFileSave可以实现文档的串行化和保存。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友83c4a72a9
2009-12-18 · TA获得超过118个赞
知道小有建树答主
回答量:280
采纳率:0%
帮助的人:208万
展开全部
1. 右键->类向导,选择Message Map面板,在Class name选择你要添加的类(函数所在类),然后在Object IDs找到要添加函数的控件,点右边的Add Function
2. 开始步骤一样,在Object IDs里找到类名,然后在Messages里找到WM_INITIAL消息,Add Function
3. 确实已打开就执行OnDraw函数,但是窗口需要重绘的时候也会调用OnDraw,你不想一直初始化吧
4. 手动绘制什么?变量的初始化可以写在View类的构造函数里
5. 设置打印格式、页数、释放资源
6. 是打开保存,不过默认只能保存*.*文件,可以自己给ID_FILE_OPEN添加函数,重载系统默认函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式