【上位机——MFC】视图

相关类

CView及其子类,父类为CWnd类,封装了关于视图窗口的各种操作,以及和文档类的数据交互。

视图窗口的使用

1.定义一个自己的视图类(CMyView),派生自CView,并重写父类成员纯虚函数OnDraw。

2.其余框架类和应用程序类代码不变(可以参考前面的文章)

3.在处理框架窗口的WM_CREATE消息时,定义CMyView类对象,并调用Create函数创建视图窗口。

代码示例

cpp 复制代码
#include <afxwin.h>
#include "resource.h"

class CMyView : public CView {

public:
	void OnDraw(CDC* pDC);
	DECLARE_MESSAGE_MAP()
	afx_msg void OnNew();
};



//如果想要使用OnDraw方法的话,将ON_WM_PAINT()注释掉
void CMyView::OnDraw(CDC* pDC) {
	pDC->TextOut(100, 100, _T("CMyView::OnDraw()"));
}

class CMyFrameWnd :public CFrameWnd {

	DECLARE_MESSAGE_MAP()
public:
	afx_msg int OnCreate(LPCREATESTRUCT pcs);
};

BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd)
	ON_WM_CREATE()
END_MESSAGE_MAP()

int CMyFrameWnd::OnCreate(LPCREATESTRUCT pcs) {
	CMyView* pView = new CMyView;
	// AFX_IDW_PANE_FIRST : 将视图窗口平铺到框架窗口
	pView->Create(NULL, _T("MFCView"), WS_CHILD | WS_VISIBLE | WS_BORDER, CRect(0, 0, 200, 200), this, AFX_IDW_PANE_FIRST);
	//加上这行代码之后默认就会将视图激活,表示CMyView中的OnNew函数生效
	m_pViewActive = pView;

	return CFrameWnd::OnCreate(pcs);
}


class CMyWinApp : public CWinApp {
public:
	virtual BOOL InitInstance();
};


BOOL CMyWinApp::InitInstance() {
	CMyFrameWnd* pFrame = new CMyFrameWnd;

	pFrame->Create(NULL, "MFCView", WS_OVERLAPPEDWINDOW, CFrameWnd::rectDefault, NULL, (CHAR*)IDR_MENU1);

	m_pMainWnd = pFrame;
	pFrame->ShowWindow(SW_SHOW);
	pFrame->UpdateWindow();

	return TRUE;
}

CMyWinApp theApp; BEGIN_MESSAGE_MAP(CMyView, CView)
ON_COMMAND(ID_NEW, &CMyView::OnNew)
END_MESSAGE_MAP()

void CMyView::OnNew()
{
	AfxMessageBox("ON_NEW");
}
相关推荐
枫叶丹41 分钟前
【HarmonyOS 6.0】ArkWeb 深度解读:getPageOffset20 与网页滚动偏移量获取能力的演进
开发语言·华为·harmonyos
独特的螺狮粉1 分钟前
开源鸿蒙跨平台Flutter开发:室内探险游戏应用
开发语言·flutter·游戏·华为·开源·harmonyos·鸿蒙
坏小虎2 分钟前
~/.zshrc 和 ~/.bash_profile 详细介绍与区别
开发语言·bash
程序员学习随笔18 分钟前
C++条件变量(一):从轮询到唤醒 —— 条件变量的设计动机与基础用法
c++·线程并发
独特的螺狮粉20 分钟前
开源鸿蒙跨平台Flutter开发:喝水时间提醒应用
开发语言·flutter·华为·信息可视化·开源·harmonyos·鸿蒙
是娇娇公主~23 分钟前
线程池:缓存线程池CachedThreadPool
c++·线程池
橘子编程29 分钟前
GoF 23 种设计模式完整知识总结与使用教程
java·c语言·开发语言·python·设计模式
小欣加油30 分钟前
leetcode 128 最长连续序列
c++·算法·leetcode·职场和发展
玖釉-31 分钟前
图形 API 的前沿试车场:Vulkan 扩展体系深度解析与引擎架构实践
c++·架构·图形渲染
许杰小刀31 分钟前
SourceGenerator之partial范式及测试
c++·mfc