• 締切済み

フォームの再表示について

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++の文法でどう書いていいのかわかりません。 どなたかお教えください。

みんなの回答

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

エラーの直接の原因はShowWindowメソッドの呼び出し指定を「::」で行おうとしている点です。(なぜ「::」を使うとエラーになるのかを理解するには、C++言語の文法規約を学ぶ必要があります。) CmyDialog02::OnBnClickedOkの中でShowWindowを呼び出すかわりに、CmyDialog::OnBnClickedOkの中で(既に行っているのと同じ方法で)ShowWindowを呼び出すようにすればエラーにはなりません。

hibachi
質問者

お礼

ちょっと調べてみたんですが、VBと違って処理を細かく場合わけしてきちんとEndDialogを記述して..とする必要があるんですね。もう少し勉強してから質問することにします。ありがとうございました。

hibachi
質問者

補足

>(なぜ「::」を使うとエラーになるのかを理解するに > は、C++言語の文法規約を学ぶ必要があります。) はい、一通り文法の本を読んでおく必要はあるかもしれません。(^^; VBとかなり違いますね。 > CmyDialog::OnBnClickedOkの中で(既に行っている > のと同じ方法で)ShowWindowを呼び出すようにすれ > ばエラーにはなりません。 VB.netだと、いったん生成したフォームオブジェクトを参照することで、容易にフォームのClose、Showはできるんですが、VC++だと難しいですか? この場合だと、あえてCmyDialog02::OnBnClickedOkの中から一つ目のダイアログを操作したいのですが、どうすればいいんでしょうか。

関連するQ&A

専門家に質問してみよう