最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

MFC:如何為你的程序添加快捷鍵

2023-03-20 00:49 作者:超高校級(jí)的cstdlib  | 我要投稿

第一步:在資源視圖—— .rc 文件里新建 Accelerator

添加資源
新建 Accelerator
默認(rèn)新建的 Accelerator

ID 表示要關(guān)聯(lián)的控件的 ID;

修飾符,見(jiàn)類(lèi)型;

鍵:見(jiàn)類(lèi)型;

類(lèi)型表示是用 VIRTKEY(虛擬鍵碼)還是 ASCII( ASCII 碼)說(shuō)明快捷鍵,此處默認(rèn)為 VIRTKEY。 常見(jiàn)的虛擬鍵碼有 VK_F4(即 F4), VK_RETURN(即 Enter 鍵), VK_ESCAPE(即 Esc 鍵)等,對(duì)于字母鍵和數(shù)字鍵(非小鍵盤(pán)),它們的虛擬鍵碼就是 ASCII 碼。 注意: VIRTKEY 指示的字母須大寫(xiě), ASCII 指示的字母須小寫(xiě)。

第二步:關(guān)聯(lián)控件,并設(shè)置快捷鍵

這里我將 ID 設(shè)置為 IDC_SAVE_BUTTON(我做的關(guān)于文件另存為的 Button),修飾符和鍵分別為 Ctrl 和 S( VIRTKEY 指示的字母須大寫(xiě),再次提醒),類(lèi)型則為 VIRTKEY。

新建的 Accelerator


第三步:添加相關(guān)的代碼

①在控件所在 Dialog 相應(yīng)的頭文件中添加:

HACCEL m_hAccelTable;

添加相關(guān)的代碼

其中 HACCEL 是?Handle?to an?accelerator?table 的縮寫(xiě),即為快捷鍵表句柄。

②在對(duì)話(huà)框相應(yīng)類(lèi)的構(gòu)造函數(shù)中添加:

m_hAccelTable = LoadAccelerators(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_ACCELERATOR));

添加相關(guān)的代碼

winuser.h 標(biāo)頭將 LoadAccelerators 定義為 LoadAcceleratorsA( ANSI 版本)和 LoadAcceleratorsW(?UNICODE 版本)的別名,該別名根據(jù) UNICODE 預(yù)處理器常量的定義自動(dòng)選擇此函數(shù)的 ANSI 或 Unicode 版本。

LoadAcceleratorsA 函數(shù)的語(yǔ)法:

HACCEL LoadAcceleratorsA(

? [in, optional] HINSTANCE hInstance,

? [in] ? ? ? ? ? LPCSTR ? ?lpTableName

);

LoadAcceleratorsW?函數(shù)的語(yǔ)法:

HACCEL LoadAcceleratorsW(

? [in, optional] HINSTANCE hInstance,

? [in] ? ? ? ? ? LPCWSTR ? lpTableName

);

LoadAccelerators?函數(shù)用于加載指定的加速器表。 其中 hInstance 表示模塊的句柄, lpTableName 表示其可執(zhí)行文件包含要加載的加速器表,若要?jiǎng)?chuàng)建此值,需要使用?MAKEINTRESOURCE?宏。

同樣, winuser.h 標(biāo)頭將 MAKEINTRESOURCE?定義為 MAKEINTRESOURCEA(?ANSI?版本)和 MAKEINTRESOURCEW(?UNICODE 版本)的別名。 它的作用是將整數(shù)值轉(zhuǎn)換為與資源管理功能兼容的資源類(lèi)型。 此宏用于代替包含資源名稱(chēng)的字符串。

MAKEINTRESOURCEA 宏的語(yǔ)法:

void MAKEINTRESOURCEA(

? i

);

MAKEINTRESOURCEW 宏的語(yǔ)法:

void?MAKEINTRESOURCEW(

? i

);

其中 i 表示要轉(zhuǎn)換的整數(shù)值。

③選中對(duì)話(huà)框,右鍵選擇類(lèi)向?qū)А?/p>

選擇類(lèi)向?qū)?/figcaption>

選擇添加 PreTranslateMessage 函數(shù)。

添加 PreTranslateMessage 函數(shù)

在添加的?PreTranslateMessage?函數(shù)中添加:

if (TranslateAccelerator(GetSafeHwnd(), m_hAccelTable, pMsg))

{

return TRUE;

}

添加相關(guān)的代碼

你也可以通過(guò)選中對(duì)話(huà)框?qū)?yīng)的類(lèi),在屬性中重寫(xiě)此函數(shù)。

在屬性中重寫(xiě)此函數(shù)

同樣 TranslateAccelerator 也是其?ANSI?版本和其?UNICODE 版本的別名,此函數(shù)用于處理菜單命令的快捷鍵(如果指定了快捷鍵表)則該函數(shù)會(huì)將?WM_KEYDOWN?或?WM_SYSKEYDOWN?消息轉(zhuǎn)換為?WM_COMMAND?或?WM_SYSCOMMAND消息,然后將 WM_COMMAND 或 WM_SYSCOMMAND 消息直接發(fā)送到指定的窗口過(guò)程。 在窗口過(guò)程處理消息之前, TranslateAccelerator?函數(shù)不會(huì)返回。

TranslateAcceleratorA 函數(shù)的語(yǔ)法:

int TranslateAcceleratorA(

? [in] HWND ? hWnd,

? [in] HACCEL hAccTable,

? [in] LPMSG ?lpMsg

);

TranslateAcceleratorW 函數(shù)的語(yǔ)法:

int TranslateAcceleratorW(

? [in] HWND ? hWnd,

? [in] HACCEL hAccTable,

? [in] LPMSG ?lpMsg

);

其中 hWnd 表示要翻譯其消息的窗口的句柄。 其中 hAccTable 表示加速器表的句柄。 加速鍵表必須由對(duì)?LoadAccelerators?函數(shù)的調(diào)用或通過(guò)對(duì)?CreateAcceleratorTable?函數(shù)的調(diào)用創(chuàng)建來(lái)加載。?lpMsg 表示指向?MSG?結(jié)構(gòu)的指針,其中包含使用?GetMessage?或?PeekMessage?函數(shù)從調(diào)用線(xiàn)程的消息隊(duì)列中檢索到的消息信息。

第四步:編譯運(yùn)行

編譯運(yùn)行。

按下 Ctrl + S,彈出了另存為對(duì)話(huà)框,可以正常使用快捷鍵了!

大功告成

大功告成!

第五步:賞個(gè)三連( doge

(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)~~(≧▽≦)

~~(≧▽≦)喜歡的話(huà)就給個(gè)三連吧(≧▽≦)~~

MFC:如何為你的程序添加快捷鍵的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
兴安盟| 建宁县| 淮南市| 昆山市| 广安市| 平顺县| 海原县| 南陵县| 夏邑县| 莲花县| 新野县| 公主岭市| 寻乌县| 桂东县| 慈溪市| 漳平市| 习水县| 天柱县| 巫山县| 汨罗市| 岢岚县| 平江县| 秦皇岛市| 乡城县| 巫溪县| 屯昌县| 正镶白旗| 民勤县| 南昌县| 乌审旗| 长垣县| 册亨县| 资溪县| 瑞安市| 特克斯县| 新沂市| 靖边县| 郓城县| 和政县| 高邑县| 大同市|