0

リソース エディターで新しいダイアログとして作成した子ダイアログがあります。次に、親ダイアログで静的コントロールを使用して、プレースホルダーとして機能させました。子コントロールは、プレース ホルダーが次のコードを使用している場所に表示されます。

CRect rect;
m_optionPanelPlaceholder.GetWindowRect(&rect); // In screen coordinates
ScreenToClient(&rect);
m_optionPanelPlaceholder.ShowWindow(SW_HIDE);

optionsDialogPanel_ = new OptionsDialogPanel(settings_);
// Call Create() explicitly to ensure the HWND is created.
optionsDialogPanel_->Create(OptionsDialogPanel::IDD, this);

// Set the window position to be where the placeholder was.
optionsDialogPanel_->SetWindowPos
    (
    NULL,
    rect.left,
    rect.top,
    rect.Width(),
    rect.Height(),
    SWP_SHOWWINDOW
    );

これはすべてうまくいきます。私の子ダイアログには、デフォルトのボタンとして設定されているボタンがあります。マウスでボタンをクリックすると、目的のアクションが実行されます。ただし、子ダイアログの編集テキスト ボックスのいずれかで Enter キーを押すだけで、デフォルト ボタンのアクションが実行されます。ただし、機能していません。これどうやってするの?

4

2 に答える 2

1

ボタンのIDがIDC_ *ではなくIDOKに設定されていることを確認してください。残りはMFCが担当します!

于 2011-11-16T13:32:20.717 に答える
0

ダイアログで Enter ボタンを押すと、Parent::OnOK メソッドが呼び出されます。したがって、おそらく Parent::OnOK メソッド内で Child::OnOK を呼び出すことができます。

ありがとう。

于 2011-10-05T16:59:05.427 に答える