dポイントプレゼントキャンペーン実施中!

こんばんは

最近Windowsプログラムでツールを作ることになりまして
久しぶりにダイアログボックスを作成しようとして、いきなり躓きました;;

DialogBox関数でダイアログを表示できないのですが、何か特別な処理って必要でしたっけ?

以下ソースコードです

#include <windows.h>
#include "resource.h"

BOOL CALLBACK DialogProc(HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR lpCmdLine, int nCmdShow )
{
DialogBox(hInstance, MAKEINTRESOURCE("IDD_DIALOG"), NULL, (DLGPROC)DialogProc);
return 0;
}

BOOL CALLBACK DialogProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG: // ダイアログボックスが作成されたとき
return TRUE;

case WM_CLOSE:
EndDialog(hWnd, IDOK);
return TRUE;
}
return FALSE;
}

よろしくお願いします

A 回答 (3件)

MAKEINTRESOURCE("IDD_DIALOG") → MAKEINTRESOURCE(IDD_DIALOG)



IDD_DIALOG はリソースIDなんですよね?

この回答への補足

リソースIDです
ためしに""外してみましたが結果は同じでした

補足日時:2013/06/25 23:02
    • good
    • 0
この回答へのお礼

よく分かりませんが、ダイアログをいったん消して新しく作り直したところ
表示されました

ただ、""をつけて実行したらそれはそれで表示されませんでしたので
直接の原因だったのかはわかりませんが、間違いを見つけていただいたとのことで
ベストアンサーにさせていただきます

原因がよくわからないでちょっと釈然としませんが

質問に回答していただきどうもありがとうございました

お礼日時:2013/06/26 23:49

そのダイアログにはなんかコモンコントロール乗っているんですか?


場合によってはInitCommonControls()やInitCommonControlsEx()が必要ですけど。

この回答への補足

只のダイアログボックスです
コモンコントロールはありません

補足日時:2013/06/25 23:02
    • good
    • 0
この回答へのお礼

よく分かりませんが、ダイアログをいったん消して新しく作り直したところ
表示されました

原因がよくわからないでちょっと釈然としませんが

質問に回答していただきどうもありがとうございました

お礼日時:2013/06/26 23:47

SDKで組んだことないので間違ってたらごめんなさい


>case WM_INITDIALOG: // ダイアログボックスが作成されたとき
>return TRUE;

return FALSE もしくは breakでは?

参考資料    http://7ujm.net/C++/SDKDLG.html

この回答への補足

ためしに両方試してみました
が、やはり結果は変わりませんでした

補足日時:2013/06/25 23:03
    • good
    • 0
この回答へのお礼

よく分かりませんが、ダイアログをいったん消して新しく作り直したところ
表示されました

原因がよくわからないでちょっと釈然としませんが

質問に回答していただきどうもありがとうございました

お礼日時:2013/06/26 23:47

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