0

こんにちは、私は 2003 vc++ で作業しており、プロジェクトを vc 2008 または新しい vc 2010 Beta に変換 (移行) しています。ダイアログボックスまたはダイアログバーをペイン(CDockable Paneクラス)に配置したいので、次のコードでこれを行いました

Myframe コード スニペットは次のとおりです。

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.バラジ

4

1 に答える 1

2

短い答えは、CDockablePane にダイアログを配置するのは非常に難しいということです (私はそれをやったので知っています)。ただし、代わりに CPaneDialog を使用すると、非常に簡単です。以前に CDialog または CDialogBar にあったダイアログを変換する場合は、ダイアログ エディターで "Visible" フラグをオンにする必要があります。そうしないと、奇妙なことが起こります。(CDialog ではフラグをオフにする必要がありましたが、CPaneDialog ではオンにする必要があります。)

于 2010-02-22T03:27:22.453 に答える