新的控制按钮不可用';我没有正确的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吗?所有这些都与问题无关。把它剥到最小限度。