请问如何实现菜单的中英文切换

laserman 2002-04-28 09:15:45
有一个程序,要实现中英文切换,对话框可以用得到控件句柄的方法修改每个文字,菜单的文字应如何修改,各位大侠帮帮忙,谢谢
...全文
453 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
laserman 2002-04-28
  • 打赏
  • 举报
回复
cxiaobao(风子) 的方法我现在用不着,不过以后可能有用处。hyc1980(学海无涯~~)的方法适合现在的我,两位各给10分,希望别嫌少。谢谢各位
hyc1980 2002-04-28
  • 打赏
  • 举报
回复
HMENU LoadMenu(
HINSTANCE hInstance, // handle to module
LPCTSTR lpMenuName // menu name or resource identifier
);


hmenu1 = LoadMenu(...);
hmenu2 = LoadMenu(...);

if (...)
{
SetMenu(hwnd, hmenu1);
}
else
{
SetMenu(hwnd, hmenu2);
}

--------------
用mfc类库代替也一样
hyc1980 2002-04-28
  • 打赏
  • 举报
回复
两个不同的菜单,利用SetMenu(HWND hwnd, HMENU hmenu)切换
cxiaobao 2002-04-28
  • 打赏
  • 举报
回复
所有的字符串不要写在程序里,把他们放在资源里,然后作成纯资源的dll,中英文各一,比如xxxCHS.dll,xxxEn.dll,用AfxSetResourceHandle()切换。
关于制作纯资源dll:
1。从你的工程里移掉xxx.rc文件。
2。新建一个工程,mfc扩展dll。
3。把新建工程里的所有文件都删掉。(到目录里,把所有文件也删掉)
4。把你的工程里的res目录,和xxx.rc都cut到这个dll工程的目录里。
5。把你工程里的resource.h copy到这个dll工程的目录里。
6。把resource.h和xxx.rc加到你的dll工程里
7。在dll工程里,project->setting...->link,在porject options里加入 /noentry.目的是告诉linker这个dll是纯资源dll。
8。现在分别编译你的两个工程。你原来的工程能编译,但是不能运行,因为资源都找不到了嘛。
9。把编译 出来的dll copy到你的工程目录。
10。在你的工程中,在initinstance中,加入:
HMODULE hLib=LoadLibrary("xxx.dll");//注意路径
AfxSetResourceHandle(hLib);
.....
11.在程序结束时:
FreeLibrary(hLib);

你可以修改这个dll工程,以便产生多个语言的版本。
注意:由于你原来的工程已经没有任何资源,所以在资源管理器里看起来你的程序的图标变成了dos程序的样子,解决方法是在你原来的程序中保留id为IDR_MAINFRAME的icon。



Probe1_0 2002-04-28
  • 打赏
  • 举报
回复
做两种资源菜单, 到时候LoadMenu时调入不同的菜单就可以了
如果只修改单个,你试一下CMenu::ModifyMenu

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧