CommonControl





CommonDialog を利用する( 共通の Dialog )


DESC Windows95 から追加されたプリセットのコントロール( GUI部品 )のこと OPENFILENAME work set GetOpenFileName(); TrackBar ProgressBar CreateWindow(), 専用の作成 API でつくる Event の通知は WM_NOTIFY でされる WARNING Resource として記述できない DEP commctrl.h // DLL を呼ぶための ImportLibrary comctl32.lib // 実装のある場所 comctl32.dll
if ( msg == WM_CREATE ) { INITCOMMONCONTROLSEX cc; cc.dwSize = sizeof( INITCOMMONCONTROLSEX ); cc.dwICC = ICC_DATE_CLASSES; // Common Control DLL の初期化 InitCommonControlsEx( &cc ); // TB_ }
MyDialog DIALOG 300, 300, 200, 200 CAPTION "タイトル" FONT 9, "MS UI Gothic" { // デフォルトボタン DEFPUSHBUTTON "ボタンを押してね", 101, 10, 10, 100, 20, WS_GROUP EDITTEXT 102, 95, 56, 30, 11, ES_NUMBER // カレンダー コントロール CONTROL "", 1072, "SysMonthCal32", MCS_NOTODAY | MCS_NOTODAYCIRCLE | WS_TABSTOP, 10, 50, 117, 89 }



InitCommonControlsEx


SYNTAX BOOL InitCommonControlsEx( LPINITCOMMONCONTROLSEX lpInitCtrls // 登録対象のクラスの情報 ); DESC コモンコントロールのダイナミックリンクライブラリ(DLL)に含まれている 特定のコモンコントロールクラスを登録する WARNING InitCommonControlsEx() を呼び出すたびに、その効果は累積する
ICC_UPDOWN_CLASSフラグを指定して InitCommonControlsEx 関数を呼び出し 次に ICC_HOTKEY_CLASSフラグを指定してこの関数を呼び出すと アップダウンとホットキーの各コモンコントロールクラスが登録され アプリケーションから利用できるようになる。



ファイルダイアログ


SYNTAX GetOpenFileName( OPENFILENAME *on ); GetSaveFileName( OPENFILENAME *on ); RET !0 : SUCCESS 0 : ERROR | Cancel | Close | Buffer が小さすぎる. DESC [ファイルを開く]ダイアログボックスを作成する。 OPENFILENAME にパラメータをセットして利用する 構造体は memset で 0 にしておくのが無難。
// WARNING : init "" しないと ERROR char str[ NAME_SIZE ] = ""; OPENFILENAME fn; memset( &fn, 0, sizeof(OPENFILENAME) ); fn.lStructSize = sizeof( OPENFILENAME ); // ParentWindow <-> Edit でいい // なくても OK fn.hwndOwner = HWND_DESKTOP; // Filter 文字列 // 区切り文字[\0] : [\0\0] 終了マーク fn.lpstrFilter = "Text files {* .txt}\0*.txt\0" "HTML files {*.htm}\0*.htm;*.html\0" "All files {*.*}\0*.*\0\0"; // うけとる File 名( Path つき ) sz 指定 fn.lpstrFile = str; fn.nMaxFile = NAME_SIZE; // タイトル名と大きさ fn.lpstrTitle = TEXT("タイトル 自分で開く"); fn.nMaxFileTitle = NAME_SIZE; // FILE は存在しないといけない fn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; // Default 拡張子( 必須ではない ) fn.lpstrDefExt = TEXT("txt"); // == 0 で Cancell if ( GetOpenFileName( &fn ) == 0 ) return 0; else { // File の FullPath がかえる MessageBox( NULL, str, str, MB_OK ); }



GetFileInformationByHandle