• ベストアンサー

CreateDialogについて

CreateDialogをもちいて、表示するダイアログの設定をしています。CreateDialogは、関数が成功するとウィンドウハンドルが返りますが失敗して、NULLが返ってきてしまいます。この失敗について、どのようなことが起こると失敗するか、失敗する理由について教えてください。 実行形式ファイルでは正常でしたが、DLLに移植しようとしてうまくいきません(ダイアログが表示されません)。 コンパイル、リンク時にはこれに関わるメッセージはありませんでしたので、原因究明に困っています。 よろしくお願い致します。

質問者が選んだベストアンサー

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

「ERROR_RESOURCE_NAME_NOT_FOUND」は「リソース名が見つかりません」という意味です。その意味するところは、指定されたリソース名が見つからなかったということです。 すなわち、CreateDialogの第2引数で指定したリソース名に対応するリソースを、CreateFileの第1引数で指定したモジュールからみつけることができなかったということです。 どんな引数を与えているのか、与えた引数は正しいのか、与えた引数に対応するリソースは本当に存在するのか、よく確認してください。

その他の回答 (2)

  • macchun
  • ベストアンサー率50% (3/6)
回答No.3

おそらく * リソースは EXE から DLL に移植した * CreateDialog() の第一引数に NULL を設定している ではないでしょうか? もしそうだとしたら、CreateDialog() の第一引数を NULL ではなく DLL のインスタンスに変更する必要があります。DLL のインスタンスは DllMain の第一引数をグローバル変数にコピーしたものを使用します。

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

いろいろな原因が考えられます。 NULLが返ったとき、エラーの詳細はGetLastError関数で取得できますが、その値ではどんなエラーが発生していることになっていますか? 補足願います。(ERROR_RESOURCE_xxxx_NOT_FOUNDあたりかなーと想像しますが。)

R360
質問者

お礼

エラーコードを確認しましたが、「ERROR_RESOURCE_NAME_NOT_FOUND」でした。ただ、どのリソース(CreateDialogの送り値)が良くないのかが解りません。いずれのリソース(Bitmap、DIALOG)も作成されていないということはありません(移植する際、IDがおかしくなった?)。そのあたりを解析する方法はありませんでしょうか?

R360
質問者

補足

ありがとうございます。 今日中に確認してみますので、少々お時間をください。

関連するQ&A