メインウインドウのないプログラム上で、条件に応じてダイアログボックスを出すには?

解決


どら  2005-02-16 00:37:34  No: 56428

あるプログラム(VC7、WinXPPro)で

int APIENTRY WinMain(HINSTANCE hInst・・・・)
{
  //ここに独自のクラス内の関数を実行させます。
  return0;
}

というプログラムを作っています(かなりはしょってごめんなさい・・・)
この独自クラスは、別ソースにかかれていて、必要なヘッダなどはすべてインクルードしています。

この独自クラス内の関数において、ある条件になったときだけダイアログボックスを出そうと思っています。

WinMain関数では、CreateWindowや、CreateDialogのように、ウインドウやダイアログを表示させる命令は出していません。

この状態で、WinMain内において

Class.Kansu(hInst);

という命令を出しているとします。
この時独自クラスClassの表記では

Class::Kansu(HINSTANCE hInst)
{
  //各処理
  //条件で
  if(ある条件)
  {
     DialogBox(hInst, (LPCSTR)ダイアログのリソース名, NULL, (DLGPROC)Proc);
  }
}

HRESULT CALLBACK Class::Proc(HWND, hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
   ダイアログの各種処理
}

といった形で作っています(もちろん、リソース関係は問題ありません)。
この状態でコンパイルすると

「overloaded-function から DLGPROCに変換できません」

というエラーがでてきます。
通常モーダルダイアログをWinMain関数内で呼び出す場合と何か違いがあるのでしょうか?

何がいけないのかわからず、混乱しています。
かなり漠然とした記述で申し訳ありませんが、情報や「ここはどうなってる?」といったアドバイス等をいただければと思っています。

最近わけのわからない質問ばかりですみません。
よろしくお願いします・・・


どら  2005-02-16 00:53:07  No: 56429

すんません。
Class内でプロシジャ(Callback関数)を宣言してる時点で問題ありありですね(^^;
すみません、お騒がせしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加