窗口加载菜单错误: "The specified resource name cannot be found in the image file."
Windows LoadMenu error: "The specified resource name cannot be found in the image file."
我正在编写一个程序,除其他外,该程序需要在右键单击时显示上下文菜单。我正在捕获WM_NOTIFY
,正在单击的控件的标识符,然后NM_RCLICK
.这一切都很好用。
当我处理右键单击时出现问题:
case NM_RCLICK:
{
HMENU Popup = LoadMenu(0, MAKEINTRESOURCE(IDR_NED_MENU));
if ( !Popup ) {
DWORD err = GetLastError();
char* buf;
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, err, 0, buf, 1<<19, 0);
_ERROR("LoadMenu(0, MAKEINTRESOURCE(IDR_NED_MENU)); Error '%s' thrown; no menu loaded.", buf);
delete [] buf;
}
Popup = GetSubMenu(Popup, 0);
CheckMenuItem(Popup, 1, MF_CHECKED|MF_BYPOSITION);
POINT Point;
GetCursorPos(&Point);
switch (TrackPopupMenu(Popup, TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RETURNCMD, Point.x, Point.y, 0, GetActiveWindow(), NULL)) {
// ...
首先,LoadMenu(0, MAKEINTRESOURCE(IDR_NED_MENU));
返回NULL
,并且我收到一条错误消息,指出"在图像文件中找不到指定的资源名称"。
现在,IDR_NED_MENU是我在.rc
文件中拥有的菜单的 ID,并且我已在此.cpp
文件中包含了相应的.rc.h
文件。同一.rc
文件中包含的实际对话框窗口 ID 可以完美运行。此代码是从另一个项目中进一步复制和粘贴的,其中 LoadMenu
调用运行良好:不过,我确实从头开始重新创建了IDR_NED_MENU
,并且 ID 有些不同(但它们确实在.rc
文件和具有我粘贴在此处的代码片段的.cpp
文件之间匹配(;最初我不小心在一个单独的.rc
文件中创建了菜单,所以我试图在这里纠正它。我注意到在Visual Studio的资源视图中,对话框包含在对话框文件夹中,而这包含在菜单文件夹中(明智(,但我不确定这有什么区别(如果有的话(。
为什么会出现此错误?为什么找不到IDR_NED_MENU
?
我使用的是Visual Studio 2010,这不是MFC项目。我不确定我应该包括哪些其他相关细节(如果有的话(;在评论中告诉我,我会编辑更新。
谢谢。
要LoadMenu
的第一个参数必须是资源所在的可执行映像的句柄。句柄是您在WinMain
中获得的第一个HINSTANCE
。或者,您可以通过调用 GetModuleHandle(0)
来获取它。
- OpenCV Android C++ imwrite not found
- 赛通"Cannot take address of memoryview slice"
- C++:如何将 unix 时间的字符串转换为 *tm?(使用时间错误:"cannot convert 'String' to 'tm*' ")
- /usr/bin/ld: cannot find -lc++
- 解决"ld: library not found for -ltensorflow_framework.2.3.0"
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常
- 处理"no operator found"
- C++初学者:为什么我的编译器根据我的循环返回"name not found"?
- Cannot find -lglad
- _BitScanForward64 can not be found
- "Cannot find -l<directory>"错误 - CMake
- Windows cannot find MinGW
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- 使用提升 asio 时出现"resolve: Host not found (authoritative)"异常
- "Cannot convert Python object argument to type '<typename>'" - 使用 Cython 包装 C++ 类时出错
- g++ cannot be found
- Microsoft Visual Studio - 'The build tools for v140 cannot be found'
- -lglut32 cannot be found
- visual studio 2012 c++ windows.h cannot be found
- 窗口加载菜单错误: "The specified resource name cannot be found in the image file."