小女子编写C++程序时遇到一个关于Format函数的错误,不知道该怎么修改,希望各位高手帮忙指教!
这段程序的代码是这样的:LONGCPortDlg::OnRecvSerialData(WPARAMwParam,LPARAMlParam){CStringstrRecv;...
这段程序的代码是这样的:
LONG CPortDlg::OnRecvSerialData(WPARAM wParam,LPARAM lParam)
{
CString strRecv ;
strRecv.Format("%x", wParam);//接收十六进制数
m_strEditReceiveMsg += strRecv;
UpdateData(FALSE); //将接收到的字符显示在接收编辑框中
return 0;
}
m_strEditReceiveMsg 是在之前定义过的
build时有一个错误:
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [3]' to 'const wchar_t *'
Format这个函数用错了么?里面的参数应该写什么呢?
希望高手帮我看一下,不胜感激! 展开
LONG CPortDlg::OnRecvSerialData(WPARAM wParam,LPARAM lParam)
{
CString strRecv ;
strRecv.Format("%x", wParam);//接收十六进制数
m_strEditReceiveMsg += strRecv;
UpdateData(FALSE); //将接收到的字符显示在接收编辑框中
return 0;
}
m_strEditReceiveMsg 是在之前定义过的
build时有一个错误:
error C2664: 'void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t *,...)' : cannot convert parameter 1 from 'const char [3]' to 'const wchar_t *'
Format这个函数用错了么?里面的参数应该写什么呢?
希望高手帮我看一下,不胜感激! 展开
展开全部
CString::Format的定义是:
void Format( LPCTSTR lpszFormat, ... );
再看LPCTSTR定义是“An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.”
再从你的错误信息中有'const wchar_t *',所以估计你在编译时定义了UNICODE,(每个字符占两字节)
首先查下你的代码里有没有#define _UNICODE,如果有,删了,或改为_MBCS
然后看一下你的集成开发环境里(比如VC6)有没有定义_UNICODE
对于VC,是在project settings对话框里的c/c++下,看看有没有,(你应该能看到WIN32,_WINDOWS等等)有就改为_MBCS
如果你必须要用UNICODE。。。 你就把Format的参数"%x"改为Unicode的吧。
void Format( LPCTSTR lpszFormat, ... );
再看LPCTSTR定义是“An LPCWSTR if UNICODE is defined, an LPCSTR otherwise.”
再从你的错误信息中有'const wchar_t *',所以估计你在编译时定义了UNICODE,(每个字符占两字节)
首先查下你的代码里有没有#define _UNICODE,如果有,删了,或改为_MBCS
然后看一下你的集成开发环境里(比如VC6)有没有定义_UNICODE
对于VC,是在project settings对话框里的c/c++下,看看有没有,(你应该能看到WIN32,_WINDOWS等等)有就改为_MBCS
如果你必须要用UNICODE。。。 你就把Format的参数"%x"改为Unicode的吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
喂~ “小女子”,你就不想知道为什么加个L就能编译过了?!枉费了给你分析了半天错误信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询