トップページ > 過去ログ > 記事閲覧
ダイアログボックス
名前:初心者 日時: 2007/05/07 22:42

チェックボックスやラジオボタンを表示するダイアログボックスを作成したいのですが、どうすればいいのかわかりません。 いろいろと調べてみたのですが、調べ方が悪いのか、 まったく作り方のかいたものが見つかりませんでした。 ご教授よろしくお願いいたします。

Page: 1 |

Re: ダイアログボックス ( No.1 )
名前:wiz 日時:2007/05/08 11:35

CreateWindow関数とBS_CHECKBOX、BS_RADIOBUTTON などで調べると幸せに成れるかも知れません。
Re: ダイアログボックス ( No.2 )
名前:初心者 日時:2007/05/09 19:08

wiz様、ありがとうございます。早速調べてみたのですが、子ウィンドウは出すことはできたものの、子ウィンドウを移動することがまったくできません。 プログラムは、 #include "DxLib.h" HWND hwnd; HWND hWnd; // WinMain関数 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { //ウィンドウモードにする ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() == -1 ) return -1 ; //絵画する画面の設定 SetDrawScreen( DX_SCREEN_BACK ) ; //子ウィンドウの設定 hWnd = GetMainWindowHandle(); hwnd = CreateWindowEx(WS_EX_TOOLWINDOW , TEXT("STATIC") , TEXT("Kitty on your lap") , WS_OVERLAPPEDWINDOW, 100 , 100 , 200 , 200 , hWnd , NULL , hInstance , NULL ); if (hwnd == NULL) return 0; //メインループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ){ Sleep(1); ClsDrawScreen() ; //子ウィンドウの作成 ShowWindow(hwnd , SW_SHOW); ScreenFlip(); } //Dxライブラリの終了 DxLib_End() ; //ソフトの終了 return 0 ; } こんな感じです。質問ばかりですみません。
Re: ダイアログボックス ( No.3 )
名前:meigin 日時:2007/05/09 19:49

子ウインドウ設定の前に // GDIを有効にする SetUseGDIFlag( TRUE ); を追加して、子ウインドウを閉じたら // GDIを無効にする SetUseGDIFlag( FALSE ); とすると良いと聞いた事があるような気がします。 間違っていたら申し訳ないです。 試してみて下さい。
Re: ダイアログボックス ( No.4 )
名前:meigin 日時:2007/05/09 20:39

ごめんなさい 子ウインドウ設定ではなく 子ウインドウ作成の前です。 書き間違えです
Re: ダイアログボックス ( No.5 )
名前:GPGA 日時:2007/05/09 20:39

ウインドウの移動は通常 MoveWindow関数やSetWindowPos関数で行うことができます。 子ウインドウを動かすということをやったことが無いので、できるかどうかわかりませんが これらの関数にはウインドウハンドルを第一引数にしていするので、たぶんできると思われます。
Re: ダイアログボックス ( No.6 )
名前:wiz 日時:2007/05/10 13:15

とりあえず、ソースコードの突っ込みを。 >HWND hwnd; >HWND hWnd; 変数名は分かりやすくしたほうが良いです。 HWND hMainWnd; HWND hToolWnd; など > if (hwnd == NULL) return 0; ここでリターンするとDxLib_Endが呼ばれません。 >//子ウィンドウの作成 >ShowWindow(hwnd , SW_SHOW); この関数はウィンドウの表示モードを設定する関数なので 毎回呼び出す必要はありません。 ループ前にでも呼んでおけば良いでしょう 本題です。 子ウィンドウを移動することがまったくできないとの事ですが 作成した子ウィンドウに対するメッセージが処理されていないのでは無いでしょうか? #DxLibのSetHookWinProc関数でプロシージャを登録して処理するなど。
Re: ダイアログボックス ( No.7 )
名前:初心者 日時:2007/05/12 15:26

wiz様、meigin様、GPGA様、回答ありがとうございます。上記の方法を試してみたところ、 無事ウィンドウを移動させることができました。 ありがとうございました!!

Page: 1 |