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
#include
?
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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库codejock英文教程在线全文阅读。
相关推荐: