- 締切済み
フォームの再表示について
VC++初心者です。 ダイアログベースのアプリケーションをつくったんですが、その後ボタンクリックでモーダルダイアログを2つ順番に表示したいと思っています。 void CMFC_testDlg::OnBnClickedButton1() { CmyDialog myDL; ret1 = myDL.DoModal(); } で一つ目を表示 void CmyDialog::OnBnClickedOk() { this->ShowWindow(SW_HIDE); CmyDialog02 myDL02; myDL02.DoModal(); } で一つ目を隠して、2つ目を表示 さらに2つ目のダイアログのボタンを押した時、2つ目を閉じて1つ目を再表示したいと思います。 void CmyDialog02::OnBnClickedOk() { EndDialog(-1); CmyDialog::ShowWindow(SW_SHOW); } と書いた所エラーになります。 どこがまずいんでしょうか。 エラーメッセージ:静的でないメンバ関数の呼び出しが正しくありません VBになれてしまっているため、C++の文法でどう書いていいのかわかりません。 どなたかお教えください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
エラーの直接の原因はShowWindowメソッドの呼び出し指定を「::」で行おうとしている点です。(なぜ「::」を使うとエラーになるのかを理解するには、C++言語の文法規約を学ぶ必要があります。) CmyDialog02::OnBnClickedOkの中でShowWindowを呼び出すかわりに、CmyDialog::OnBnClickedOkの中で(既に行っているのと同じ方法で)ShowWindowを呼び出すようにすればエラーにはなりません。
お礼
ちょっと調べてみたんですが、VBと違って処理を細かく場合わけしてきちんとEndDialogを記述して..とする必要があるんですね。もう少し勉強してから質問することにします。ありがとうございました。
補足
>(なぜ「::」を使うとエラーになるのかを理解するに > は、C++言語の文法規約を学ぶ必要があります。) はい、一通り文法の本を読んでおく必要はあるかもしれません。(^^; VBとかなり違いますね。 > CmyDialog::OnBnClickedOkの中で(既に行っている > のと同じ方法で)ShowWindowを呼び出すようにすれ > ばエラーにはなりません。 VB.netだと、いったん生成したフォームオブジェクトを参照することで、容易にフォームのClose、Showはできるんですが、VC++だと難しいですか? この場合だと、あえてCmyDialog02::OnBnClickedOkの中から一つ目のダイアログを操作したいのですが、どうすればいいんでしょうか。