0

メイン ダイアログで動作する次のコードがありますが、2 番目 (または 3 番目) のダイアログでは動作しません。問題は、タブ コントロールの各ページに埋め込みダイアログを表示できるようにすることです。これは、プロパティ ページに似ています。

最初に 2 つのダイアログと を作成IDD_DIALOG1します。IDD_DIALOG2次に、それらのスタイルを に変更しchild、ボーダーをに変更しNoneます。その後、CDialogそれぞれにクラスを追加します。

MainDialog.hの には、次のコードがあります。

#include "Dialog1.h"
#include "Dialog2.h"
...
public:
    CDialog1 m_para1;
    CDialog2 m_para2;
    CTabCtrl m_TabCtrl;

私のMainDialog.cppでは、次のコードを使用して、dialo を に埋め込みますOnInitDialog

m_TabCtrl.InsertItem(0, _T("TAB1"));
m_TabCtrl.InsertItem(1, _T("TAB2"));
m_para1.Create(IDD_DIALOG1,GetDlgItem(IDD_MAINDIALOG));
m_para2.Create(IDD_DIALOG2,GetDlgItem(IDD_MAINDIALOG));

CRect rs;
m_TabCtrl.GetClientRect(&rs);

rs.top+=37;
rs.bottom+=8;
rs.left+=13;
rs.right+=7;

m_para1.MoveWindow(&rs);
m_para2.MoveWindow(&rs);

m_para1.ShowWindow(TRUE);
m_para2.ShowWindow(FALSE);


m_TabCtrl.SetCurSel(1);

このように使えば、こんな場合に活躍できます。SecondDialogしかし、このメソッドを非メイン ダイアログで使用したい場合、機能しません。誰かが私を助けることができますか?前もって感謝します。

4

1 に答える 1

1

モードレス ダイアログ ボックスを作成するときは、次のことを試してください。

m_para1.Create(IDD_DIALOG1,&m_TabCtrl);
m_para2.Create(IDD_DIALOG2,&m_TabCtrl);

関数の 2 番目のパラメーターは、ダイアログ オブジェクトが属するCreate(タイプの) 親ウィンドウ オブジェクトへのポイントです。関数CWndの戻り値の型は.GetDlgItemHWND

以下を参照してください: http://msdn.microsoft.com/en-us/library/tc46f3be.aspx
http://msdn.microsoft.com/en-us/library/kc6x1ya0.aspx

于 2013-10-07T03:16:20.260 に答える