■ SDK モーダルダイアログのテンプレート

他ウィンドウからダイアログを表示させた場合モーダルとなります

ダイアログのリソースを挿入してください。
VC6 リソースの追加方法
後は、このコードを使用するだけでダイアログベースでアプリケーションが作成できます。
TABSTOPも自動的に動作します
#include <windows.h>
#include "resource.h"

BOOL CALLBACK DlgProc(HWND,UINT,WPARAM,LPARAM);

int WINAPI WinMain(HINSTANCE hCurInst,HINSTANCE hPrevInst,
					LPSTR lpsCmdLine,int nCmdShow ){

	DialogBox(hCurInst,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DlgProc);
	//他のウインドウからダイアログを表示する場合は、
	//モーダルにする場合は第3引数をNULLから親のWHNDを渡すように変更する
	//WHNDを渡さない場合、モードレスになるがダイアログを開いている間、親ウィンドウでTABSTOPなどが動作しない
	return 0;
}

//ダイアログプロシージャー
BOOL CALLBACK DlgProc(HWND hDlg,UINT msg,WPARAM wp,LPARAM lp){
	switch (msg){
		case WM_SHOWWINDOW:
//			SetTimer(hDlg,1000,500,NULL);//ID:1000 500msのタイマーを作成
			break;
		case WM_PAINT:
			break;
		case WM_TIMER:
//			if(wp == 1000){
//				OutputDebugString("a");//デバッグ出力
//			}
			break;
		case WM_COMMAND:
//			switch (LOWORD(wp)){
//				case IDC_BUTTON1:
//					OutputDebugString("button1");//デバッグ出力
//					SetWindowText(GetDlgItem(hDlg,IDC_EDIT1),"button1");//ダイアログに貼り付けたテキストに文字を入れる
//					break;
//				case IDC_BUTTON2:
//					OutputDebugString("button2");//デバッグ出力
//					SetWindowText(GetDlgItem(hDlg,IDC_EDIT1),"button2");//ダイアログに貼り付けたテキストに文字を入れる
//					break;
//			}
			break;
		case WM_CLOSE:
//			KillTimer(hDlg,1000);//タイマーを破棄
			EndDialog(hDlg,WM_CLOSE);
		break;
	}
	return FALSE;
}


▲トップページ > Windows と C++