我是Win32Api的初学者,我试图制作计算器,但由于彼此之间的数据类型转换而失败了
示例:
int N1 = GetDlgItemText(WID,IDC_N1,NULL,NULL);
int N2 = GetDlgItemText(WID,IDC_N2,NULL,NULL);
int RESULT = N1+N2;
MessageBox(NULL,RESULT,L"Message",MB_OK);
上面的例子告诉我以下错误 (无法将参数2从'int'转换为'LPCWSTR')
此错误的原因是彼此之间的数据类型转换
请有人帮助我
答案 0 :(得分:2)
以下是您的任务的正确代码:
wchar_t Str1[100], Str2[100], ResStr[100];
GetDlgItemText(WID, IDC_N1, Str1, 100);
GetDlgItemText(WID, IDC_N2, Str2, 100);
int N1 = _wtoi(Str1);
int N2 = _wtoi(Str2);
int RESULT = N1 + N2;
_itow(RESULT, ResStr, 10);
MessageBox(NULL, ResStr, L"Message",MB_OK);
有用的链接:
http://msdn.microsoft.com/en-us/library/ms645489(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/ms645505(v=vs.85).aspx
答案 1 :(得分:1)
您需要将unicode字符串而不是int传递给MessageBox。
wchar_t ResStr[100]; //define string
_itow(RESULT, ResStr, 10); //convert int result to string
MessageBox(NULL, ResStr, L"Message",MB_OK); //now display string
答案 2 :(得分:1)
这有一个API。使用GetDlgItemInt
。
答案 3 :(得分:0)
您的项目未设置为使用Unicode,但您将宽字符串传递给MessageBox
。你可以:
1)更改项目设置,使其默认为Unicode;或
2)明确致电MessageBoxW
;或
3)删除L
,并使用非Unicode API。
答案 4 :(得分:0)
看起来您只需要转到项目>属性>配置属性>并将'字符集'更改为多字节。它可能是在Unicode,我认为这将工作,因为这是我在更改字符集之前尝试使用WinAPI MessageBox()时总是得到的错误。也许你想尝试做些不同的事情?但这应该有帮助...