Как я могу сделать калькулятор с помощью (родной Win32 API)? - PullRequest
0 голосов
/ 18 сентября 2011

Я новичок в 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')

И причина этой ошибки - преобразование типов данных между собой

Пожалуйста, кто-нибудь, помогите мне

Ответы [ 5 ]

2 голосов
/ 18 сентября 2011

Вот правильный код для вашей задачи:

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 голос
/ 19 сентября 2011

Для этого есть API.Используйте GetDlgItemInt.

1 голос
/ 18 сентября 2011

Вам необходимо передать строку юникода вместо 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  
0 голосов
/ 18 сентября 2011

Похоже, вам просто нужно перейти в проект> свойства> свойства конфигурации> и изменить «набор символов» на многобайтовый.Вероятно, это будет в Unicode, я думаю, что это будет работать, потому что это ошибка, которую я всегда получаю, когда пытаюсь использовать WinAPI MessageBox () перед изменением набора символов.Может быть, вы пытаетесь сделать что-то другое?Но это должно помочь ...

0 голосов
/ 18 сентября 2011

Ваш проект не настроен на использование Unicode, но вы передаете широкую строку в MessageBox.Вы можете:

1) изменить настройки проекта так, чтобы он по умолчанию был Unicode;или

2) Явно позвоните MessageBoxW;или

3) Удалите L и используйте не-Unicode API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...