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)

转载于:https://www.cnblogs.com/zkliuym/archive/2010/04/02/1703139.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值