EVC对话框的中文支持 wcebar.cpp ceappwzchs.dll MFC

本文介绍了解决EVC在Windows CE 5.0环境下不支持中文的问题,并提供了解决方案,包括如何设置工程资源为中文及解决编译和运行时可能遇到的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要用EVC在wince5.0下做一个控制界面,发现EVC不支持中文,建工程师竟然没有中文选项,默认竟然是德语!

解决方法:

1)

2)

需要注意的是:工程的所有资源都得设为中文,原因应该是使用了混合资源文件,必须删除所有原英文资源文件再重新加入中文资源,如果是在原英文资源基础上加入了中文资源,然后再存盘的话,资源文件(   .rc   )同时定义两种语言这样就会出现乱码。我的实践得来的没时间去细究了,全改了就是。

 

 

有人说ceappwzchs.dll 中文库加上就行,这个我没有找到,比照其他文件自己写一个应该是行得通的。不过现在自己的项目都完成不了顾不上搞他了。

还有如果编译通过执行时遇到错误:Assertion Failed! wcebar.cpp, Line 723

网上解决方案如下:

 

 

最近写个PPC的MFC程序,在Debug模式下,编译没有问题,但是运行的时候就会出现题目中的错误。但是,在Release模式下,却没有问题。
用google搜索下,找到别人也有类似的错误,也提供了方法:看MFC的源代码--wcebar.cpp文件:
645   HMENU hMenu = ::LoadMenu(hInst, lpszMenuName);
646  ASSERT((hMenu != NULL) && ::WCE_FCTN(IsMenu)(hMenu));
语句是在CMenu* CCeCommandBar::InsertMenuBar(LPCTSTR lpszMenuName, int nButton /*= CMDBAR_END*/)函数中。
看了后,恍然大悟,难怪在Release模式下,没有出错——因为宏ASSERT只在Debug模式下起作用。
于是问题可以定位于自己程序中的lpszMenuName是空的问题了。
回到自己的程序中,找到如下的语句:
 if(!m_wndCommandBar.Create(this) ||
   // !m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME) ||
    !m_wndCommandBar.AddAdornments() ||
    !m_wndCommandBar.LoadToolBar(IDR_MAINFRAME)  ||
  !m_wndCommandBar.SendMessage(TB_SETTOOLTIPS, (WPARAM)(3), (LPARAM)(m_ToolTipsTable)))
 {
       TRACE0("Failed to create CommandBar/n");
      return -1;      // fail to create
 }

语句在函数int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)中,
原来,是MFC向导自动生成的程序,但是我在后面的开发过程中,将菜单项删除了,但是没有将上面的 !m_wndCommandBar.InsertMenuBar(IDR_MAINFRAME)  语句注释掉,所以才会出现题目中的错误。
注释该语句掉,就OK了。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值