DEFPUSHBUTTONスタイルをもつプッシュボタンは、そのボタンにフォーカスがないときでも リターンキーで押すことができます。これは他のボタンとは枠線の太さが違うので見分けがつきます。 もしDEFPUSHBUTTONスタイルのボタンが無いときは、IDOKのボタンがその動作をします。(ただし このとき枠線は太くなりません。)
IDCANCELというIDをもつボタンは、ESCキーの押し下げで、押したことになります。というか、ボタンが なくても、ダイアログプロシージャがIDCANCELを処理しているなら、ESCキーを押すとそれが動作します。
また、移動する順番は、ダイアログテンプレートにコントロールを記述した順番なので、 望み通りに動かすには、順番を入れ換える必要があります。
(捕捉。他のコントロールは、フォーカスの移動が目で見てはっきり分かりますが、 リストボックスだけは、ほとんど分かりません。注意を要するところです。)
例
GROUPBOX "ビット数", -1, 125, 48, 68, 23, WS_GROUP CONTROL "8", IDRB8, "Button", BS_AUTORADIOBUTTON, 134, 57, 16, 10 CONTROL "16", IDRB16, "Button", BS_AUTORADIOBUTTON, 162, 57, 21, 10 CONTROL "ステレオ", IDCHK, "Button", BS_AUTOCHECKBOX | WS_TABSTOP| WS_GROUP, 130, 77, 54, 10ここで最後のチェックボックスにWS_GROUPの指定が無いと、矢印キーでラジオボタンからチェックボックスに 移動してしまいます。これは不自然なので、WS_GROUPをつけて防ぎます。 単独のプッシュボタンやチェックボックスには全部WS_GROUPを指定した方が良いと思います。
スクロールバーにフォーカスがあるときは、HOME, END, PageUp, PageDown, 矢印キーが使えます。
リストボックスやコンボボックスもHOME, END, PageUp, PageDown,矢印キーで操作可能です。 コンボボックスのドロップタウンはALT+↓キーです。
なお、"参照(\036B\037サ)"のような書き方は、Windows3.1でコントロールパネル→キーボード→ アクセスキーでアルファベットとカタカナを選択可能なのに対応した書き方ですが、Windows95では この設定が見当たらないようです。
以上をすべて考慮して、前回のダイアログテンプレートを書き直すと、以下のようになります。
dialog DIALOG 6, 18, 199, 118 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "マルチメディアレコーダ" FONT 12, "System" BEGIN LTEXT "ファイル名(\036F\037フ)", -1, 6, 6, 60, 8 EDITTEXT IDEDIT, 46, 4, 96, 12, ES_AUTOHSCROLL PUSHBUTTON "参照(\036B\037サ)", IDBROWSE, 150, 3, 40, 14, WS_GROUP LTEXT "種類(\036T\037シ)", -1, 6, 24, 30, 8 COMBOBOX IDTYPE, 38, 23, 91, 50, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "&Help", IDHELP, 160, 22, 30, 10, WS_GROUP PUSHBUTTON "&About", IDABOUT, 160, 35, 30, 10 GROUPBOX "動作(\036M\037ト)", -1, 8, 39, 50, 49, WS_GROUP CONTROL "記録", IDREC, "Button", BS_AUTORADIOBUTTON, 13, 48, 30, 10 CONTROL "再生", IDPLY, "Button", BS_AUTORADIOBUTTON, 13, 59, 30, 10 CONTROL "コンバート", IDCON, "Button", BS_AUTORADIOBUTTON, 14, 70, 36, 10 LTEXT "周波数(\036R\037ハ)", -1, 68, 45, 47, 8 LISTBOX IDLIST, 68, 56, 48, 33, WS_VSCROLL | WS_TABSTOP GROUPBOX "ビット数(\036I\037ヒ)", -1, 125, 48, 68, 23, WS_GROUP CONTROL "8", IDRB8, "Button", BS_AUTORADIOBUTTON, 134, 57, 16, 10 CONTROL "16", IDRB16, "Button", BS_AUTORADIOBUTTON, 162, 57, 21, 10 CONTROL "ステレオ(\036O\037ス)", IDCHK, "Button", BS_AUTOCHECKBOX | WS_TABSTOP| WS_GROUP, 130, 77, 54, 10 LTEXT "レベル(\036L\037レ)", -1, 5, 97, 29, 8 SCROLLBAR IDSCR, 42, 97, 86, 8, WS_TABSTOP PUSHBUTTON "開始(\036S\037カ)", IDOK, 147, 92, 40, 14, WS_GROUP LTEXT "停止中", IDSTATUS, 2, 108, 200, 8 END
一つ上のページに戻る