TabIndex, Hotkeys and Accelerators
Step1:
ここでは、動く TABINDEX を、作ってみましょう。
キーボードの、TABボタンを押すことで、複数のテキスト・ボックス(edtiboxes)と、複数のボタンの選択を切り替えられるように、設定します。
これは、とても簡単です。
移動経路のため、次のコードを挿入します。
(DialogAsMain.tplを使用していると仮定して、Win Main procを見つて下さい。)
' Message loop
Do While GetMessage(@msg,NULL,0,0)
If IsDialogMessage(hWnd,@msg)=0 Then
TranslateMessage(@msg)
DispatchMessage(@msg)
EndIf
Loop
TABINDEX が設定されて、動くはずです。
この事例のコードを、 ここ で、ダウンロードできます。
Step2:
テンプレートとして DialogAsMain.tpl を選択して、新しい Project を作りましょう。
ダイアログ・エディタを開いて、そして、以下のようにして下さい。
この最初の簡単なサンプルは、「Hello」ボタンに、hotkey CTRL+O 設定する方法を示しています。
FbEditが、仕事の大部分をするので、これは簡単です。
ただ、最初に、WinMain の loop に、次のコードを追加する必要があります。
' Message loop
Do While GetMessage(@msg,NULL,0,0)
If TranslateAccelerator(hWnd,hAccel,@msg)=0 Then
TranslateMessage(@msg)
DispatchMessage(@msg)
EndIf
Loop
そして、.biファイルに、以下を加えて下さい。
#Define IDC_BTN1 1001
#Define IDR_ACCEL 2000
そして
Dim Shared hAccel As HACCEL
WM_INITDIALOG に、以下を設置します。
hAccel=LoadAccelerators(hInstance,Cast(ZString Ptr,IDR_ACCEL))
メニューの Hotkey は、これで働くはずです。
「Go」でビルドして、「Run」を押してみて下さい。
ALT + F を押すと、IDM_FILE_MENU が表示され、ALT + H を押すと、IDM_HELP_MENU が表示されるはずです。簡単ですね?
しかし、もっと簡単になります。
FbEditで、.rcファイルを開いて、資源 → Add Acceleratortable. を選択して下さい。
Acceleartortableダイアログで、以下のように設定してみて下さい。
これで、Hotkey CTRL+O は、「Hello」ボタンをクリックしたのと同じ結果になります。
テストとして、次のコードを「Hello」ボタンに置いてみて下さい。
MessageBox(hWin,"Hello",@AppName,MB_OK)
hotkey として、F1 キーを指定したい場合は、Keyで、F1を選択して、他の3個のチェック・ボックスの、どれもチェックをしないでおきます。
この事例のコードを、 ここ で、ダウンロードできます。