C++ char* 作为参数 和messagebox的问题

大家好,我用c++在cpp文件里面有一个函数Hello,有参数char*say;形式如下MT4_EXPFUNCchar*__stdcallHello(char*say){... 大家好,我用c++在cpp文件里面有一个函数Hello,有参数char* say;形式如下
MT4_EXPFUNC char* __stdcall Hello(char* say)
{
MessageBox(NULL,say,"Here is the title for the messagebox",NULL);
return say;
}

我把这个编译生成dll供外部语言(mql4语言)调用,存在2个问题:

1:如果调用格式为Hello("test_hello_function");则弹出框只会弹出字符串的第一个字符即"t"也就是"test_hello_function"的第一个字母;
2:如果把参数换成中文,则会是乱码即
Hello("中文测试"),则弹出乱码

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

请问大家如何解决?我没有学过c++,一直做web编程;所以还望您能热心给出详细一点的答案,非常感谢!
展开
 我来答
阔气克克
2015-05-14 · TA获得超过485个赞
知道小有建树答主
回答量:527
采纳率:0%
帮助的人:470万
展开全部
试试这样:
MT4_EXPFUNC LPCTSTR __stdcall Hello(LPCTSTR say)
{
MessageBox(NULL,TEXT(say),TEXT("Here is the title for the messagebox"),MB_OK);
return say;
}
更多追问追答
追问

朋友,谢谢;


验证过你的方法是正确的;


但是,如果一定要按照我之前的形式进行定义的话,

错误如图所示,你知道应该怎么处理吗?


另外,如果可以,你能帮我解释一下你这样做的原因吗?,谢谢!



追答
首先TEXT是为了从ANSI码转化为Unicode码,然后LPCSTR相当于const char *,如果你加上const修饰就对了
匿名用户
2015-05-14
展开全部
编码 问题
将编译器的默认编码设为Unicode即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式