如何将DialogBar或对话框放入vc 2008或vc 2010 Beta中的窗格中

时间:2010-02-18 05:38:43

标签: c++ visual-c++ mfc mfc-feature-pack

您好我现在在2003 vc ++工作,我正在将我的项目转换(迁移)到vc 2008或新的vc 2010 Beta,我看到2008,2010的功能包考虑了CDockable Pane(Auto Hode,浮动),所以我需要这个功能,我想在窗格(CDockable Pane类)中放置一个对话框或对话栏,所以我在下面的代码中完成了这个

Myframe Code代码段是:

if (!m_MyPane.Create(L"MyPane", this, CRect(0,0,0,0), true, IDD_DIALOG1, WS_CHILD|WS_VISIBLE))
    return -1;
 AddDockSite();
 EnableDocking(CBRS_ALIGN_ANY);
 EnableAutoHidePanes(CBRS_ALIGN_ANY);
 m_MyPane.EnableDocking(CBRS_ALIGN_ANY);
 DockPane(&m_MyPane, AFX_IDW_DOCKBAR_RIGHT);

MyPane class Definition is :

#include "stdafx.h"

#include "Pane.h"
#include "Resource.h"
#include "MainFrm.h"
#include "soft1.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

CPane1::CPane1()
{
}
CPane1::~CPane1()
{

}

BEGIN_MESSAGE_MAP(CPane1, CDockablePane)
 ON_WM_CREATE()
 ON_WM_SIZE()
END_MESSAGE_MAP()

int CPane1::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CDockablePane::OnCreate(lpCreateStruct) == -1)
  return -1;

 return 0;
}

void CPane1::OnSize(UINT nType, int cx, int cy)
{
 CDockablePane::OnSize(nType, cx, cy);
}

当我构建它不会显示任何错误并在输出中执行时没有错误框架显示mypane但是mypane没有显示IDD_DIALOG1

所以我错过了什么,请纠正我的代码以及如何将IDD_DIALOG1对话框放入mypane

请帮助我

REGARDS G.BALAJI

1 个答案:

答案 0 :(得分:2)

简短的回答是很难在CDockablePane中放置一个对话框(我知道我已经这样做了)。但是如果你使用CPaneDialog很容易。如果要转换以前位于CDialog或CDialogBar中的对话框,则需要在对话框编辑器中打开“可见”标志。否则会发生一些奇怪的事情(CDialog要求标志关闭,但CPaneDialog要求它开启。)