HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0403
とあるプログラマドロップダウンメニューにショートカットキーを表示したい4解決


とあるプログラマ

リンク

2019/4/3(Wed) 18:08:18|NO.87043

タイトル通りなのですが、CreatePopupMenuとAppendMenuで作成したメニューバーにAlt+F4やCtrl+Sのようなショートカットキーを設定(もしくは表示)したいです。
C#にはopenMenuItem.ShortcutKeysという関数があるようですが、C++の関数は見つけられませんでした。それともショートカットキーの表示はCreatePopupMenu系とは別の関数を使うのでしょうか。



この記事に返信する


kanamaru

リンク

2019/4/3(Wed) 18:53:02|NO.87044

以下のようにメニュー文字列のアルファベットの前に&を付けると
Alt+そのアルファベットでメニューを選択できるようにできます。
メニューに&は表示されません。

#include "user32.as" #define ctype LOWORD(%1) (%1 & $FFFF) ; 項目ID #enum IDM_XXX = 1 #enum IDM_YYY #enum IDM_ZZZ #enum IDM_BBB #enum IDM_CCC #enum IDM_KOUMOKU1 #enum IDM_KOUMOKU2 ; WM_COMMANDメッセージ oncmd gosub *command, $111 CreatePopupMenu hMenu.1 = stat AppendMenu hMenu.1, 0, IDM_KOUMOKU1, "項目1" AppendMenu hMenu.1, 0, IDM_KOUMOKU2, "項目2" AppendMenu hMenu.1, $800, 0, "" // 第2パラ$800は区切り線 AppendMenu hMenu.1, 0, IDM_EXIT, "終了" ; <メインのメニューバー> CreateMenu hMenu.0 = stat AppendMenu hMenu.0, $10, 0, "&A" AppendMenu hMenu.0, $10, 1, "&B" AppendMenu hMenu.0, $10, 2, "&C" ; ウィンドウにメニューを付ける SetMenu hwnd, hMenu.0 DrawMenuBar hwnd stop // WM_COMMANDメッセージ *command ; メニューからのウィンドウメッセージ if lparam = 0 { ; wparamの下位ワードにメニュー項目ID wID = LOWORD(wparam) if(wID==0):dialog "A" if(wID==1):dialog "B" if(wID==2):dialog "C" return } return
また、Altを押すと&の後ろのアルファベットに下線が付きます。
これではだめでしょうか?
shiftやCtrlなどをショートカットにしたい場合は言ってください。



とあるプログラマ

リンク

2019/4/3(Wed) 21:18:28|NO.87045

>>kanamaruさん
すみません、説明不足でした。そのようにAltで選択できる方法はすでに知っているのですが、最近のソフト(ブラウザやメモ帳など)の「上書き保存(S)  Ctrl+S」のように右寄せでショートカットキーを表示したいのです。



nori

リンク

2019/4/3(Wed) 22:46:21|NO.87049

表示だけなら
"上書き保存(&S)\tCtrl+S"



とあるプログラマ

リンク

2019/4/3(Wed) 23:51:10|NO.87050

>>noriさん
まさかタブで右端に寄せれるとは…!
なんかすごくあっけない方法で解決してしまいました笑。kanamaruさんもわざわざ長いコードありがとうございます。



ONION software Copyright 1997-2023(c) All rights reserved.