Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
5 / 5 / 0
Регистрация: 21.12.2008
Сообщений: 82

Ошибка преобразования 'char [10]' в 'LPCWSTR'

17.05.2009, 14:29. Показов 8511. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я изучаю API функции по книге Win32 API автор Юрий Щупак.
Набрал программу "hello Word" второй вариант на Visual 2008.
Запустил и компилятор выдал мне ошибки типа такой

c:\documents and settings\администратор\мои документы\visual studio 2008\projects\neldermid\neldermid\kwnd.c pp(22) :
error C2440: =: невозможно преобразовать 'char [10]' в 'LPCWSTR'
Типы, на которые указывают указатели, не связаны; для преобразования требуется
reinterpret_cast, приведение в стиле С или приведение в стиле функции

Я все проверил в книге так же. Пожалуйста объясните как это исправить?
Вот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
////////////////////////////
//KWnd.h
#include <windows.h>
 
class KWnd{
public:
    KWnd(LPCTSTR windowName, HINSTANCE hInst, int cmdShow,
        LRESULT (WINAPI * pWndProc)(HWND, UINT, WPARAM, LPARAM),
        LPCTSTR menuName = NULL,
        int x = CW_USEDEFAULT, int y = 0,
        int width = CW_USEDEFAULT, int height = 0,
        UINT classStyle = CS_HREDRAW|CS_VREDRAW,
        DWORD windowStile = WS_OVERLAPPEDWINDOW,
        HWND hParent = NULL);
    HWND GetHWnd(){return hWnd;}
protected:
    HWND hWnd;
    WNDCLASSEX wc;
};
/////////////////////////////
//KWnd.cpp
#include "KWnd.h"
 
KWnd::KWnd(LPCTSTR windowName,HINSTANCE hInst,int cmdShow,
           LRESULT (WINAPI *pWndProc)(HWND, UINT, WPARAM, LPARAM),
           LPCTSTR menuName, int x, int y, int width, int height,
           UINT classStyle, DWORD windowStyle, HWND hParent)
{
    char szClassName[] = "KWndClass";
 
    wc.cbSize       = sizeof(wc);
    wc.style        = classStyle;
    wc.lpfnWndProc  = pWndProc;
    wc.cbClsExtra   = 0;
    wc.cbWndExtra   = 0;
    wc.hInstance    = hInst;
    wc.hIcon        = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor      = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);
    wc.lpszMenuName = menuName;
    wc.lpszClassName= szClassName;
    wc.hIconSm      = LoadIcon(NULL, IDI_APPLICATION);
 
    //рЕГИСТРИРУЕМ КЛАСС
    if (!RegisterClassEx(&wc)){
        char msg[100] = "Cannot  register class: ";
        strcat(msg, szClassName);
        MessageBox(NULL, msg, "Error", MB_OK);
        return;
    }
 
    //Создаем окно
    hWnd = CreateWindow(szClassName, windowName, windowStyle,
        x, y, width, height, hParent, (HMENU)NULL, hInst, NULL);
    if (!hWnd){
        char text[100] = "Cannot create window";
        strcat(text, windowMenu);
        MessageBox(NULL, text, "Error", MB_OK);
        return;
    }
    
    //Показываем окно
    ShowWindow(hWnd, cmdShow);
}
//////////////////////////////////////////
//Main.cpp
#include <windows.h>
#include "KWnd.h"
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
//===================================================
int WINAPI WinMain(HINSTANCE hInstace, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int
                   nCmdShow)
{
    MSG msg;
    KWnd mainWnd("A Hello2 application", hInstace, nCmdShow, WndProc);
 
    while(GetMessage(&msg, NULL, 0,))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
//====================================================
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    HDC hDC;
    PAINTSTRUCT ps;
    RECT rect;
    int userReply;
 
    switch (uMsg)
    {
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);
 
        GetClientRect(hWnd, &rect);
        DrawText(hDC, "Hello, Word!", -1, &rect,
            DT_SINGLELINE|DT_CENTER|DT_VCENTER);
 
        EndPaint(hWnd, &ps);
        break;
 
    case WM_CLOSE:
        userReply = MessageBox(hWnd, "А вы уверены?",
            "", MB_YESNO|MB_ICONQUESTION);
        if(IDYES == userReply)
            DestroyWindow(hWnd);
        break;
 
    case WM_DESTROY:
            PostQuitMessage(0);
            break;
 
    default:
        return DefWindowProc(hWnd, uMsg, wParam, lParam);
    }
    return 0;
}
////////////////////////////
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2009, 14:29
Ответы с готовыми решениями:

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

ошибка преобразования char
помогите найти ошибку(или исправить): #include&lt;iostream&gt; #include&lt;string.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt; ...

char to LPCWSTR
Добрый день! Программе требуется вычислить свободное место на диске. Букву диска вводит пользователь в переменную типа char. Но для...

6
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
17.05.2009, 14:31
wchar_t вместо char юзай и не парься.
0
Maniac
Эксперт С++
 Аватар для ISergey
1465 / 966 / 160
Регистрация: 02.01.2009
Сообщений: 2,820
Записей в блоге: 1
17.05.2009, 14:34
и перед строкой потом литерал добавляй( "L" ).
C++
1
wchar_t str[] = L"String.";
0
5 / 5 / 0
Регистрация: 21.12.2008
Сообщений: 82
17.05.2009, 14:57  [ТС]
Спасибо! Правда ушла только эта ошибка.
а другие стали на подобие такой


c:\documents and settings\администратор\мои документы\visual studio 2008\projects\neldermid\neldermid\kwnd.c pp(28) :
error C2664: strcat: невозможно преобразовать параметр 1 из 'wchar_t [25]' в 'char *'
Типы, на которые указывают указатели, не связаны; для преобразования требуется
reinterpret_cast, приведение в стиле С или приведение в стиле функции
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
17.05.2009, 14:58
Хех. Так используй и функции везде соответствующие. Например wcscat и прочие. Для расширенных символов.
А то хитрый какой... Та на параметры функций вообще не смотришь?
http://msdn.microsoft.com/en-u... S.60).aspx
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
17.05.2009, 15:01
Способ 1:
Все char замени на TCHAR и перед всеми текстовыми литералами поставь _T(), вот так:
C++
1
TCHAR szClassName[] = _T("KWndClass");
Способ 2:
Свойства проекта -> General -> Character set -> Not set.
0
5 / 5 / 0
Регистрация: 21.12.2008
Сообщений: 82
17.05.2009, 15:12  [ТС]
Спасибо всем!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2009, 15:12
Помогаю со студенческими работами здесь

char* -> LPCWSTR
Всем доброго времени суток. Пытаюсь перевести char* строчку (строка текста переменной длины). Собственно код: char* LastChar; ...

Из char в LPCWSTR
void CreateDir(char name) { LPCWSTR lpName = name; if (CreateDirectory(lpName, NULL)) cout &lt;&lt; &quot;directory create&quot; &lt;&lt; endl; ...

const char в LPCWSTR
Суть программы вывести информацию об аппаратной части компьютера,а именно процессор,озу,диски,видеокарта,мышь,клавиатура. Однако выдает...

const char*' to 'LPCWSTR
Код: ShellExecute(0, &quot;cmd.exe&quot;, &quot;open&quot;, &quot;/k powercfg -h off&quot;, NULL, SW_HIDE); при компиляции видает ошибку: ...

Преобразование char* в LPCWSTR
Какие функции необходимы для преобразования из char* в LPCWSTR? Заранее спасибо!


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru