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

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

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

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

04.03.2012, 22:30. Просмотров 1522. Ответов 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);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2012, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача char массива в MessageBox (C++):

Передача символьного массива char - C++
Привет всем. Подскажите пожалуйста. Есть функция в DLL. extern "C" __declspec(dllexport) void TestFan(char *bUUID,char *bName) { ...

Передача в функцию массива char - C++
Есть функция : char f1(const char *str); Мне нужно её вызвать . Делаю так: char s; s="abcd"; // ошибка: invalid...

Передача массива типа char в функцию - C++
Не пойму в чем ошибка, выдает что ошибка в типе char. Объясните пожалуйста что не так. int min() { char ar =...

Передача массива Char в функцию. Как быть? - C++
Столкнулся вот с такой проблемой, что #include <iostream> #include <fstream> #include <Windows.h> #include <conio.h> using...

Передача двумерного массива указателей на char в качестве параметра функции - C++
Есть массив char *result2; Нужно передать его в функцию void defDouble(???) в качестве одного из параметров . Как будет выглядеть...

Передача в функцию char*([Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]) - C++
Почему компилятор на это матерится? ObjA.Show("A"); deprecated conversion from string constant to 'char*' #include <iostream> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,456
04.03.2012, 22:37 #2
Все правильно. Должно работать. А приведется само.
Но вместо char *coord = new... я бы просто написал: char coord[20];
0
(SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
04.03.2012, 22:57 #3
Вобшето правильно работать с юнкодом TCHAR, wchar_t
0
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
05.03.2012, 10:27  [ТС] #4
Вариант с char coord[20] и с TCHAR пробовал, не помогает. Ничего само не сконвертируется, я уже пробовал. При передаче первого аргумента в MessageBox необходим тип LPCTSTR.
0
MrSmiLe
Сообщений: n/a
05.03.2012, 14:32 #5
Ну если сделать "MessageBox((LPCTSTR)coord);" то всё должно работать.
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,665
Записей в блоге: 17
05.03.2012, 14:57 #6
Почему не использовать String, а затем подставлять Str.c_str() или Str.w_str() ?

Да и использовать можно конкретные версии MessageBoxA( ) и MessageBoxW( );
0
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
05.03.2012, 22:07  [ТС] #7
А можно подробней, как сконвертировать CString для передачи в MessagBox?
0
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,665
Записей в блоге: 17
05.03.2012, 22:53 #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
1
darkknight2008
62 / 62 / 6
Регистрация: 16.10.2011
Сообщений: 200
05.03.2012, 22:56 #9
Я обычно эту проблему решаю выставлением в свойствах проекта многобайтной кодировки...
0
Avazart
Эксперт С++
7188 / 5362 / 280
Регистрация: 10.12.2010
Сообщений: 23,665
Записей в блоге: 17
05.03.2012, 23:00 #10
Ну можно еще #define UNICODE тогда все WinApi функции по умолчанию в Unicode

C++
1
2
3
#define UNICODE
String  Str2=L"something";
MessageBox(NULL,Str2.w_str(),L"заголовок",MB_OK);   // Unicode
1
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
06.03.2012, 05:43 #11
Дабы избежать путаницы, если используете конкретные типы данных, пользуйтесь функциями с соответствующим суффиксом. Для char это функции с суффиксом A, для wchar - W.
0
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
07.03.2012, 22:27  [ТС] #12
Всем спасибо господа!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2012, 22:27
Привет! Вот еще темы с ответами:

В чем отличие двумерного массива типа char от массива указателей на char? - C++
В чем отличие двумерного массива типа char и массива указателей на char ?

array char* to char* (значения массива указателей в один указатель) - C++
Как сложить(или вывести в формате char*) все значения массива указателей(char *) воедино, то есть сложить строки и назначить результату...

Поворот массива на 90 градусов (cannot convert form char to char*) - C++
Пытаюсь повернуть массив на 90 градусов. Понимаю что проблема в преобразовании данных, но не знаю как исправить( Может кто подсказать...

Приведение массива char[] (или char* ) в LPCTSTR - C++
Задача: пользователь вводит директорию, нужно проверить существует ли эта директория. Функция DirExists проверки работает правильно, но...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.03.2012, 22:27
Ответ Создать тему
Опции темы

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