こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

DialogBox

こんばんは

最近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;
}

よろしくお願いします

投稿日時 - 2013-06-25 00:33:22

QNo.8148603

困ってます

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

MAKEINTRESOURCE("IDD_DIALOG") → MAKEINTRESOURCE(IDD_DIALOG)

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

投稿日時 - 2013-06-25 22:09:13

補足

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

投稿日時 - 2013-06-25 23:02:00

お礼

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

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

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

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

投稿日時 - 2013-06-26 23:49:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

Wr5

そのダイアログにはなんかコモンコントロール乗っているんですか?
場合によってはInitCommonControls()やInitCommonControlsEx()が必要ですけど。

投稿日時 - 2013-06-25 08:21:59

補足

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

投稿日時 - 2013-06-25 23:02:42

お礼

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

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

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

投稿日時 - 2013-06-26 23:47:23

ANo.1

SDKで組んだことないので間違ってたらごめんなさい
>case WM_INITDIALOG: // ダイアログボックスが作成されたとき
>return TRUE;

return FALSE もしくは breakでは?

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

投稿日時 - 2013-06-25 02:45:32

補足

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

投稿日時 - 2013-06-25 23:03:23

お礼

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

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

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

投稿日時 - 2013-06-26 23:47:40

あなたにオススメの質問