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

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

17.05.2009, 14:29. Показов 8449. Ответов 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
1464 / 965 / 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
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru