如何在 vc 2008 或 vc 2010 Beta 中将 DialogBar 或对话框放置到窗格中

Posted

技术标签:

【中文标题】如何在 vc 2008 或 vc 2010 Beta 中将 DialogBar 或对话框放置到窗格中【英文标题】:How to Place DialogBar or Dialog box into pane in vc 2008 or vc 2010 Beta 【发布时间】:2010-02-18 05:38:42 【问题描述】:

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

Myframe代码sn-p是:

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

请帮帮我

问候 G.巴拉吉

【问题讨论】:

【参考方案1】:

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

【讨论】:

哎呀!我只是花了两天时间试图让这个工作。所要做的就是在对话框资源中设置 WS_VISIBLE 标志。感谢您的解决方案!

以上是关于如何在 vc 2008 或 vc 2010 Beta 中将 DialogBar 或对话框放置到窗格中的主要内容,如果未能解决你的问题,请参考以下文章

用VC2010编译Python扩展

问题:工程迁移 VC6->VS2008->VS2010

VC 2008 Express下安装OpenCV2.3.1

VC++2008 项目总是“过时”

安装不上VC2010运行库

vc++在使用vs2008 中自带的水晶报表的例程 跪求