Visual VC++ 2005 のMFCに関する質問です。

1つのダイアログ画面が、2つのクラス(子画面)で構成されています。
親画面は、「MainDlg.class」子画面はそれぞれ「Upper.Class」と「Lower.Class」 とします。
子画面から、親画面のOKボタン()をクリックする方法についてご教授ください。

※MainDlg::OnBnClickedOk()を子画面から実行する方法です。

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2009/03/16 09:19:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント100pt

画面のイメージは以下のような感じでしょうか?

MainDlg

UpperView
IDC_UPPER_BTN

LowerView

IDC_LOWER_BTN

IDOK IDCANCEL

MainDlg::OnBnClickedOk()を子画面から実行する方法

子画面から親画面のボタンに対して「BM_CLICK」メッセージを送信すれば、

MainDlg::OnBnClickedOk() を呼ぶことになります。

以下は、OK ボタンの ID が「IDOK」の場合のサンプルです。

void CUpperView::OnBnClickedUpperBtn()
{
    CWnd* pWnd = GetParent();                 // 親画面のウィンドウ(MainDlg)を取得
    CWnd* pButton = pWnd->GetDlgItem( IDOK ); // 親画面のボタン(IDOK)を取得
    pButton->SendMessage( BM_CLICK, 0, 0 );   // ボタンクリック(BM_CLICK を送信)
}
<参考情報>
■ ダイアログのボタンを押すメモ(Hishidama's VC++ click dialog button Memo)
http://www.ne.jp/asahi/hishidama/home/tech/vcpp/clickdlg.html
■ 指定したWindowにボタンクリックメッセージを送る方法
http://www.sutosoft.com/oldroom/devdiary/20010919.html
id:Vacuum

おお、すばらしい。

ありがとうございます。

2009/03/16 09:18:29

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません