Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
36 / 23 / 10
Регистрация: 14.11.2013
Сообщений: 85
1

error C2440: =: невозможно преобразовать "char [8]" в "LPCWSTR"

17.11.2013, 21:18. Показов 4063. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый вечер!
Помогите исправить ошибку.
Нужно заполнить структуру класса окна. В строке wc.lpszClassName = szClassName; ошибка присвоения

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int WINAPI WinMain(HINSTANCE hInstance,  HINSTANCE hPrevInstance,  LPSTR lpCmdLine,  int nCmdShow)
{
    HWND                hMainWnd;
    char                szClassName[] = "MyClass";
    MSG                 msg;
    WNDCLASSEX          wc;
 
 
    // Заполняем структуру класса окна
    wc.cbSize           = sizeof(wc);
    wc.style            = CS_HREDRAW | CS_VREDRAW;
    wc.cbClsExtra       = 0;
    wc.cbWndExtra       = 0;
    wc.hInstance        = hInstance;
    wc.hIcon            = LoadIcon(NULL,  IDI_APPLICATION);
    wc.hCursor          = LoadCursor(NULL,  IDC_ARROW);
    wc.hbrBackground    = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName     = NULL;
    wc.lpszClassName    = szClassName; // error C2440: =: невозможно преобразовать "char [8]" в "LPCWSTR"
 
 
    return 0;
}
Добавлено через 56 секунд
И еще одна ошибка тоже в этой строке
2 IntelliSense: значение типа "char *" нельзя присвоить сущности типа "LPCWSTR"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2013, 21:18
Ответы с готовыми решениями:

error C2440: '=' : cannot convert from 'char [9]' to 'LPCWSTR'
собсно ошибка Error 1 error C2440: '=' : cannot convert from 'char ' to...

Error C2440: =: невозможно преобразовать "const WCHAR [ ]" в "LPCSTR"
Проект настройки обище - Юникод отключил. #include <Windows.h> LRESULT CALLBACK...

Ошибка невозможно преобразовать аргумент 2 из "char *" в "LPCWSTR"
Вот кусок программы k++; char s; SetWindowText(hwnd, itoa(k, s, 10)); ругается на...

Невозможно преобразовать параметр из "const char [12]" в "LPCWSTR"
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR...

Невозможно преобразовать "const char [7]" в "LPCWSTR"
wc.lpszClassName = "OpenGL"; Выдает ошибку: Невозможно преобразовать "const char " в "LPCWSTR"...

7
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
17.11.2013, 21:26 2
wchar_t szClassName[] = L"MyClass";
Ну основы же...
2
Jupiter
17.11.2013, 21:30
  #3

Не по теме:

Цитата Сообщение от Убежденный Посмотреть сообщение
Ну основы же...
я бы считал основами использование TCHAR

1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
17.11.2013, 21:30 4
C++
1
2
3
4
5
...
LPCWSTR lp;
char ch[8];
lp = (LPCSTR)ch;
...
для char -> wchar_t MultiByteToWideChar()
1
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
17.11.2013, 21:34 5
Цитата Сообщение от ssXXss Посмотреть сообщение
C++
1
2
3
LPCWSTR lp;
char ch[8];
lp = (LPCSTR)ch;
И в итоге получим кракозябры-иероглифы.
Потому что если функция ждет LPCWSTR, то есть wide-char, то и
надо ей передавать wide-char, а не "обманывать", кастуя char-строку.
1
36 / 23 / 10
Регистрация: 14.11.2013
Сообщений: 85
17.11.2013, 21:37  [ТС] 6
Цитата Сообщение от Убежденный Посмотреть сообщение
wchar_t szClassName[] = L"MyClass";
Ну основы же...
Спасибо. Только второй день изучаю Winapi. В книге именно так написано но у меня почему-то ошибка

Все, разобрался в чем дело)
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.11.2013, 21:39 7
Цитата Сообщение от LuxArt Посмотреть сообщение
В книге именно так написано но у меня почему-то ошибка
в книге подразумевается что в проекте отключен юникод, ЕМНИП по умолчанию в новосозданном проекте юникод включен.
1
267 / 189 / 33
Регистрация: 15.01.2011
Сообщений: 681
17.11.2013, 21:51 8
Цитата Сообщение от Убежденный Посмотреть сообщение
И в итоге получим кракозябры-иероглифы.
Потому что если функция ждет LPCWSTR, то есть wide-char, то и
надо ей передавать wide-char, а не "обманывать", кастуя char-строку.
верно подмечено , у меня это опечатка типа (copy/paste)
0
17.11.2013, 21:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2013, 21:51
Помогаю со студенческими работами здесь

Ошибка: невозможно преобразовать "char [21]" в "LPCWSTR"
1>------ Построение начато: проект: Laba_8, Конфигурация: Debug Win32 ------ 1> Исходный код.cpp...

Error C2440: =: невозможно преобразовать "LRESULT (__cdecl *)(HWND,UINT,UINT,LONG)" в "WNDPROC"
MV Studio Express 2012. Для преобразования требуется reinterpret_cast, приведение в стиле С или...

Как преобразовать char в LPCWSTR
Получаю данные из сети (строка в utf-8) в буфер char, который надо преобразовать в LPCWSTR....

error C2440: =: невозможно преобразовать 'const char *' в 'char *'
есть вот такой кусок кода int getLex(){ int i = iCurrPos; char strLex, * cp; int j; while...

Error c2440: невозможно преобразовать 'const char [2]' в 'char'
С недавних пор я решил почитать и поучиться программировать, так сказать занять себя чем нибудь...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru