我必須創建一個頁面使用visual studio c + +不同的菜單有快捷鍵(關鍵加速器)。快捷方式應該像我們在Windows記事本中的方式例如。(alt + f for文件,alt + e編輯)等。我想知道如何實現我自己的頁面中的菜單項我自己的Alt鍵快捷鍵。請幫助。用戶定義的頁面菜單的Windows快捷方式
0
A
回答
0
首先,您需要在資源文件(* .rc)中定義ACCELERATORS資源。 MSDN docs給出了加速器表的這個例子。
1 ACCELERATORS
{
"^C", IDDCLEAR ; control C
"K", IDDCLEAR ; shift K
"k", IDDELLIPSE, ALT ; alt k
98, IDDRECT, ASCII ; b
66, IDDSTAR, ASCII ; B (shift b)
"g", IDDRECT ; g
"G", IDDSTAR ; G (shift G)
VK_F1, IDDCLEAR, VIRTKEY ; F1
VK_F1, IDDSTAR, CONTROL, VIRTKEY ; control F1
VK_F1, IDDELLIPSE, SHIFT, VIRTKEY ; shift F1
VK_F1, IDDRECT, ALT, VIRTKEY ; alt F1
VK_F2, IDDCLEAR, ALT, SHIFT, VIRTKEY ; alt shift F2
VK_F2, IDDSTAR, CONTROL, SHIFT, VIRTKEY ; ctrl shift F2
VK_F2, IDDRECT, ALT, CONTROL, VIRTKEY ; alt control F2
}
你會編譯資源文件(RC,微軟的資源編譯器)和鏈接即可* .RES與您的應用程序文件。
接下來,在您的WinMain
中,用您的資源表的標識符呼叫LoadAccelerators
(請參閱MSDN的語法),以便應用程序有權訪問它。對於上面的表格中,你可以做
HACCEL hAccel = LoadAccelerators(hInstance, 1);
其中hInstance
是應用程序的HINSTANCE
,和1
是表的標識符。
最後,在消息循環中調用TranslateAccelerator
(同樣請參閱MSDN的語法),以便在GetMessage
之後能夠處理加速器消息。同樣,在這個例子中,你可以做
TranslateAccelerator(hwnd, hAccel, &msg);
其中hwnd
是你的主窗口的HWND
和msg
是你的主窗口中定義的MSG
結構。
如果你做這一切正確,你的應用程序收到通過每當加速器事件發生WM_COMMAND消息,該消息的wParam
領域將包含被觸發(在IDD*
常數的例子中的關鍵事件的標識符表)。
相關問題
- 1. 菜單快捷方式
- 2. 菜單項快捷方式
- 3. Windows窗體中的菜單快捷方式和MDI
- 4. Flash自定義右鍵快捷菜單
- 5. Windows窗體桌面快捷方式
- 6. 的JavaScript - 快捷方式,它被定義
- 7. Atom:PHP定義的快捷方式
- 8. 在windows開始菜單中創建快捷方式
- 9. 綁定簡單addeventlistener的快捷方式
- 10. VB.NET Winforms菜單項快捷方式覆蓋默認快捷方式?
- 11. Windows(.lnk)快捷方式API?
- 12. 不同用戶的Nsis快捷方式
- 13. 如何向所有用戶可用的'SendTo'菜單添加快捷方式
- 14. 添加快捷方式到應用程序的菜單
- 15. Default Vs自定義快捷方式
- 16. 自定義Mathematica快捷方式
- 17. 在IntelliJ中「新分支」彈出式菜單的快捷方式
- 18. 在C中定義的Windows快捷鍵++
- 19. 可選用戶的桌面快捷方式的問題
- 20. NSIS - 適用於所有用戶的桌面快捷方式
- 21. 創建自定義快捷菜單窗口(WinAPI的)
- 22. 通過GPO的桌面快捷方式
- 23. NSIS - 開始菜單左側的快捷方式
- 24. 如何覆蓋Visual Studio的菜單加速器快捷方式?
- 25. 菜單中的自動刪除快捷方式
- 26. Netbeans中的上下文菜單快捷方式
- 27. NSIS CreateShortCut:開始菜單上的快捷方式以便
- 28. 如何使用快捷方式自動打開菜單?
- 29. 如何使用快捷方式彈出菜單欄?
- 30. Windows 7沒有桌面圖標上的快捷方式標籤
任何鏈接,如果你們都可以提供? – user1335919 2012-04-16 10:22:12