新控制按钮没有正确的 Windows ID

New control button doesn't have the correct Windows ID

我有一个 Window C++ 表单应用程序。
我添加了一个新按钮并将其链接到一个名为 ChangeTitle.

的函数

但是当我 运行 应用程序按下按钮时,它不会调用函数。
我检查了一下,发现当我单击按钮并检查按钮的 Window ID (wmId) 时,我将其设置为 110 (IDM_CHANGE_TITLE),它的值为 1.

不知道是什么问题,可能跟资源文件有关?

转载:

打开 Visual Studio 并 创建新项目 Visual C++ -> Windows Desktop Application.
将其设置为名称 WindowsProject1.

代码WindowsProject1.cpp

LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK ChangeTitle(HWND hWnd);

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // Parse the menu selections:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            case IDM_CHANGE_TITLE:
                ChangeTitle(hWnd);
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_CREATE:
        CreateWindowW(L"button", L"Change Title",
            WS_VISIBLE | WS_CHILD,
            20, 50, 95, 25, hWnd, (HMENU)1, (HINSTANCE)ChangeTitle(hWnd), NULL);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// Message handler for about box.
INT_PTR CALLBACK ChangeTitle(HWND hWnd)
{
   SetWindowText(hWnd, L"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");
   return TRUE;
}  

Resource.h

的部分代码
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by WindowsProject1.rc

#define IDM_ABOUT               104
#define IDM_CHANGE_TITLE                110

WindowsProject1.rc

的部分代码
IDC_WINDOWSPROJECT1 MENU
BEGIN
    BEGIN
        MENUITEM "&About ...",           IDM_ABOUT
    END
END

IDC_WINDOWSPROJECT1 ACCELERATORS
BEGIN
    "?",            IDM_ABOUT,              ASCII,  ALT
    "/",            IDM_ABOUT,              ASCII,  ALT
END

我解决了。问题是我创建了 hMenu 设置为 1 的按钮控件。
我将其更改为 #define IDM_CHANGE_TITLE 110,现在可以使用了。
这是固定代码:

CreateWindowW(L"button", L"Change Title",
    WS_VISIBLE | WS_CHILD,
    20, 50, 95, 25, hWnd, (HMENU)IDM_CHANGE_TITLE, NULL, NULL);