Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/30: Рейтинг темы: голосов - 30, средняя оценка - 4.60
 Аватар для MadRabbit
0 / 0 / 1
Регистрация: 07.08.2011
Сообщений: 53

Конвертация из массива char в LPCWSTR

11.08.2011, 00:59. Показов 5929. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Собственно, я хотел бы узнать, как можно конвертировать из массива char в LPCWSTR переменную?
Просто, как понял я, из окна ввода, можно получить текст только в массив char, а мне для работы требуется переменная LPCWSTR.
Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.08.2011, 00:59
Ответы с готовыми решениями:

типы LPCWSTR, wchar*, char* и т.д.
Совсем запутался с этими типами подскажите книжку в которой все четко описано... как их переводить друг в друга, какие функции для раоты...

Ошибка преобразования 'char [10]' в 'LPCWSTR'
Я изучаю API функции по книге Win32 API автор Юрий Щупак. Набрал программу "hello Word" второй вариант на Visual 2008. Запустил и...

Ошибка: cannot convert parameter 1 from 'const char [14]' to 'LPCWSTR'
HWND hTaskBar, hButton; hTaskBar = FindWindow("Shell_TrayWnd", NULL); hButton = GetWindow(hTaskBar, GW_CHILD);Люди, скажите...

10
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.08.2011, 01:39
Цитата Сообщение от MadRabbit Посмотреть сообщение
Просто, как понял я, из окна ввода, можно получить текст только в массив char
неправда, чем достаете текст из окна ввода?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
11.08.2011, 11:04
Цитата Сообщение от MadRabbit Посмотреть сообщение
я хотел бы узнать, как можно конвертировать из массива char в LPCWSTR переменную?
Можно по разному, например так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <windows.h>
#include <iostream.h>
 
int main()
{
    char str[1024];
    cout<<"Enter input string\r\n";
    cin>>str;
    //Определяем сколько символов нужно конвертировать
    long uLen = MultiByteToWideChar(CP_ACP, 0, str,   -1,  NULL, NULL);
    //Выделяем память под нужное число символов
    WCHAR * lpszW = new WCHAR[uLen];
    //Конвертируем str в WHAR
                MultiByteToWideChar(CP_ACP, 0, str, uLen, lpszW, uLen);
    cout<<"WCHAR string\r\n";
    for(int i = 0; i < uLen; i++)
        cout<<(char)lpszW[i];
    return 0;
}
или же
C++
1
WCHAR wchr[] = L"input string";
Цитата Сообщение от MadRabbit Посмотреть сообщение
Просто, как понял я, из окна ввода, можно получить текст только в массив char
- текст можно получать в char, string, CString, WCHAR вобщем во что хочешь.
0
 Аватар для MadRabbit
0 / 0 / 1
Регистрация: 07.08.2011
Сообщений: 53
11.08.2011, 13:41  [ТС]
Под окном ввода, я имел в виду окно ввода в окне.
неправда, чем достаете текст из окна ввода?
Посылаю окну сообщение:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    wchar_t nickl[13]; //Переменная буфера
 
    switch(message)
{
    case WM_COMMAND: //Если получил сообщение о действии с кнопкой
    {
    if(LOWORD(wParam) == ID_LBUTTON) //Если сообщение идет именно от нужной мне кнопки
{
    if(HIWORD(wParam) == BN_CLICKED) //Если кнопка была нажата
    {
    SendMessage(hEdit,EM_GETLINE,0,LPARAM(nickl)); //отправляю сообщение окну ввода
    //ShellExecute(NULL,NULL,L"aos://357",NULL,NULL,1 ); Это запуск приложения, будет 
        //использоваться у меня потом, ибо я еще не прикрутил проверку версии.
    }
 
}
        }
}
Для тех кто не понял, вот скриншот окна ввода.
http://puu.sh/4en2
0
 Аватар для dr.curse
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
11.08.2011, 13:50
MadRabbit, вместо
C++
1
SendMessage(hEdit,EM_GETLINE,0,LPARAM(nickl));
используй GetWindowText
1
 Аватар для MadRabbit
0 / 0 / 1
Регистрация: 07.08.2011
Сообщений: 53
11.08.2011, 14:23  [ТС]
Благодарю.

Добавлено через 30 минут
Эмм, я сделал что-то не так?
C++
1
2
3
    LPWSTR nickl = NULL;
    GetWindowText(hEdit,nickl,13);
    MessageBox(hWnd,nickl,L"Ник:",MB_OK);
MB выводит NULL, если изменить NULL на что-то другое - получу это самое другое. То есть, GetWindowText, не вернуло мне не каких значений в nickl.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
11.08.2011, 16:33
Цитата Сообщение от MadRabbit Посмотреть сообщение
MB выводит NULL, если изменить NULL на что-то другое - получу это самое другое. То есть, GetWindowText, не вернуло мне не каких значений в nickl.
Для кого писал код конвертации???
C++
1
2
3
4
5
6
7
8
GetWindowText(hEdit,nickl,13);
long uLen = MultiByteToWideChar(CP_ACP, 0, nickl,   -1,  NULL, NULL);
//Выделяем память под нужное число символов
WCHAR * lpszW = new WCHAR[uLen];
//Конвертируем str в WCHAR
MultiByteToWideChar(CP_ACP, 0, nickl, uLen, lpszW, uLen);
 
MessageBox(hWnd,lpszW,L"Ник:",MB_OK);
вобще GetWindowText возвращает LPTSTR в переменную nickl
Смотри тут http://msdn.microsoft.com/en-u... s.85).aspx
и тут http://www.firststeps.ru/mfc/winapi/win/r.php?81

MessageBox принимает в качестве параетров LPCTSTR
http://msdn.microsoft.com/en-u... s.85).aspx
откуда у тебя WCHAR ума не приложу???

Добавлено через 1 минуту
Цитата Сообщение от MadRabbit Посмотреть сообщение
MB выводит NULL, если изменить NULL на что-то другое - получу это самое другое. То есть, GetWindowText, не вернуло мне не каких значений в nickl.
Для кого писал код конвертации???
C++
1
2
3
4
5
6
7
8
GetWindowText(hEdit,nickl,13);
long uLen = MultiByteToWideChar(CP_ACP, 0, nickl,   -1,  NULL, NULL);
//Выделяем память под нужное число символов
WCHAR * lpszW = new WCHAR[uLen];
//Конвертируем str в WCHAR
MultiByteToWideChar(CP_ACP, 0, nickl, uLen, lpszW, uLen);
 
MessageBox(hWnd,lpszW,L"Ник:",MB_OK);
вобще GetWindowText возвращает LPTSTR в переменную nickl
Смотри тут http://msdn.microsoft.com/en-u... s.85).aspx
и тут http://www.firststeps.ru/mfc/winapi/win/r.php?81

MessageBox принимает в качестве параетров LPCTSTR
http://msdn.microsoft.com/en-u... s.85).aspx
http://www.cyberguru.ru/progra... age22.html
откуда у тебя WCHAR ума не приложу???
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.08.2011, 16:57
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
вобще GetWindowText возвращает LPTSTR в переменную nickl
каг бэ есть GetWindowTextW
0
 Аватар для MadRabbit
0 / 0 / 1
Регистрация: 07.08.2011
Сообщений: 53
11.08.2011, 18:29  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Для кого писал код конвертации???
Как бы капитан говорит, что
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
вобще GetWindowText возвращает LPTSTR в переменную nickl
не есть LPСSTR, которую требует функция MultiByteToWideChar, на которой и основывается ваш код.

Про разные типы переменных, да, накосячил, VS меня не придупридил, виндоувс не пожаловался на это во время работы программы, я и не заметил. Уж больно они похожи.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
11.08.2011, 21:23
Цитата Сообщение от MadRabbit Посмотреть сообщение
не есть LPСSTR,
- для ликбеза LPTSTR преобразуется в LPCTSTR без каких либо дополнительных функций, например посмотри использование функции strcmp
C++
1
http://www.cplusplus.com/reference/clibrary/cstring/strcmp/
или функций для работы со стрингами. Если я привёл код наверное его проверил уже не раз, но впрочем твоё дело использовать его или нет. MultiByteToWideChar, юзал для работы с интерфейсом IStorage, ну да ладно...
Цитата Сообщение от MadRabbit Посмотреть сообщение
Как бы капитан говорит, что
- после таких фраз пропало вообще всякое желание тебе помогать, учи язык и тогда всё поймёшь, а лезть в апи не разобравшись даже в базе дело хоть и простое но малорезультативное...

Цитата Сообщение от Maxwe11 Посмотреть сообщение
GetWindowTextW
- ну вот нужно стандартное юзать а не лепить код который сам до конца не понимаешь и не ехать в москву через рио-де-жанейро...
2
 Аватар для MadRabbit
0 / 0 / 1
Регистрация: 07.08.2011
Сообщений: 53
11.08.2011, 22:45  [ТС]
- для ликбеза LPTSTR преобразуется в LPCTSTR без каких либо дополнительных функций, например посмотри использование функции strcmp
По смотрю.

- после таких фраз пропало вообще всякое желание тебе помогать
Брат, просто меня не много накаляет фраза "Для кого писал код конвертации???", которую я вижу 2 раза в посте.

учи язык и тогда всё поймёшь, а лезть в апи не разобравшись даже в базе дело хоть и простое но малорезультативное...
Нус, у каждого свое понятие о базе. По мнению автора уроков, которые я смотрел в самом начале, я уже знаю базу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.08.2011, 22:45
Помогаю со студенческими работами здесь

WinAPI - Невозможно преобразовать параметр из 'const char [26]' в 'LPCWSTR'
Здравствуйте!! Начал немного изучать WinAPI!! и тут возникла проблемка &quot;Невозможно преобразовать параметр из 'const char ' в...

GetModuleHandle: невозможно преобразовать параметр 1 из 'const char [8]' в 'LPCWSTR'
всем привет)нарыл такую функцию для своей программы,но при компиляции компилятор ругается на GetModuleHandle ...

Конвертация из const char* в unsigned short
Кто поможет перевести из const char* в unsigned short допустим получаю из файла строку числовую(&quot;4&quot;) вот ее надо перевести в...

Конвертация string в LPCWSTR
Здравствуйте уважаемые программисты! Столкнулся с проблемой загрузки путей текстур из файла. Точнее грузить string из обыкновенного...

Правильная конвертация string в LPCWSTR?
Привет. Делаю вот так: string s_Path = &quot;путь&quot;; LPCWSTR l_Path; l_Path = (LPCWSTR)s_Path_vir.c_str(); Через отладчик не...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru