我正在尝试执行以下操作:
class sig
{
CComboBox objList;
void SetDefault();
}
void sig :: SetDefault()
{
objList.InsertString(0, METHOD_ONE);
}
我已将METHOD_ONE定义为另一个类
#define METHOD_ONE "OFF"
我得到了上述错误。
有人可以帮帮我吗?
干杯,
Chintan
答案 0 :(得分:3)
最重要的部分是了解错误;知道什么是const char [4]
,这是一个简单的部分,但是LPCTSTR
如果定义了UNICODE,则
LPCWSTR
,否则为LPCSTR
。更多 信息,请参阅字符串的Windows数据类型。
而LPCWSTR
是:
指向以空字符结尾的16位Unicode字符的常量字符串的指针。有关更多信息,请参阅字体使用的字符集。
首先,您必须检查使用您的程序的编码类型;看来你正在使用UNICODE
,所以最后你试图将一个const指针转换为char
s(“OFF”常量)到一个指向wchar_t
的const指针,(逻辑上)不允许转换。
然后,您可以选择正确的字符串类型;如果定义了UNICODE,则#define
必须是宽字符串:
// Note the L
#define METHOD_ONE L"OFF"
您也可以这样定义:
#ifdef UNICODE
#define METHOD_ONE L"OFF"
#else
#define METHOD_ONE "OFF"
#endif
或使用Roman R建议的_T
宏。此宏唯一的做法是在文本中附加L
前缀:
#ifdef UNICODE
#define _T(x) L ##x
#else
#define _T(x) x
#endif
最后,你必须知道正在使用什么类型的字符串;但微软通过使用#define
和typedef
s的模糊链来隐藏它。