海阔天空

海阔凭鱼跃 天高任鸟飞

 

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)

posted on 2010-04-02 14:46  liuym  阅读(2628)  评论(1编辑  收藏  举报

导航