新的控制按钮不可用';我没有正确的Windows ID 我在C++中有一个窗体应用程序。 我添加了一个新按钮,并将其链接到一个名为changetTitle的函数

新的控制按钮不可用';我没有正确的Windows ID 我在C++中有一个窗体应用程序。 我添加了一个新按钮,并将其链接到一个名为changetTitle的函数,c++,winapi,button,controls,C++,Winapi,Button,Controls,但当我运行应用程序并按下按钮时,它不会调用该函数。 我检查并注意到,当我单击按钮并检查按钮的窗口ID(wmId)时,我将其设置为110(IDM\u CHANGE\u TITLE),其值为1 我不确定是什么问题,可能与资源文件有关 复制: 开放式VisualStudio和 创建新项目Visual C++->Windows桌面应用程序 将其设置为名称WindowsProject1 WindowsProject1.cpp的代码 LRESULT CALLBACK WndProc(HWND, UIN

但当我运行应用程序并按下按钮时,它不会调用该函数。
我检查并注意到,当我单击按钮并检查按钮的窗口ID(
wmId
)时,我将其设置为
110
IDM\u CHANGE\u TITLE
),其值为
1

我不确定是什么问题,可能与资源文件有关

复制:

开放式VisualStudio和 创建新项目
Visual C++
->
Windows桌面应用程序

将其设置为名称
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;
}  
资源的零件代码.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

我解决了。问题是我创建了按钮控件,将
humenu
设置为
1

我把它改成了
#define IDM\u CHANGE\u TITLE 110
,现在它可以工作了。
以下是固定代码:

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

是否确实将窗口ID设置为
IDM\u CHANGE\u TITLE
?我只是在页面中按Ctrl-F键,它总共出现了两次:一个是
\define
,另一个是
case IDM\u CHANGE\u TITLE:
是的,我这样设置
\define IDM\u CHANGE\u TITLE 110
,然后我在
case IDM\u CHANGE\u TITLE:
中使用了它,我遗漏了什么吗?请显示一个。@IInspectable I附加的代码片段。要复制它,您需要创建一个“Windows桌面应用程序”并复制我添加的代码。为什么不创建一个应用程序呢?我们需要查看您的“关于”对话框吗?我们需要看看你们的主菜单吗?我们需要查看您的字符串表条目吗?我们需要一个有各种IDE管理噪音的资源.h吗?所有这些都与问题无关。把它剥到最小限度。