BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
...
char title[3]; //必须这样做
title[0]='a';
title[1]='a';
title[2]='a'; cs.lpszName=title;
...
}
在运行时,窗口的标题栏为乱码,
怎样才能使标题栏显示正确的内容,
{
...
char title[3]; //必须这样做
title[0]='a';
title[1]='a';
title[2]='a'; cs.lpszName=title;
...
}
在运行时,窗口的标题栏为乱码,
怎样才能使标题栏显示正确的内容,
解决方案 »
- 改VC2010,开发效率能提高多少
- [版主麻烦给推荐一下]计算机&通信工程的同事们想拿奖学金的敬请关注.
- 关于视图创建后隐藏的问题
- 高分悬赏:求非法信息过滤库,非法文字过滤库,三天内结贴
- 求助!树控件的使用!小妹先谢了!
- sdk创建的socket如何可以象cSocket创建的一样当有接收、关闭等消息时系统会自动接收到这个消息
- 有些网络管理软件只要求装在局域网里一台普通的机器上就可以对网里其他的机器进行管理,如网络执法官,是怎么实现的?
- 如何设置dialog窗体的背景色?
- 幼儿园问题:CString的字符串放到WCHAR数组中
- MFC为何无法显示韩语,法语等都能正常显示
- 聊天程序
- 高分请教一个SOCKET服务器的设计问题
title[0]='a';
title[1]='a';
title[2]='a';
title[3]='\0';
char titlechar[100];
LoadString(hResource, APP_TITLE1, titlechar, 100);
cs.lpszName=titlechar; 但是在执行时标题栏总是乱码
我用AfxMessageBox();现实正常,
////
我是想从一个DLL中传入字符串资源,
///想从一个资源DLL中传入字符串资源hResource=::LoadLibrary(...);
//#define APP_TITLE1 111
char titlechar[100];
LoadString(hResource, APP_TITLE1, titlechar, 100);
cs.lpszName=titlechar; 但是在执行时标题栏总是乱码
我用AfxMessageBox();现实正常,
//////////////////////
估计不是越界的问题,
因为我手动设置也不得行,
char titlechar[100];
LoadString(hResource, APP_TITLE1, titlechar, 100);
int len=strlen(titlechar);
titlechar[len]='\0';
cs.lpszName=titlechar; ////////
结果还是一样的,
标题栏只有一个汉字和一个上下箭头
调试跟踪一下,看看是不是unicode与ansi的问题
///
我也估计是,所以我将char titlechar[100]
改为: TCHAR titlechar[100]
结果还是一样的,,
改为:wchar_t titlechar[100]
编译:出错:
正在编译...
MainFrm.cpp
e:\project\zhanghua1\zhanghua1\NEW\EMMG08\EMMG\MainFrm.cpp(70) : error C2664: “LoadStringA” : 不能将参数 3 从“wchar_t [100]”转换为“LPSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
e:\project\zhanghua1\zhanghua1\NEW\EMMG08\EMMG\MainFrm.cpp(71) : error C2664: “strlen” : 不能将参数 1 从“wchar_t [100]”转换为“const char *”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
e:\project\zhanghua1\zhanghua1\NEW\EMMG08\EMMG\MainFrm.cpp(75) : error C2440: “=” : 无法从“wchar_t [100]”转换为“LPCSTR”
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
犯了一个常识性的错误.
应该将那个所使用的数组声明成成员变量.
///////////////
cs.lpszName=titlechar;//
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
...
char titlechar[100]; //申明成局部变量,
LoadString(hResource, APP_TITLE1, titlechar, 100);
cs.lpszName=titlechar; //这个时候lpszname得到的是titlechar的地址
...
return TRUE; //在这里,titlechar变量将被销毁.所以程序在编译的时候不会 出问题,而在运行的时候,标题栏显示的是乱码.
}
解决办法.将titlechar声明成类的成员变量.就OK了.
class CMainFrame : public CFrameWnd
{
...
private:
char titlechar[100]; //for title from dll;
...
}