codejock英文教程

2025-11-22

MFC/C++

Adding a docking pane to your application Author: Kirk Stowell

Posted: November 16, 2007 Environment:Visual C++ MFC

The following is a tutorial on how to create an MDI application with Docking Pane using the Visual Studio 6.0 Application Wizard. The same technique can be used for later versions of Visual Studio . NET as well.

Create a simple MDI application using the MFC AppWizard:

? ?

From Visual Studio select ‘File’ then ‘New’ and select the ‘Projects’ tab.

Choose MFC Appwizard(exe) as your project type and enter ‘MDISample’ as the

project name.

? For the first step, make sure that \‘Finish’ button.

Add Empty Docking Pane ? Add the following line to your StdAfx.h file: Xtreme Toolkit Pro users:

#include // Xtreme Toolkit Pro components Xtreme DockingPane users:

#include // Xtreme DockingPane components

?

Add CXTPDockingPaneManager member to CMainFrame class.

?

// Attributes public:

CXTPDockingPaneManager m_paneManager;

?

Add string resources for the titles of the future panes

?

IDR_PANE_OPTIONS 61446 Options

PROPERTIES 61447 Properties ?

??

Add following to CMainFrame::OnCreate.

// Initialize the docking pane manager and set the // initial them for the docking panes. Do

// this only after all control bars objects have been // created and docked.

m_paneManager.InstallDockingPanes(this); m_paneManager.SetTheme(xtpPaneThemeOffice);

// Create docking panes.

CXTPDockingPane* pwndPane1 = m_paneManager.CreatePane( IDR_PANE_OPTIONS, CRect(0, 0,200, 120), dockLeftOf); CXTPDockingPane* pwndPane2 = m_paneManager.CreatePane( IDR_PANE_PROPERTIES, CRect(0, 0,200, 120), dockBottomOf, pwndPane1);

Attach CWnd derived class to the panes: ?? Add Cwnd derived class as member of CMainFrame.

// Attributes public:

CStatic m_wndOptions; CEdit m_wndProperties;

Add OnDockingPaneNotify handler.

BEGIN_MESSAGE_MAP(CMainFrame, CMDIFrameWnd) //{{AFX_MSG_MAP(CMainFrame) ON_WM_CREATE()

//}}AFX_MSG_MAP

ON_MESSAGE(XTPWM_DOCKINGPANE_NOTIFY, OnDockingPaneNotify) END_MESSAGE_MAP()

LRESULT CMainFrame::OnDockingPaneNotify(WPARAM wParam, LPARAM lParam)

{

if (wParam == XTP_DPN_SHOWWINDOW) {

CXTPDockingPane* pPane =

(CXTPDockingPane*)lParam;

if (!pPane->IsValid())

{

switch (pPane->GetID()) {

case IDR_PANE_PROPERTIES: {

if (

m_wndProperties.GetSafeHwnd() == 0) {

m_wndProperties.Create(WS_CHILD| ES_AUTOVSCROLL|ES_MULTILINE, CRect(0, 0, 0, 0), this, 0); }

pPane->Attach(&m_wndProperties); break;

}

case IDR_PANE_OPTIONS:

{

if (m_wndOptions.GetSafeHwnd() == 0) {

m_wndOptions.Create(_T(\ WS_CHILD|WS_CLIPCHILDREN| WS_CLIPSIBLINGS|SS_CENTER, CRect(0, 0, 0, 0), this, 0); }

pPane->Attach(&m_wndOptions); break; }

} }

return TRUE; }

return FALSE; }

Add image to pane. ?? Create Bitmap with icons for created panes

??

Add to CMainFrame::OnCreate.

nt nIDIcons[] = {IDR_PANE_OPTIONS, IDR_PANE_PROPERTIES}; m_paneManager.SetIcons(IDB_BITMAP_ICONS, nIDIcons, _countof(nIDIcons), RGB(0, 255, 0));

Add Save/Load State


codejock英文教程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:企业理财之道

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219