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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
#1

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

04.03.2012, 22:30. Просмотров 1498. Ответов 11
Метки нет (Все метки)

Добрый день господа. Не могу решить проблему. Пытаюсь обработать сообщение 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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2012, 22:30     Передача char массива в MessageBox
Посмотрите здесь:
C++ Передача в функцию массива char
C++ Передача символьного массива char
C++ Передача массива типа char в функцию
Передача массива Char в функцию. Как быть? C++
Передача двумерного массива указателей на char в качестве параметра функции C++
Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]) C++
C++ В чем отличие двумерного массива типа char от массива указателей на char?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
Эксперт C
15833 / 10160 / 1522
Регистрация: 24.12.2010
Сообщений: 19,148
04.03.2012, 22:37     Передача char массива в MessageBox #2
Все правильно. Должно работать. А приведется само.
Но вместо char *coord = new... я бы просто написал: char coord[20];
(SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
04.03.2012, 22:57     Передача char массива в MessageBox #3
Вобшето правильно работать с юнкодом TCHAR, wchar_t
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
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
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,400
Записей в блоге: 17
05.03.2012, 14:57     Передача char массива в MessageBox #6
Почему не использовать String, а затем подставлять Str.c_str() или Str.w_str() ?

Да и использовать можно конкретные версии MessageBoxA( ) и MessageBoxW( );
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
05.03.2012, 22:07  [ТС]     Передача char массива в MessageBox #7
А можно подробней, как сконвертировать CString для передачи в MessagBox?
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,400
Записей в блоге: 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
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
05.03.2012, 22:56     Передача char массива в MessageBox #9
Я обычно эту проблему решаю выставлением в свойствах проекта многобайтной кодировки...
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,400
Записей в блоге: 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
3034 / 2355 / 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
Еще ссылки по теме:
array char* to char* (значения массива указателей в один указатель) C++
C++ Поворот массива на 90 градусов (cannot convert form char to char*)
Приведение массива char[] (или char* ) в LPCTSTR C++
Запись в *char элемента из массива *char[i] C++

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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru