0

これは私のソースです:

void CCCRView::OnInitialUpdate()
{
.
.
.
    VERIFY(dlg1.Create(CaaaqweqweqweDlg::IDD, this));
    VERIFY(dlg1.SetWindowPos(GetDlgItem(IDC_TAB2),100, 100,200, 200, SWP_SHOWWINDOW|SWP_NOSIZE|SWP_NOMOVE));
    dlg1.ShowWindow(SW_SHOW);
}

with: IDC_TAB2: タブ コントロールです......... dlg1: 埋め込みたいダイアログ.................... ................ CaaaqweqweqweDlg: クラス ダイアログの名前(CaaaqweqweqweDlg dlg1;)................................ ...................................

これは私のデザインです:

ここに画像の説明を入力

これは私の結果です: ここに画像の説明を入力

ダイアログがタブ コントロールにないことがわかります。誰か助けて?ありがとう!!!

4

3 に答える 3

0

子ダイアログを適切に配置する場合は、次のことを行う必要があります。

  • ダイアログを正しく配置するための参照タブコントロール位置を取得します
  • SWP_NOSIZE | SWP_NOMOVEを削除して、この位置を適用します

これは次のようになります(テストされていません):

dlg1.Create(CaaaqweqweqweDlg::IDD, this);

CRect Rect;
GetDlgItem(IDC_TAB2)->GetWindowRect(Rect);
Rect.InflateRect(-10, -10);
ScreenToClient(Rect);

dlg1.SetWindowPos(&wndTop, Rect.left, Rect.top, Rect.Width(), Rect.Height(), SWP_SHOWWINDOW);

wndTop、ダイアログが他のコントロールの上にあることを確認します。

于 2012-11-15T16:01:53.550 に答える
0

ダイアログやその他のコントロールはタブの子ではなく、タブ自体が表示されているウィンドウの子でもあります。CTabCtrl の AdjustRect() を使用して、タブのコンテンツの位置を計算します。さらに、タブの変更を手動で管理し、何をすべきかを処理する必要があります (通常、これは、タブの一部にしたいコントロール以外のすべてを非表示にすることを意味します)。

歴史的には、CTabCtrl に独自の抽象化を記述して、コントロールまたはウィンドウを含めることができ、タブが表示されているウィンドウからタブを切り離すことができました。ただし、MFC Next には、期待どおりに動作する CMFCTabCtrl があるため、それを使用すれば問題ありません。

于 2012-11-15T15:38:02.797 に答える
0

ダイアログ スタイルを に変更する必要がありますCHILD。あなたはおそらくPOPUPスタイルセットを持っています。

于 2012-11-15T08:16:56.457 に答える