ダイアログボックスが上手く表示されません – プログラミング – Home

ダイアログボックスが上手く表示されませ...
 
通知
すべてクリア

[解決済] ダイアログボックスが上手く表示されません


ひな
 ひな
(@ひな)
ゲスト
結合: 23年前
投稿: 8
Topic starter  

環境)WinXP VS.net Version7.0.9086 VC++ SDK
どうしても分からないバグが出てきたので、どなたか御助力お願いします。

DialogBoxParamを使ってダイアログボックスを作ろうと思ったのですが、
作って見ると表示されるダイアログボックスがボタンやリストボックスなどの、
コントロールのみ見えて、大本のダイアログボックス自体やキャプションバーが
見えない物ができてしまいました。

キャプションバーは見えないだけでなく移動なども機能しなくなっていました。
DialogBoxParamの戻り値は1で、OK/CANCELボタンを押せばきちんと機能して、
ダイアログボックスの終了はできました。

ダイアログボックスのリソースはリソースエディタを使い、
Dialogを挿入 を使った時の初期値のままです。
プロパティをいろいろ弄っても上手くいきませんでした。

長くなるので次にソースを書きます。


引用未解決
トピックタグ
ひな
 ひな
(@ひな)
ゲスト
結合: 23年前
投稿: 8
Topic starter  

↑の続きでこれがソースです。

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

BOOL CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);

extern C int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR CmdLine,
int CmdShow)
{
int a = (int)::DialogBoxParam(hInstance, MAKEINTRESOURCE
(IDD_DIALOG1), NULL, DialogProc, (LPARAM)0);

a = a;
return 0;
}

BOOL CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
return ::EndDialog(hDlg, IDOK);
case IDCANCEL:
return ::EndDialog(hDlg, IDCANCEL);
}

break;

case WM_INITDIALOG:
return TRUE;
}

return TRUE;
}

こんな感じで作りましたがうまくいきません。
どなたかアドバイスお願いいたします。


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

DialogProcの説明には、メッセージを処理したらTRUE、
そうでなければFALSEを返しなさいとありますが。

http://msdn.microsoft.com/library/en-us/winui/WinUI/WindowsUserInterface/Windowing/DialogBoxes/DialogBoxReference/DialogBoxFunctions/DialogProc.asp


返信引用
ひな
 ひな
(@ひな)
ゲスト
結合: 23年前
投稿: 8
Topic starter  

dairygoodsさんありがとうございました。
初歩的なミスですいませんでした・・・。
勝手にTRUEで脳内補完しておりました。
調べてる時も脳内補完を・・・。すいませんでした。

もっと注意深く調べないといけませんでした。
こんなミスで本当に申し訳ありませんでした。そして、ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました