本文主要介紹:在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);
三、建立完成,效果如下: