掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
モードレスダイアログベース プログラムでタイトルバーに文字を表示するには? (ID:55838)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
いつもいつもすみません(^^; 時間がかかる作業をさせるので、モーダルダイアログでは、フリーズしているように見えてしまうため、モードレスダイアログでアプリを作成しようと考えています。 ビルドも無事終了し、デバッグ起動してみたところ・・・タイトルバーに何も表示されていませんでした。 特別なコントロールは追加しておらず、ダイアログと、OK・キャンセルボタンがあるものを作成し、特に編集もしていません。 ダイアログプロシージャは、モーダルの時と全く同じにしているのですが、そこに問題があるのでしょうか? 念のため、WinMain関数と、DlgProcをいかに書いておきます。 どなたかご教授をお願いいたします。 //グローバル変数の定義 HWND hWnd; HINSTANCE hInst; const char szClassName[]="ClassName"; const char szAppName[]="AppName"; const char szAppVer[]="1.0"; //グローバル関数の定義 //ダイアログプロシージャ LRESULT CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam); //WinMain関数 int APIENTRY WinMain(HINSTANCE hInstCurrent, HINSTANCE hIntePrev, LPTSTR lpszCmdLine, int nCmdShow) { MSG msg; WNDCLASS wndclass; hInst = hInstCurrent; wndclass.style = 0; wndclass.lpfnWndProc = DlgProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = DLGWINDOWEXTRA; wndclass.hInstance = hInst; wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclass.hCursor = LoadCursor(NULL, IDC_ARROW); wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szClassName; if(RegisterClass(&wndclass) == 0) { MessageBox(NULL,"ウインドウクラスを登録できませんでした", szAppName,MB_APPLMODAL | MB_ICONSTOP); return FALSE; } if((hWnd=CreateDialog(hInst,MAKEINTRESOURCE(IDD_MAIN),0,(DLGPROC)DlgProc)) == NULL) { MessageBox(NULL,"メインウインドウを作成できませんでした", szAppName,MB_APPLMODAL | MB_ICONSTOP); return FALSE; } //メインウインドウの表示 ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); //メッセージループ while(GetMessage(&msg, NULL, 0, 0)) { if(IsDialogMessage(hWnd,&msg) == FALSE) { TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; } //ダイアログプロシージャ LRESULT CALLBACK DlgProc(HWND hDlg, UINT uMessage, WPARAM wParam, LPARAM lParam) { RECT rc; switch( uMessage ) { case WM_INITDIALOG: { //中央に表示 GetWindowRect(hDlg, &rc); int w = rc.right-rc.left; int h = rc.bottom-rc.top; int x = (GetSystemMetrics(SM_CXSCREEN)-w)/2; int y = (GetSystemMetrics(SM_CYSCREEN)-h)/2; MoveWindow(hDlg, x, y, w, h, FALSE); } return TRUE; case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: //終了 case IDCANCEL: DestroyWindow(hDlg); break; default: return DefWindowProc(hDlg,uMessage,wParam,lParam); } break; //[X]ボタン case WM_CLOSE: PostMessage(hDlg,WM_COMMAND,IDCANCEL,0); break; //プログラム終了時のウインドウ破棄 case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hDlg,uMessage,wParam,lParam); } return FALSE; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.