LboxDlg

  背景色の変更



背景色を変更するには、「ブラシ」が必要です。まずブラシを作成します

  
Dlg->CreateSolidBrush( 0, 128, 0 );
  

引数は、red green blue を 0 〜 255 の間でそれぞれ指定します

次に、WM_CTLCOLORDLG メッセージを追加して以下のように記述します

  
case WM_CTLCOLORDLG:
	return (LRESULT)Dlg->hSolidBrush;
  

記述場所は、WM_INITDIALOG の次あたりで良いでしょう



  ステータスバーの実装



メインウインドウと違って、ウインドウのサイズ変更は通常行なわないので、WM_INITDIALOG で以下のように記述するだけです

  
Dlg->StatusCreate( ID_DLGSTATUS );
  

ID_DLGSTATUS はアプリケーション内で一意な値を割り当てておきます。
例えば以下のように定義すると良いでしょう

  
#define ID_DLGSTATUS LBOX_ID_BASE + 1
  

ステータスバーへの文字列の表示は以下のように記述します

  
Dlg->StatusSetText( "ダイアログテスト" );
  

フォーマットした文字列を直接設定するには StatusPrintf メソッドを使用します

  
Dlg->StatusPrintf( "ダイアログのハンドル=%08X", (int)hDlg );
  




  表示位置・情報を記憶する

表示位置を初期化ファイルに記憶させ、次回表示時に位置を復帰します。初期化ファイルは、LboxInifile オブジェクトでアクセスします

  
DlgIni = new LboxInifile();
  

データ復帰の記述位置は、WM_INITDIALOG で行い。ダイアログを終了する時に保存します

  
Dlg->RestorePositonAndSize( "Dialog", DlgIni );
  

  
Dlg->SavePositonAndSize( "Dialog", DlgIni );
  

同様に、エディトコントロールに入力したデータを保存して復帰するには以下のように記述します

  
復帰
DlgIni->GetString( "SaveData", "Edit1", "", szBuffer, sizeof( szBuffer ) );
Dlg->EditSetText( IDC_EDIT1, szBuffer );

保存
Dlg->EditGetText( IDC_EDIT1, szBuffer, sizeof( szBuffer ) );
DlgIni->WriteString( "SaveData", "Edit1", szBuffer ); 
  





  エクスプローラからドラッグドロップを受け付ける

ダイアログボックスがドラッグドロップを受け付けるようにするには以下のように記述します

  
Dlg->DragAccept( true );
  

ドラッグドロップした結果は、リストボックスに設定します

  
case WM_DROPFILES:
	Dlg->DragQuery( GetDlgItem( hDlg, IDC_LIST1 ), wParam );
	return 0;
  





  最小化できるダイアログを作成するには

ダイアログのプロパティのスタイルで、「システムメニュー」をオフにして、WM_INITDIALOG で以下の記述を行なって下さい

  
Dlg->ChangeStyle( WS_MINIMIZEBOX | WS_SYSMENU , 0 );
Dlg->ChangeExStyle( WS_EX_APPWINDOW, 0 );
  


さらに、ダイアログを最小化した時にメインウインドウも非表示にするには以下のような記述を追加します

  
case WM_SIZE:
	if ( (DWORD)wParam == SIZE_MINIMIZED ) {
		Win->Hide( );
	}
	if ( (DWORD)wParam == SIZE_RESTORED ) {
		Win->Show( );
	}
	break;
  


さらに、WS_SIZEBOX も追加するとダイアログはサイズ変更も可能になります。
但しステータスバーを実装している場合はその対応が必要になります
※ Dlg->StatusFit( wParam, lParam );

Dlg->ChangeStyle( WS_MINIMIZEBOX | WS_SYSMENU | WS_SIZEBOX | WS_MAXIMIZEBOX, 0 );
Dlg->ChangeExStyle( WS_EX_APPWINDOW, 0 );

で、ほぼ通常ウインドウと同じになります











  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ