原来的网址:http://www.cnblogs.com/zkliuym/archive/2010/04/02/1703139.html
MDI的Pane中放置CXTPTaskPanel(ToolBox) 代码仅是示意代码,还需要进一步整理
MDI的Pane中放置CXTPTaskPanel(ToolBox) 代码仅是示意代码,还需要进一步整理
效果图:
1)
新建一个MFC MDI工程
2)
// stdafx.h
#include <XTToolkitPro.h> // Codejock Software Components
3)
// MainFrm.h
// class CMainFrame : public CFrameWnd改为
class CMainFrame : public CXTPMDIFrameWnd
{
... ...
public:
CXTPDockingPaneManager m_paneManager;
CXTPDockingPane* m_pPaneFunctionOptions;
CXTPTaskPanel* m_wndTaskPanel;
CXTPTaskPanelGroup* CreateToolboxGroup(UINT nID);
afx_msg LRESULT OnTaskPanelNotify(WPARAM wParam, LPARAM lParam);
... ...
}
4)
用《利用Codejock创建TaskPanel(ToolBox)》中的方法,新增字符串资源和ICON资源
5)
// MainFrm.cpp
代码
ON_MESSAGE(XTPWM_TASKPANEL_NOTIFY, OnTaskPanelNotify)
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
... ...
// TODO: Delete these three lines if you don't want the toolbar to be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
m_paneManager.InstallDockingPanes(this); //创建PaneManager
m_paneManager.SetTheme(xtpPaneThemeOffice);
m_pPaneFunctionOptions = m_paneManager.CreatePane(IDR_PANE_OPTIONS, //创建Pane
CRect(0, 0,200, 120), xtpPaneDockLeft);
m_wndTaskPanel = new CXTPTaskPanel; //创建CXTPTaskPanel
m_wndTaskPanel->Create(WS_VISIBLE | WS_CHILD, CRect(0, 50,200, 520), this, 1);
m_wndTaskPanel->SetOwner(this); //确保创建CXTPTaskPanel消息能够传给MainFrame窗口
m_pPaneFunctionOptions->Attach(m_wndTaskPanel); //将TaskPanel放到Pane中
m_wndTaskPanel->GetImageManager()->SetIcon(IDI_ICON1, 0);
m_wndTaskPanel->GetImageManager()->SetIcon(IDI_ICON2, 1);
m_wndTaskPanel->GetImageManager()->SetIcon(IDI_ICON3, 2);
m_wndTaskPanel->SetBehaviour(xtpTaskPanelBehaviourToolbox);
m_wndTaskPanel->SetTheme(xtpTaskPanelThemeShortcutBarOffice2007);
m_wndTaskPanel->SetSelectItemOnFocus(TRUE);
m_wndTaskPanel->AllowDrag(TRUE);
m_wndTaskPanel->SetIconSize(CSize(32, 32));
m_wndTaskPanel->SetItemLayout(xtpTaskItemLayoutImagesWithTextBelow);
m_wndTaskPanel->GetGroups()->Clear(FALSE);
CXTPTaskPanelGroup* pFolderPropertyPanes = CreateToolboxGroup(ID_TOOLBOXFOLDER_PROPERTYPANES);
CXTPTaskPanelGroup* pFolderData = CreateToolboxGroup(ID_TOOLBOXFOLDER_DATA);
pFolderData->AddLinkItem(ID_TOOLBOXITEM_DATASET ,1);
pFolderData->AddLinkItem(ID_TOOLBOXITEM_OLEDBDATAADAPTER ,1);
CXTPTaskPanelGroup* pFolderComponents = CreateToolboxGroup(ID_TOOLBOXFOLDER_PROPERTYPANES);
pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_DATASET ,2);
pFolderComponents->AddLinkItem(ID_TOOLBOXITEM_OLEDBDATAADAPTER ,1);
CreateToolboxGroup(ID_TOOLBOXFOLDER_GENERAL);
pFolderPropertyPanes->SetExpanded(TRUE);
return 0;
}
... ...
CXTPTaskPanelGroup* CMainFrame::CreateToolboxGroup(UINT nID)
{
CXTPTaskPanelGroup* pFolder = m_wndTaskPanel->AddGroup(nID);
CXTPTaskPanelGroupItem* pPointer = pFolder->AddLinkItem(ID_TOOLBOXITEM_POINTER, 0);
pPointer->SetItemSelected(TRUE);
pPointer->AllowDrag(FALSE);
pPointer->AllowDrop(FALSE);
pFolder->SetIconIndex(IDR_MAINFRAME);
return pFolder;
}
//
// m_wndTaskPanel->SetOwner(this);
// 确保创建CXTPTaskPanel消息能够传给MainFrame窗口
//
LRESULT CMainFrame::OnTaskPanelNotify(WPARAM wParam, LPARAM lParam)
{
switch(wParam) {
case XTP_TPN_CLICK:
{
CXTPTaskPanelGroupItem* pItem = (CXTPTaskPanelGroupItem*)lParam;
CString str;
str.Format(_T("Click Event: pItem.Caption = %s, pItem.ID = %i\n"), pItem->GetCaption(), pItem->GetID());
MessageBox(str);
}
break;
case XTP_TPN_RCLICK:
{
CXTPTaskPanelItem* pItem = (CXTPTaskPanelItem*)lParam;
CString str;
str.Format(_T("RClick Event: pItem.Caption = %s, pItem.ID = %i\n"), pItem->GetCaption(), pItem->GetID());
MessageBox(str);
}
break;
}
return 0;
}
6)