在视图类中怎么进行分割,创建子视图?

本文介绍如何在MFC应用程序中实现一个包含左右两个视图的拆分窗口。通过覆盖OnCreate方法来创建静态拆分窗口,并为每个窗格指定不同的视图类。此外,还介绍了如何在窗口大小改变时调整拆分窗口的尺寸。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://social.microsoft.com/Forums/id-ID/visualcpluszhchs/thread/1757f561-32a5-4847-bd55-314ecd6978f0


try this:

BOOL m_bSplitter = FALSE; // 定义为成员变量,初始化为FALSE



int CXXXView::OnCreate(LPCREATESTRUCT lpCreateStruct) 

{

	if (CFormView::OnCreate(lpCreateStruct) == -1)

		return -1;

	

	// TODO: Add your specialized creation code here

	if(NULL == m_wndSplitter.GetSafeHwnd())

	{

		CCreateContext cc;

		memset(&cc, 0, sizeof(CCreateContext));

		

		CRect rc;

		GetWindowRect(&rc);

		

		VERIFY(m_wndSplitter.CreateStatic(this, 1, 2, WS_CHILD | WS_VISIBLE));



		cc.m_pNewViewClass = RUNTIME_CLASS(CLeftView);

		VERIFY(m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(300, rc.Height()), &cc));

		

		cc.m_pNewViewClass = RUNTIME_CLASS(CRightView);

		VERIFY(m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CRightView), CSize(0, rc.Height()), &cc));



		m_wndSplitter.MoveWindow(0, 0, rc.Width(), rc.Height());



		m_bSplitter = TRUE;

	}

	

	return 0;

}



void CXXXView::OnSize(UINT nType, int cx, int cy) 

{

	CFormView::OnSize(nType, cx, cy);

	

	// TODO: Add your message handler code here

	if(m_bSplitter && m_wndSplitter.GetSafeHwnd())

	{

		m_wndSplitter.MoveWindow(0, 0, cx, cy);

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值