メモ帳を使っていて、私が不満に感じる点がいくつかあります。
なお、印刷機能はサポートしません。これは私が、パソコンは毎日使うくせに、 プリンタは年に一回も使わないという人間だからです。
editdlg DIALOG 6, 18, 200, 120 STYLE WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "簡易テキストエディタ" FONT 12, "System" MENU editmenu BEGIN EDITTEXT IDEDIT, 4, 15, 150, 79, ES_MULTILINE | WS_VSCROLL | ES_WANTRETURN | ES_NOHIDESEL ENDご覧のとおり、エディットコントロールが一個あるだけのダイアログです。 「読み込み」とかのボタンはつけないの? まあ待ってください。 「MENU editmenu」という指定がありますね。これはダイアログにメニューをつけるという指定です。 リソースファイルに、以下のようなメニューテンプレートを作成します。
editmenu MENU BEGIN POPUP "ファイル(\036F\037フ)" BEGIN MENUITEM "新規作成(\036N\037シ)", IDM_NEW MENUITEM "開く(\036O\037ヒ)...", IDM_OPEN MENUITEM "上書き保存(\036S\037セ)", IDM_SAVE MENUITEM "名前をつけて保存(\036A\037ナ)...", IDM_NAME MENUITEM SEPARATOR MENUITEM "終了(\036X\037シ)", IDM_EXIT END POPUP "ヘルプ(\036H\037ヘ)" BEGIN MENUITEM "ヘルプの表示(\036H\037ヘ)...", IDM_HELP MENUITEM "バージョン情報(\036A\037シ)...", IDM_ABOUT END ENDこれで、適当なWinMainとダイアログプロシージャがあれば、 以下のようなダイアログを表示できるはずです。
なお、今回は 前回で予言したように、モードレスダイアログを使います。 また、エディタとしてまともに使用するためには、TABキーでTAB文字が入力できないと困るので、 IsDialogMessage()は呼び出しません。
WM_INITDIALOGとWM_SIZEに応答して
GetClientRect (hDlg, &rc); MoveWindow(GetDlgItem(hDlg, IDEDIT) , 0, 0, rc.right, rc.bottom, TRUE);という処理を実行していますが、これはエディットコントロールのサイズを ダイアログのサイズに合わせています。
未サボートのコマンドを
case IDM_HELP: MessageBox(hDlg, "未サポート","簡易テキストエディタ", MB_OK); break;などどしていますが、これを
default: MessageBox(hDlg, "未サポート","簡易テキストエディタ", MB_OK); break;にしてはいけません。ひどい目にあうこと、うけあいです。
なお、SetWindowText(hDlg, "簡易テキストエディタ:無題");これはダイアログ自体のタイトルバー に表示する文字列の設定です。
これでエディタとしての最低限の恰好は整いました。
一つ上のページに戻る