Форум программистов, компьютерный форум CyberForum.ru

Передача char массива в MessageBox - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
04.03.2012, 22:30     Передача char массива в MessageBox #1
Добрый день господа. Не могу решить проблему. Пытаюсь обработать сообщение WM_MOVE и передать координаты окна в MessageBox. Но не знаю как правильно передать или сконвертировать массив типа char* в LPCTSTR.

вот код программы:

C++
1
2
3
4
5
6
7
void CMyTestFrame::OnMove(int x, int y)
{
        CFrameWnd::OnMove(x, y);
        char* coord= new char[20];
        sprintf(coord,"Left=%d|Top=%d",x,y);
        MessageBox(coord);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
14001 / 8832 / 1234
Регистрация: 24.12.2010
Сообщений: 16,008
04.03.2012, 22:37     Передача char массива в MessageBox #2
Все правильно. Должно работать. А приведется само.
Но вместо char *coord = new... я бы просто написал: char coord[20];
(SkyNet)
 Аватар для (SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
04.03.2012, 22:57     Передача char массива в MessageBox #3
Вобшето правильно работать с юнкодом TCHAR, wchar_t
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
05.03.2012, 10:27  [ТС]     Передача char массива в MessageBox #4
Вариант с char coord[20] и с TCHAR пробовал, не помогает. Ничего само не сконвертируется, я уже пробовал. При передаче первого аргумента в MessageBox необходим тип LPCTSTR.
MrSmiLe
Сообщений: n/a
05.03.2012, 14:32     Передача char массива в MessageBox #5
Ну если сделать "MessageBox((LPCTSTR)coord);" то всё должно работать.
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,639
Записей в блоге: 17
05.03.2012, 14:57     Передача char массива в MessageBox #6
Почему не использовать String, а затем подставлять Str.c_str() или Str.w_str() ?

Да и использовать можно конкретные версии MessageBoxA( ) и MessageBoxW( );
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
05.03.2012, 22:07  [ТС]     Передача char массива в MessageBox #7
А можно подробней, как сконвертировать CString для передачи в MessagBox?
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,639
Записей в блоге: 17
05.03.2012, 22:53     Передача char массива в MessageBox #8
C++
1
2
3
4
5
String  Str1="something";
String  Str2=L"something";
 
MessageBoxA(NULL,Str1.c_str(),"заголовок",MB_OK);    // Ansi
MessageBoxW(NULL,Str2.w_str(),L"заголовок",MB_OK);   // Unicode
darkknight2008
 Аватар для darkknight2008
61 / 61 / 6
Регистрация: 16.10.2011
Сообщений: 200
05.03.2012, 22:56     Передача char массива в MessageBox #9
Я обычно эту проблему решаю выставлением в свойствах проекта многобайтной кодировки...
Avazart
 Аватар для Avazart
6906 / 5146 / 253
Регистрация: 10.12.2010
Сообщений: 22,639
Записей в блоге: 17
05.03.2012, 23:00     Передача char массива в MessageBox #10
Ну можно еще #define UNICODE тогда все WinApi функции по умолчанию в Unicode

C++
1
2
3
#define UNICODE
String  Str2=L"something";
MessageBox(NULL,Str2.w_str(),L"заголовок",MB_OK);   // Unicode
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
06.03.2012, 05:43     Передача char массива в MessageBox #11
Дабы избежать путаницы, если используете конкретные типы данных, пользуйтесь функциями с соответствующим суффиксом. Для char это функции с суффиксом A, для wchar - W.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2012, 22:27     Передача char массива в MessageBox
Еще ссылки по теме:

C++ Поворот массива на 90 градусов (cannot convert form char to char*)
array char* to char* (значения массива указателей в один указатель) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
07.03.2012, 22:27  [ТС]     Передача char массива в MessageBox #12
Всем спасибо господа!
Yandex
Объявления
07.03.2012, 22:27     Передача char массива в MessageBox
Ответ Создать тему
Опции темы

Текущее время: 21:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru