回 帖 发 新 帖 刷新版面

主题:vc2008的一个好几次的错误

利用CButton:Craete();创建按钮;定义好了变量CDailog变量,调用如下
m_btn.Create("new",BS_DEFPUSHBUTTON|WS_VISIBLE ,CRect(0,0,100,100),this,123);
错误如下
1> : error C2664: “CButton::Create”: 不能将参数 1 从“const char [4]”转换为“LPCTSTR”
       与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换。
这个问题出现好几次了,就是一个简单的调用MessageBox("aaaa");也出现,本人的编译器是VC2008,messageBox的问题我在VC6.0上是没问题了,这个是编译器的缘故还是代码有错误,望高手不舍指教

回复列表 (共5个回复)

沙发

问题的补充
我强子类型转换 (LPCTSTR)"new"编译连接没问题但是显示的是乱码

板凳

_T("")试试看

3 楼

楼上的是什么意思啊 是MessageBox_T("aaa");吗?还是_TMessageBox("aaa");我试过了,都不行

4 楼


MessageBox(_T("aaa"));
字符串转换为TCHAR就好

5 楼

你的工程属性中,在"常规"="字符集"中,使用了Unicode 字符集,所以要用宽字符._T("aaa");则是告诉编译器,这个字符串是宽字符的,如果只是强转(LPCTSTR)"new",当然结果是乱码.
不想改的话,直接把"常规"="字符集"改为"使用多字节字符集".MFC的函数大多都会有两个,如MessageBox函数,有MessageBoxA 和 MessageBoxW两个,一个是多字符,一个是宽字符,根据工程属性来选择的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册