- UID
- 2299
- 积分
- 465
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-31
- 最后登录
- 1970-1-1
|
发表于 2002-10-11 13:20:48
|
显示全部楼层
Re: [ARX函数]:[ARX函数]:关于CAcUiDockControlBar类的
最初由 kfx2002 发布
各位前辈,请教CAcUiDockControlBar中AddCustomMenuItems函数的用法,我试了几次,但总是将自己的定义的菜单加不进到右键的弹出菜单中,请指教,谢谢
给你一段代码
MyDockBar.h
- //-----------------------------------------------------------------------------
- #if !defined(ARX__MYDOCKBAR_H__20020510_100826)
- #define ARX__MYDOCKBAR_H__20020510_100826
- //-----------------------------------------------------------------------------
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #include "resource.h"
- //-----------------------------------------------------------------------------
- class CMyDockBar : public CAcUiDockControlBar {
- DECLARE_DYNAMIC(CMyDockBar)
- public:
-
- CTreeCtrl m_wndTree;
- CMyDockBar () ;
- //{{AFX_VIRTUAL(CMyDockBar)
- public:
- virtual BOOL Create(CWnd*pParent, LPCSTR lpszTitle);
- protected:
- virtual BOOL OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult);
- virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
- //}}AFX_VIRTUAL
- protected:
- //{{AFX_MSG(CMyDockBar)
- afx_msg int OnCreate (LPCREATESTRUCT lpCreateStruct);
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- virtual void SizeChanged (CRect *lpRect, BOOL bFloating, int flags);
- virtual BOOL AddCustomMenuItems(LPARAM hMenu);
- } ;
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #endif //----- !defined(ARX__MYDOCKBAR_H__20020510_100826)
复制代码
MyDockBar.cpp
- //-----------------------------------------------------------------------------
- #include "StdAfx.h"
- #include "MyDockBar.h"
- #include "mydlg.h"
- //-----------------------------------------------------------------------------
- #ifdef _DEBUG
- #define new DEBUG_NEW
- #undef THIS_FILE
- static char THIS_FILE[] = __FILE__;
- #endif
- //-----------------------------------------------------------------------------
- IMPLEMENT_DYNAMIC(CMyDockBar, CAcUiDockControlBar)
- BEGIN_MESSAGE_MAP(CMyDockBar, CAcUiDockControlBar)
- //{{AFX_MSG_MAP(CMyDockBar)
- ON_WM_CREATE()
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- //-----------------------------------------------------------------------------
- // CMyDockBar *pInstance =new CMyDockBar ;
- // pInstance->Create (acedGetAcadFrame (), "My title bar") ;
- // pInstance->EnableDocking (CBRS_ALIGN_ANY) ;
- // pInstance->RestoreControlBar () ;
- static CLSID clsCMyDockBar ={ 0x697bdb0c, 0xd3be, 0x41b9, { 0xb5, 0x75, 0xc3, 0x99, 0xad, 0x48, 0x77, 0xad } } ;
- //-----------------------------------------------------------------------------
- CMyDockBar::CMyDockBar() : CAcUiDockControlBar () {
- //{{AFX_DATA_INIT(CMyDockBar)
- //}}AFX_DATA_INIT
- }
- BOOL CMyDockBar::Create(CWnd*pParent, LPCSTR lpszTitle) {
- CString strWndClass ;
- strWndClass =AfxRegisterWndClass (CS_DBLCLKS, LoadCursor (NULL, IDC_ARROW)) ;
- CRect rect (0, 0, 250, 200) ;
- if ( !CAcUiDockControlBar::Create (
- strWndClass,
- lpszTitle,
- WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN,
- rect,
- pParent, 0
- )
- )
- return (FALSE) ;
- SetToolID (&clsCMyDockBar) ;
- //----- TODO: Add your code here
-
- return (TRUE) ;
- }
- int CMyDockBar::OnCreate (LPCREATESTRUCT lpCreateStruct) {
- if ( CAcUiDockControlBar::OnCreate (lpCreateStruct) == -1 )
- return (-1) ;
- //----- TODO: Add your code here
-
- if (!m_wndTree.Create(WS_CHILD | WS_VISIBLE |
- TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES,
- CRect(0,0,1,1), this, 0x1234))
- return -1;
- m_wndTree.ModifyStyleEx(0, WS_EX_CLIENTEDGE);
- m_wndTree.InsertItem("TreeItem1");
- m_wndTree.InsertItem("TreeItem2");
- return (0) ;
- }
- void CMyDockBar::SizeChanged (CRect *lpRect, BOOL bFloating, int flags) {
- //----- TODO: Add your code here
- if (bFloating)
- m_wndTree.SetWindowPos(NULL,lpRect->left+2,lpRect->top+2,lpRect->right-4,lpRect->bottom-4,SWP_SHOWWINDOW);
- else{
- // CRect rect;
- // GetUsedRect(rect);
- // m_wndTree.SetWindowPos(NULL,rect.left+4,rect.top+4,rect.Width()-4,rect.Height()-4,SWP_SHOWWINDOW);
- m_wndTree.SetWindowPos(NULL,lpRect->left+4,lpRect->top+4,lpRect->Width()-4,lpRect->Height()-4,SWP_SHOWWINDOW);
- }
- }
- BOOL CMyDockBar::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)
- {
- // TODO: Add your specialized code here and/or call the base class
- //
-
- if ( wParam == 0x1234 ){//如果是m_wndTree
- switch (((LPNMHDR)lParam)->code){
- case NM_CLICK://在m_wndTree上按下鼠标左键
- CMyDlg myDlg;
- myDlg.m_pTreeCtrl = &m_wndTree;
- myDlg.UpdateData(FALSE);
- myDlg.DoModal();
- break;
- /*
- case TVN_SELCHANGED:
- ....
- break;
- case TVN_GETDISPINFO:
- ....
- break;
- */
- }
- }
- return CAcUiDockControlBar::OnNotify(wParam, lParam, pResult);
- }
- BOOL CMyDockBar::AddCustomMenuItems(LPARAM hMenu){
- HMENU hPopMenu;
- hPopMenu=(HMENU)(hMenu&0xffff);
- CMenu* pop_menu = CMenu::FromHandle(hPopMenu);
- pop_menu->AppendMenu(MF_SEPARATOR);
- pop_menu->AppendMenu(MF_STRING,0x1235,"Insert");
- return true;
- }
- BOOL CMyDockBar::OnCommand(WPARAM wParam, LPARAM lParam)
- {
- // TODO: Add your specialized code here and/or call the base class
- if ( wParam == 0x1235 ){//响应菜单
- CMyDlg myDlg;
- myDlg.m_pTreeCtrl = &m_wndTree;
- myDlg.m_strEdit="1234567890";
- myDlg.DoModal();
- return true;
- }
- else
- return CAcUiDockControlBar::OnCommand(wParam, lParam);
- }
复制代码
|
|