C++MFC学习心得(五)——单文档视图结构分析

今天看到了单文档视图,因为学习了一段时间的JAVA,中间间隔的时间比较长,再回头看C++的代码,略感吃力,不过好歹算是又拾起来了十之七八吧。

这仍然是MFC Windows程序中的一个例程,只不过不用向导(类的添加用的类向导,当然内部东西都是自己写的)的日子确实很痛苦,但是很充实。继续,代码。

//首先当然是App类了。
//SquaresApp.h
#pragma once
#include"resource.h"
class CSquaresApp :
	public CWinApp
{
public:
	virtual BOOL InitInstance();
};

//SquaresApp.cpp

#include "stdafx.h" #include "SquaresApp.h" #include "MainFrame.h" #include "SquaresDoc.h" #include "SquaresView.h" CSquaresApp squareApp; BOOL CSquaresApp::InitInstance() { SetRegistryKey(_T("Squares")); CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(CSquaresDoc), RUNTIME_CLASS(CMainFrame), RUNTIME_CLASS(CSquaresView)); AddDocTemplate(pDocTemplate); EnableShellOpen(); RegisterShellFileTypes(TRUE); CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); if(!ProcessShellCommand(cmdInfo)) return FALSE; //m_pMainWnd->ShowWindow(SW_SHOW); //m_pMainWnd->UpdateWindow(); m_pMainWnd->DragAcceptFiles(TRUE); return 1; }

这是把所有的冗余代码去掉了的结果。

首先创建文档模板,然后添加到App中,设置在文件浏览器中可以打开,注册文件类型,运行浏览器命令(比如说双击打开,还是新建文档,默认0,就是newFile)。


pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CSquaresDoc),RUNTIME_CLASS(CMainFrame),RUNTIME_CLASS(CSquaresView));

这一句,运行类,跟Java中的Class.forName();很像,也就是将窗口类,文档类,视图类加入到文档模板中,然后就是模板来操作之了。

所以就算不用类模板,实现单文档也是很容易的,不过各种消息函数到一个类里,看看就难受。。。

 

本来是一步步跟代码的,结果真到写的时候不知道要写什么了。。。好像觉得没什么东西好写了。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值