gpt4 book ai didi

c - 如何使用 `FindResourceEx()` 和 `LoadResource()` 加载新菜单?

转载 作者:可可西里 更新时间:2023-11-01 11:16:21 26 4
gpt4 key购买 nike

我正在使用 Windows API 用 C 语言开发多语言 Win32 程序。它将允许用户选择界面的语言。根据MSDN documentation , 我需要使用 FindResourceEx() + LoadResource()并且不是不可靠的SetThreadLocale() .

我的问题是:我不知道如何从资源中加载菜单。

考虑到下面的示例代码,应该如何修改它来加载和更新菜单?

HMENU hMenu = GetMenu(hWnd);
SetMenu(hWnd, NULL);
DestroyMenu(hMenu);

HRSRC rcMenu = FindResourceEx(NULL, RT_MENU, MAKEINTRESOURCE(IDM_MENU),
MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA));

hMenu = LoadResource(NULL, rcMenu); /* ??? HGLOBAL used as a HANDLE? */
SetMenu(hWnd, hMenu);

最佳答案

命令中建议的替代解决方案(每种语言的单独 DLL 资源文件)是一个不错的选择,我们自己也使用了一个。但是要回答你的问题:

LoadMenuIndirect() 函数允许您从资源模板创建菜单(用户对象)。它是从资源中加载的模板。

例如(没有错误检查),

HRSRC hRes = FindResourceEx(NULL, RT_MENU, MAKEINTRESOURCE(IDM_MENU),
MAKELANGID(LANG_AFRIKAANS, SUBLANG_AFRIKAANS_SOUTH_AFRICA));
HGLOBAL hGlob = LoadResource(NULL, hRes);
LPVOID pData = LockResource(hGlob);

// create the menu
HMENU hMenu = LoadMenuIndirect((MENUTEMPLATE*)pData);

关于c - 如何使用 `FindResourceEx()` 和 `LoadResource()` 加载新菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41624655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com