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

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

11.08.2011, 00:59. Показов 5885. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru