天天看點

MFC基礎知識(五)——建立停靠視窗

本文主要介紹:在MFC中建立停靠視窗。

一、建立停靠視窗類

建立後的ObjectWnd.h和ObjectWnd.cpp檔案如下:

#pragma once
#include "afxdockablepane.h"
class CObjectWnd :
	public CDockablePane
{
public:
	CObjectWnd(void);
	~CObjectWnd(void);
	DECLARE_MESSAGE_MAP()
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg void OnSize(UINT nType, int cx, int cy);

};
           
#include "stdafx.h"
#include "ObjectWnd.h"


CObjectWnd::CObjectWnd(void)
{
}


CObjectWnd::~CObjectWnd(void)
{
}

BEGIN_MESSAGE_MAP(CObjectWnd, CDockablePane)
	ON_WM_CREATE()
	ON_WM_SIZE()
END_MESSAGE_MAP()


int CObjectWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDockablePane::OnCreate(lpCreateStruct) == -1)
		return -1;

		return 0;
}


void CObjectWnd::OnSize(UINT nType, int cx, int cy)
{
	CDockablePane::OnSize(nType, cx, cy);
}
           

二、MainFrm中設定停靠視窗

1. MainFrm.h中添加頭檔案ObjectWnd.h,并定義CObjectWnd類的對象

CObjectWnd		  m_wndObject;
           

2.  MainFrm.cpp中添加響應程式

BOOL CMainFrame::CreateDockingWindows()  函數中添加:

CString strObjectView("面向對象");
	if (!m_wndObject.Create(strObjectView, this, CRect(0, 0, 200, 200), TRUE, 1001, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI))
	{
		TRACE0("未能建立“面向對象”視窗\n");
		return FALSE; // 未能建立
	}
           

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)  函數中添加

m_wndObject.EnableDocking(CBRS_ALIGN_ANY); //使可停靠與浮動
	DockPane(&m_wndObject);
           

三、建立完成,效果如下:

MFC基礎知識(五)——建立停靠視窗