天天看點

vc++2008 feature package中CPaneDialog的使用方法

1. 在資源裡添加dialog時,使用formview的dialog。

2. 給dialog添加類CParamsDlg,基類選CDialog,生成代碼後,将代碼中的CDialog改成CPanedialog

3. 建立CPaneDialog,其中m_wndFileView是一個CDockablePane子類的對象。

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

     if  ( ! m_wndFileView.Create(strFileView,  this , CRect( 0 ,  0 ,  200 ,  200 ), TRUE, ID_VIEW_FILEVIEW, WS_CHILD  |  WS_VISIBLE  |  WS_CLIPSIBLINGS  |  WS_CLIPCHILDREN  |  CBRS_LEFT |  CBRS_FLOAT_MULTI))

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

{

vc++2008 feature package中CPaneDialog的使用方法

  TRACE0("Failed to create File View window/n");

vc++2008 feature package中CPaneDialog的使用方法

  return FALSE; // failed to create

vc++2008 feature package中CPaneDialog的使用方法

 }

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

     if  ( ! m_dlgParams.Create (_T( " DialogBar " ),  this , TRUE,

vc++2008 feature package中CPaneDialog的使用方法

        MAKEINTRESOURCE (IDD_FORM_PARAMS), 

vc++2008 feature package中CPaneDialog的使用方法

        WS_CHILD  |  WS_VISIBLE  |  WS_CLIPSIBLINGS  |  WS_CLIPCHILDREN  |  CBRS_LEFT  |  CBRS_FLOAT_MULTI, 

vc++2008 feature package中CPaneDialog的使用方法

        IDD_FORM_PARAMS))

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

{

vc++2008 feature package中CPaneDialog的使用方法

        TRACE0("Failed to create Dialog Bar/n");

vc++2008 feature package中CPaneDialog的使用方法

        return FALSE;      // fail to create

vc++2008 feature package中CPaneDialog的使用方法

    }

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

    m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);

vc++2008 feature package中CPaneDialog的使用方法

    m_dlgParams.EnableDocking(CBRS_ALIGN_ANY);

vc++2008 feature package中CPaneDialog的使用方法

    DockPane( & m_wndFileView);

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

    m_dlgParams.DockToWindow ( & m_wndFileView, CBRS_ALIGN_BOTTOM);

vc++2008 feature package中CPaneDialog的使用方法
vc++2008 feature package中CPaneDialog的使用方法

4. 在CParamsDlg中對控件添加響應事件,不能捕獲到,初步想到的解決辦法未,在CParamsDlg中添加一個通過控件id取得控件内容的函數,然後将窗體中的按鈕響應事件,添加到mainframe中,這樣由mainframe來捕獲,在響應函數裡調用CParamsDlg中的函數,來獲得對應控件的值。

  cpanedialog風格問題:

在你的dialog裡面加入WM_PAINT的響應,在OnPaint()函數裡寫如下代碼:

CPaintDC dc(this);

CMemDC memDC(dc,this);

CRect rectClint;

GetClientRect(rectClint);

CMFCVisualManagerOffice2007::GetInstance()->OnFillOutlookPageButton(&memDC.GetDC(),this,rectClient, rectClient);

以上這些代碼還沒驗證,先把它儲存下來