VC++快捷键的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_25923849/article/details/72794900
WINUSERAPI
HACCEL
WINAPI
LoadAcceleratorsA(
    __in_opt HINSTANCE hInstance,
    __in LPCSTR lpTableName);
WINUSERAPI
HACCEL
WINAPI
LoadAcceleratorsW(
    __in_opt HINSTANCE hInstance,
    __in LPCWSTR lpTableName);
#ifdef UNICODE
#define LoadAccelerators LoadAcceleratorsW
#else
#define LoadAccelerators LoadAcceleratorsA
#endif // !UNICODE

hInstance是应用程序实例句柄,用来从程序的资源文件里查找到快捷键定义。
lpTableName是快捷键的定义表格。

MSG msg;
    HACCEL hAccelTable;


    // 初始化全局字符串
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_WIN32PROJECT1, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);

    // 执行应用程序初始化: 
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }

    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_WIN32PROJECT1));

    // 主消息循环: 
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return (int) msg.wParam;

WIN32示例程序,其中编写快捷键有三个步骤:
(1)在键表中加入对应关系,ID对应键值
(2)在程序中编写响应函数
(3)在相应的消息响应机制中调用响应函数

最后,注意 MAKEINTRESOURCE(int) 这是一个宏,以INT值为索引去找资源文件中的定义。

猜你喜欢

转载自blog.csdn.net/sinat_25923849/article/details/72794900
今日推荐