- ベストアンサー
CreateDialogについて
CreateDialogをもちいて、表示するダイアログの設定をしています。CreateDialogは、関数が成功するとウィンドウハンドルが返りますが失敗して、NULLが返ってきてしまいます。この失敗について、どのようなことが起こると失敗するか、失敗する理由について教えてください。 実行形式ファイルでは正常でしたが、DLLに移植しようとしてうまくいきません(ダイアログが表示されません)。 コンパイル、リンク時にはこれに関わるメッセージはありませんでしたので、原因究明に困っています。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「ERROR_RESOURCE_NAME_NOT_FOUND」は「リソース名が見つかりません」という意味です。その意味するところは、指定されたリソース名が見つからなかったということです。 すなわち、CreateDialogの第2引数で指定したリソース名に対応するリソースを、CreateFileの第1引数で指定したモジュールからみつけることができなかったということです。 どんな引数を与えているのか、与えた引数は正しいのか、与えた引数に対応するリソースは本当に存在するのか、よく確認してください。
その他の回答 (2)
- macchun
- ベストアンサー率50% (3/6)
おそらく * リソースは EXE から DLL に移植した * CreateDialog() の第一引数に NULL を設定している ではないでしょうか? もしそうだとしたら、CreateDialog() の第一引数を NULL ではなく DLL のインスタンスに変更する必要があります。DLL のインスタンスは DllMain の第一引数をグローバル変数にコピーしたものを使用します。
- xcrOSgS2wY
- ベストアンサー率50% (1006/1985)
いろいろな原因が考えられます。 NULLが返ったとき、エラーの詳細はGetLastError関数で取得できますが、その値ではどんなエラーが発生していることになっていますか? 補足願います。(ERROR_RESOURCE_xxxx_NOT_FOUNDあたりかなーと想像しますが。)
お礼
エラーコードを確認しましたが、「ERROR_RESOURCE_NAME_NOT_FOUND」でした。ただ、どのリソース(CreateDialogの送り値)が良くないのかが解りません。いずれのリソース(Bitmap、DIALOG)も作成されていないということはありません(移植する際、IDがおかしくなった?)。そのあたりを解析する方法はありませんでしょうか?
補足
ありがとうございます。 今日中に確認してみますので、少々お時間をください。