アプリ版:「スタンプのみでお礼する」機能のリリースについて

Win32プログラムを作成しています。
ダイアログボックスを表示させる必要が出てきたので、
DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_FORMVIEW) ,hWnd, DlgProc);
と実行したのですが、この関数が失敗し、GetLastError()でエラーを調べたところ"指定されたリソースの種類は、イメージ ファイルに見つかりません。"という内容の1813が返ってきました。
どこが間違い部分なのか見当がつかず、どこの内容を示せばいいのかもわからないので、「何々の部分はどうなっているか」という質問も受けます。
何がまずいのかわかる方、ご教授お願いします。
環境はVC2005Standard, Xp

A 回答 (2件)

★アドバイス


・GetModuleHandle(NULL)
 の代わりに
 GetWindowLongPtr(hWnd,GWL_HINSTANCE)
 を使ってみたらどうなりますか?

HINSTANCE hInst = (HINSTANCE)GetWindowLongPtr(hWnd,GWL_HINSTANCE);

DialogBox( hInst, MAKEINTRESOURCE(IDD_FORMVIEW), hWnd, DlgProc );

試して見て下さい。

この回答への補足

返答ありがとうございます。
試してみましたが、うまく行きませんでした。
Instanceハンドルの値も、同じもののようです。

補足日時:2008/01/01 20:11
    • good
    • 0
この回答へのお礼

うまく行きましたので、解決報告をします。
DllMainの引数hModuleをHINSTANCEにキャストした値と、GetModuleHandle(NULL)で取得した値が違うので、hModuleの方を使用したところ万事うまく行きました。
Oh-Orange様、Wr5様、新年早々ありがとうございました。

お礼日時:2008/01/01 21:06

>DialogBox(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_FORMVIEW) ,hWnd, DlgProc);


>と実行したのですが、この関数が失敗し、GetLastError()でエラーを調べたところ"指定されたリソースの種類は、イメージ ファイルに見つかりません。"という内容の1813が返ってきました。

リソースエディタで、「IDD_FORMVIEW」というIDのついたダイアログボックスのリソースは追加済み…ですよね?
"IDD_FORMVIEW"というIDになっていたりはしないでしょうか?
その場合はMAKEINTRESOURCE()は不要になりますが。

この回答への補足

IDはIDD_FORMVIEWです。"IDD_FORMVIEW"ではないです。
リソースファイルも追加しています。

内容説明が足りなかったので、追加します。
・DLLです。
・プロパティのリンカ/出力ファイルがデフォルトでなく、まったく関係ないディレクトリに設定してあります。

補足日時:2008/01/01 16:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!