青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

MFC中如何將 CFormView放置到一個(gè)CDockablePane中

  最近再搭建一個(gè)平臺(tái),設(shè)計(jì)到界面設(shè)計(jì),然后就遇到題目中所述的問(wèn)題,簡(jiǎn)單的講就是要把CFormView放置到CDockablePane中,利用CDockablePane做成那種浮動(dòng)的效果,郁悶的發(fā)現(xiàn)網(wǎng)絡(luò)上貌似關(guān)于這點(diǎn)的信息較少,有的也是說(shuō)的含糊不清。沒(méi)辦法只能自己研究了 ~ 好吧,其他就都不說(shuō)了,直接上代碼:
 CMainFrame類(lèi)
1 int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
 2 {
 3     if(CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1)
 4         return -1;
 5     // enable Visual Studio 2008 style docking window behavior
 6     CDockingManager::SetDockingMode(DT_SMART);
 7     // enable Visual Studio 2008 style docking window auto-hide behavior
 8     EnableAutoHidePanes(CBRS_ALIGN_ANY);
 9     // create docking windows
10     if(!CreateDockingWindows())
11     {
12         TRACE0("Failed to create docking windows\\n");
13         return -1;    
14     }
15 
16     m_wndManageDock.EnableDocking(CBRS_ALIGN_ANY);
17     DockPane(&m_wndManageDock);
18     return 0;
19
 
1 BOOL CMainFrame::CreateDockingWindows()
 2 {
 3   
 4    ////此處省略VS自動(dòng)生成的一些代碼
 5 
 6     if (!m_wndManageDock.Create(_T("Manage Panel"), this, CRect(00200200), TRUE, 222
 7         WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT| CBRS_FLOAT_MULTI))
 8     {
 9         TRACE0("未能創(chuàng)建“屬性”窗口\n");
10         return FALSE; // 未能創(chuàng)建
11     }
12 
13     SetDockingWindowIcons(theApp.m_bHiColorIcons);
14     return TRUE;
15 
16 }
 ManageDock.h
1 #pragma once
 2 #include "ManagePanel.h"
 3 
 4 // CManageDock
 5 class CManageDock : public CDockablePane
 6 {
 7     DECLARE_DYNAMIC(CManageDock)
 8 
 9 public:
10     CManageDock();
11     virtual ~CManageDock();
12 
13 public:
14     CManagePanel *m_wndManagePanel;
15 
16 protected:
17     DECLARE_MESSAGE_MAP()
18 public:
19     afx_msg void OnPaint();
20     afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
21 };
 ManageDock.cpp
 1 #include "stdafx.h"
 2 #include "EB Studio.h"
 3 #include "ManageDock.h"
 4 // CManageDock
 5 
 6 IMPLEMENT_DYNAMIC(CManageDock, CDockablePane)
 7 
 8 CManageDock::CManageDock()
 9 {
10 
11 }
12 
13 CManageDock::~CManageDock()
14 {
15 }
16 
17 
18 BEGIN_MESSAGE_MAP(CManageDock, CDockablePane)
19     ON_WM_PAINT()
20     ON_WM_CREATE()
21 END_MESSAGE_MAP()
22 
23 
24 // CManageDock 消息處理程序
25 
26 void CManageDock::OnPaint()
27 {
28     CPaintDC dc(this); // device context for painting
29     // TODO: 在此處添加消息處理程序代碼
30     // 不為繪圖消息調(diào)用 CDockablePane::OnPaint()
31     CRect rc;
32     GetClientRect(rc);
33     CBrush brush;  
34     brush.CreateSolidBrush(RGB(255,255,255));   //背景設(shè)置為白色
35 
36     dc.FillRect(&rc,&brush);  
37 }
38 
39 int CManageDock::OnCreate(LPCREATESTRUCT lpCreateStruct)
40 {
41     if (CDockablePane::OnCreate(lpCreateStruct) == -1)
42         return -1;
4
44     // TODO:  在此添加您專(zhuān)用的創(chuàng)建代碼
45 
46     CRect rectDummy;
47     rectDummy.SetRectEmpty();
48 
49     //     if(!m_wndFormView->Create(NULL, NULL, WS_CHILD|WS_VISIBLE, rectDummy, this, 0, NULL));//重要的地方
50     //     {
51     //         TRACE0("未能創(chuàng)建文件視圖\n");
52     //         return -1;      // 未能創(chuàng)建
53     //     }
54     m_wndManagePanel = CManagePanel::CreateOne(this);
55 
56     return 0;
57 }
 ManagePanel.h
1 #pragma once 2 #include "Resource.h" 3 4 // CManagePanel 窗體視圖 5 class CManagePanel : public CFormView 6 { 7 DECLARE_DYNCREATE(CManagePanel) 8 9 //protected:原來(lái) 10 public: 11 CManagePanel(); // 動(dòng)態(tài)創(chuàng)建所使用的受保護(hù)的構(gòu)造函數(shù) 12 virtual ~CManagePanel(); 13 14 static CManagePanel *CreateOne( CWnd *pParent );//自己加 15 16 17 public: 18 enum { IDD = IDD_MANAGEPANEL }; 19 #ifdef _DEBUG 20 virtual void AssertValid() const; 21 #ifndef _WIN32_WCE 22 virtual void Dump(CDumpContext& dc) const; 23 #endif 24 #endif 25 26 protected: 27 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 28 29 DECLARE_MESSAGE_MAP() 30 public: 31 virtual void OnInitialUpdate(); 32 afx_msg int OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message); 33 };
 ManagePanel.cpp
1 #include "stdafx.h" 2 #include "EB Studio.h" 3 #include "ManagePanel.h" 4 5 // CManagePanel 6 7 IMPLEMENT_DYNCREATE(CManagePanel, CFormView) 8 9 CManagePanel::CManagePanel() 10 : CFormView(CManagePanel::IDD) 11 { 12 13 } 14 15 CManagePanel::~CManagePanel() 16 { 17 } 18 19 void CManagePanel::DoDataExchange(CDataExchange* pDX) 20 { 21 CFormView::DoDataExchange(pDX); 22 } 23 24 BEGIN_MESSAGE_MAP(CManagePanel, CFormView) 25 ON_WM_MOUSEACTIVATE() 26 END_MESSAGE_MAP() 27 28 29 // CManagePanel 診斷 30 31 #ifdef _DEBUG 32 void CManagePanel::AssertValid() const 33 { 34 CFormView::AssertValid(); 35 } 36 37 #ifndef _WIN32_WCE 38 void CManagePanel::Dump(CDumpContext& dc) const 39 { 40 CFormView::Dump(dc); 41 } 42 #endif 43 #endif //_DEBUG 44 45 46 // CManagePanel 消息處理程序 47 48 void CManagePanel::OnInitialUpdate() 49 { 50 CFormView::OnInitialUpdate(); 51 52 GetParentFrame()->RecalcLayout(); 53 SetScrollSizes( MM_TEXT, CSize( 300, 300 ) ); 54 ResizeParentToFit(FALSE); 55 56 // TODO: 在此添加專(zhuān)用代碼和/或調(diào)用基類(lèi) 57 } 58 59 CManagePanel *CManagePanel::CreateOne( CWnd *pParent ) 60 { 61 CManagePanel *p_ManagePanel = new CManagePanel; 62 63 //CMyFormView *pFormView = NULL; 64 //CRuntimeClass *pRuntimeClass = RUNTIME_CLASS(CMyFormView); 65 //pFormView = (CMyFormView *)pRuntimeClass->CreateObject(); 66 67 //CDockableFormViewAppDoc *pDoc = CDockableFormViewAppDoc::CreateOne();///////////////////////////////////////// 68 //pFormView->m_pDocument = pDoc;//////////////////////////////////////////////////////////////////////////////// 69 CCreateContext *pContext = NULL; 70 #if 0 71 if( !p_ManagePanel->CreateEx(0, NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(0,0,205,157), 72 pParent, -1, pContext ) ) 73 #else 74 if (!p_ManagePanel->Create(NULL, NULL, WS_CHILD | WS_VISIBLE, CRect(0, 0, 300, 300), pParent, 0, pContext)) 75 #endif 76 //if( !pFormView->CreateEx( 0, AfxRegisterWndClass(0, 0, 0, 0), NULL, 77 // WS_CHILD | WS_VISIBLE, CRect( 0, 0, 205, 157), pParent, -1, pContext) ) 78 { 79 AfxMessageBox( _T("Failed in creating CMyFormView") ); 80 81 } 82 p_ManagePanel->OnInitialUpdate(); 83 return p_ManagePanel; 84 85 } 86 87 int CManagePanel::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message) 88 { 89 // TODO: 在此添加消息處理程序代碼和/或調(diào)用默認(rèn)值 90 91 int nResult = 0; 92 93 CFrameWnd* pParentFrame = GetParentFrame(); 94 if(pParentFrame == pDesktopWnd) 95 { 96 // When this is docked 97 nResult = CFormView::OnMouseActivate(pDesktopWnd, nHitTest, message); 98 } 99 else 100 { 101 // When this is not docked 102 BOOL isMiniFrameWnd = pDesktopWnd->IsKindOf( RUNTIME_CLASS( CMiniFrameWnd ) ); 103 BOOL isPaneFrameWnd = pDesktopWnd->IsKindOf( RUNTIME_CLASS( CPaneFrameWnd ) ); 104 BOOL isMultiPaneFrameWnd = pDesktopWnd->IsKindOf( RUNTIME_CLASS( CMultiPaneFrameWnd ) ); 105 // pDesktopWnd is the frame window for CDockablePane 106 nResult = CWnd::OnMouseActivate( pDesktopWnd, nHitTest, message ); 107 108 //nResult = CWnd::OnMouseActivate( pDesktopWnd, nHitTest, message ); 109 //if( nResult == MA_NOACTIVATE || nResult == MA_NOACTIVATEANDEAT ) 110 // return nResult; 111 //if (pDesktopWnd != NULL) 112 //{ 113 // // either re-activate the current view, or set this view to be active 114 // //CView* pView = pDesktopWnd->GetActiveView(); 115 // //HWND hWndFocus = ::GetFocus(); 116 // //if (pView == this && 117 // // m_hWnd != hWndFocus && !::IsChild(m_hWnd, hWndFocus)) 118 // //{ 119 // // // re-activate this view 120 // // OnActivateView(TRUE, this, this); 121 // //} 122 // //else 123 // //{ 124 // // // activate this view 125 // // pDesktopWnd->SetActiveView(this); 126 // //} 127 //} 128 } 129 return nResult;

posted on 2010-11-07 15:11 蝸牛也Coding 閱讀(8369) 評(píng)論(3)  編輯 收藏 引用

評(píng)論

# re: MFC中如何將 CFormView放置到一個(gè)CDockablePane中[未登錄](méi) 2010-11-07 18:27 zhaoyg

后半部分的代碼沒(méi)法看。

浮動(dòng)時(shí),如果在CFormView上單擊就會(huì)崩掉,原因是浮動(dòng)時(shí)指向的父類(lèi)發(fā)生了變化,所以我想請(qǐng)問(wèn),這塊你是怎么處理的  回復(fù)  更多評(píng)論   

# re: MFC中如何將 CFormView放置到一個(gè)CDockablePane中 2010-11-07 18:59 蝸牛也Coding

@zhaoyg
都在 OnMouseActivate 函數(shù)里了  回復(fù)  更多評(píng)論   

# re: MFC中如何將 CFormView放置到一個(gè)CDockablePane中 2014-02-13 18:29 ren

注釋掉的創(chuàng)建部分,指針調(diào)用
為何不用友元類(lèi)聲明下,就可以用了的。CreateOne,有點(diǎn)繞。
感謝博主分享。  回復(fù)  更多評(píng)論   


只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(8)

隨筆檔案(78)

搜索

積分與排名

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产成人在线播放| 亚洲欧洲一区二区三区在线观看| 国产精品久久综合| 国产精品女人久久久久久| 国产精品久久久一本精品| 国产裸体写真av一区二区| 国产一区二区三区精品久久久| 国产主播一区二区三区| 亚洲国产精品精华液2区45| 日韩午夜黄色| 欧美精品日韩精品| 欧美日韩另类在线| 国产精品久久久久久久久久久久久| 国产精品一区二区a| 国产专区综合网| 亚洲精品永久免费| 亚洲制服丝袜在线| 久久看片网站| 亚洲成色www8888| 久久国产黑丝| 欧美成人影音| 久久精品三级| 亚洲国产成人精品久久久国产成人一区 | 一区二区三区精品国产| 亚洲一区二区毛片| 久久久不卡网国产精品一区| 欧美成人亚洲成人| 久久久天天操| 欧美日韩成人| 国产一区二区欧美日韩| 日韩天堂在线视频| 欧美一区二区私人影院日本| 免费国产自线拍一欧美视频| 一本到12不卡视频在线dvd| 欧美一区二区三区免费在线看| 麻豆久久婷婷| 国产精品日韩欧美一区| 亚洲黄一区二区三区| 午夜精品久久久久久久男人的天堂| 美脚丝袜一区二区三区在线观看| 日韩视频免费大全中文字幕| 久久久www免费人成黑人精品 | 国产情侣久久| 亚洲精品社区| 久久亚洲二区| 一区二区国产日产| 看片网站欧美日韩| 国产精品永久| 亚洲精品人人| 久久久精品tv| 夜夜嗨av一区二区三区四季av| 久久精品国产久精国产一老狼| 欧美日韩精品三区| 亚洲成色999久久网站| 午夜精品99久久免费| 亚洲第一伊人| 久久久之久亚州精品露出| 国产精品三上| 中文精品99久久国产香蕉| 欧美国产精品一区| 久久精品国产99精品国产亚洲性色 | 欧美国产精品va在线观看| 午夜欧美精品| 久久精品一本| 国产日产亚洲精品| 亚洲一区影院| 亚洲日本激情| 欧美成人黑人xx视频免费观看 | 欧美在线播放| av不卡免费看| 欧美日韩情趣电影| 亚洲美女电影在线| 欧美激情网友自拍| 久久精品人人做人人爽电影蜜月| 国产欧美日韩免费看aⅴ视频| 亚洲视频一区二区在线观看| 亚洲国产清纯| 嫩草影视亚洲| 亚洲电影免费在线观看| 久久久久综合网| 欧美在线一区二区| 国产夜色精品一区二区av| 欧美与欧洲交xxxx免费观看| 宅男噜噜噜66一区二区| 欧美日韩精品久久| 中文日韩电影网站| 99国产精品国产精品毛片| 欧美日韩美女| 亚洲视频狠狠| 一区二区三区不卡视频在线观看 | 久久亚洲精品视频| 伊人久久婷婷| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美专区18| 国内免费精品永久在线视频| 久久久久免费观看| 久久久久久尹人网香蕉| 亚洲国产欧美日韩精品| 欧美大片免费观看| 女人天堂亚洲aⅴ在线观看| 91久久精品www人人做人人爽| 欧美黑人在线观看| 欧美精品99| 亚洲一区免费| 亚洲欧美日本日韩| 黄色av一区| 亚洲国产精品成人| 欧美日韩亚洲精品内裤| 午夜精品一区二区三区在线播放 | 国产精品制服诱惑| 久久精品国产亚洲精品| 久久视频在线看| 亚洲另类自拍| 亚洲一区二区三区在线播放| 国产精品无人区| 久久夜色精品国产欧美乱极品| 久久视频在线免费观看| 一本久道综合久久精品| 亚洲综合二区| 精品91在线| 日韩视频在线观看国产| 国产精品日韩在线观看| 久热这里只精品99re8久| 欧美激情国产日韩| 午夜久久美女| 久久人人爽爽爽人久久久| 一本色道久久综合亚洲精品按摩| 亚洲一区3d动漫同人无遮挡| 国内精品一区二区| 亚洲精品日产精品乱码不卡| 国产精品美女久久福利网站| 久久综合给合久久狠狠狠97色69| 欧美黑人在线播放| 性伦欧美刺激片在线观看| 另类综合日韩欧美亚洲| 亚洲少妇最新在线视频| 久久精品五月婷婷| 亚洲小说春色综合另类电影| 欧美在线播放高清精品| 亚洲免费激情| 久久不见久久见免费视频1| 亚洲免费不卡| 欧美在线免费一级片| 99精品国产福利在线观看免费| 香蕉久久a毛片| 99www免费人成精品| 欧美在线观看一区| 亚洲午夜女主播在线直播| 久久久不卡网国产精品一区| 亚洲自拍三区| 欧美成人综合在线| 久久九九精品99国产精品| 欧美日韩dvd在线观看| 蜜臀av在线播放一区二区三区| 国产精品第2页| 欧美激情成人在线| 国产亚洲观看| 亚洲视频一区二区免费在线观看| 在线免费高清一区二区三区| 亚洲免费在线视频一区 二区| 亚洲美女福利视频网站| 久久久久久电影| 欧美在线免费观看视频| 欧美视频二区| 久久国产加勒比精品无码| 欧美日韩精品伦理作品在线免费观看| 另类天堂av| 国产区亚洲区欧美区| 夜色激情一区二区| 亚洲精品久久久久久久久久久久久| 欧美一级在线播放| 亚洲欧美日韩一区二区在线 | 亚洲一区二区高清视频| 你懂的视频欧美| 久久视频在线免费观看| 国产精品综合| 亚洲视频在线看| 亚洲在线免费视频| 欧美日韩一区二区在线视频| 亚洲激情六月丁香| 亚洲破处大片| 老司机凹凸av亚洲导航| 免播放器亚洲| 在线精品视频一区二区| 久久精品伊人| 蜜桃av噜噜一区| 亚洲大片在线| 裸体一区二区| 亚洲福利小视频| 亚洲精品乱码视频| 欧美电影在线播放| 亚洲精品国产拍免费91在线| 亚洲另类在线一区| 欧美屁股在线| 一级成人国产| 亚洲女人av| 国产日韩在线一区| 欧美在线黄色| 欧美成人午夜激情在线| 亚洲欧洲在线一区|