03. 资源

Posted nutshelln

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了03. 资源相关的知识,希望对你有一定的参考价值。

一. 资源的命名

资源编辑器中可以将资源的ID命名为字符串,调用时使用:

wndclass.hIcon = LoadIcon(hInstance, TEXT("icon1"));

 

也可以命名为非字符串,调用时使用:

wndclass.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR1));

 

二. 菜单

菜单可以在窗口类中设置,例如:

wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);

 

也可以在CreateWindow时设置,调用LoadMenu函数。

 

三. WM_COMMAND消息

case WM_COMMAND: {
        WORD wFrom = HIWORD(wParam);
        WORD wId = LOWORD(wParam);

        if (wFrom == 0) {//来自菜单
            switch (wId) {
            case IDM_FILE:
                MessageBox(0, TEXT("IDM_FILE"), 0, 0);
                break;
            case IDM_FILE_OPEN:
                MessageBox(0, TEXT("IDM_FILE_OPEN"), 0, 0);
                break;
            case IDM_40001:
                MessageBox(0, TEXT("IDM_40001"), 0, 0);
                break;
            default:
                break;
            }
        }
        else if (wFrom == 1) {//来自加速键
            switch (wId) {
            case IDC_CTRL_A:
                MessageBox(0, TEXT("IDA_CTRL_A"), 0, 0);
                break;
            case IDA_CTRL_SHIFT_B:
                MessageBox(0, TEXT("IDA_CTRL_SHIFT_B"), 0, 0);
                break;
            default:
                break;
            }
        }
        return 0;
}

  

HACCEL hAccel = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDR_ACCELERATOR1));

    MSG msg = {};
    while (GetMessage(&msg, nullptr, 0, 0)) {
        if (!TranslateAccelerator(hWnd,hAccel,&msg)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
            //WndProc(msg.hwnd, msg.message, msg.wParam, msg.lParam); 
        }        
}

  

四. 手动编译链接带资源的程序

cl /c WindowsProject1.cpp

rc WindowsProject1.rc

link /subsystem:windows WindowsProject1.res WindowsProject1.obj user32.lib

以上是关于03. 资源的主要内容,如果未能解决你的问题,请参考以下文章

如何获取当前显示的片段?

如何处理单个活动的多个片段

KDoc:插入代码片段

Android小部件,启动一个片段?

Python 向 Postman 请求代码片段

超级有用的9个PHP代码片段