Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
 Аватар для Богдан всепытный
10 / 18 / 4
Регистрация: 10.11.2017
Сообщений: 283

Не создаётся окно!

12.01.2018, 22:30. Показов 3581. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В visual studio лезут ошибки
вот как проходила сборка:

1>------ Сборка начата: проект: Проект1, Конфигурация: Debug Win32 ------
1> Source.cpp
1>v:\visual studio\проекты\проект1\проект1\source.cp p(23): error C2440: =: невозможно преобразовать "char [9]" в "LPCWSTR"
1> v:\visual studio\проекты\проект1\проект1\source.cp p(23): note: Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>v:\visual studio\проекты\проект1\проект1\source.cp p(38): error C2664: "HWND CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DW ORD,int,int,int,int,HWND,HMENU,HINSTANCE ,LPVOID)": невозможно преобразовать аргумент 2 из "char [9]" в "LPCWSTR"
1> v:\visual studio\проекты\проект1\проект1\source.cp p(38): note: Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>v:\visual studio\проекты\проект1\проект1\source.cp p(60): error C2664: "BOOL PlaySoundW(LPCWSTR,HMODULE,DWORD)": невозможно преобразовать аргумент 1 из "const char [13]" в "LPCWSTR"
1> v:\visual studio\проекты\проект1\проект1\source.cp p(60): note: Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
1>v:\visual studio\проекты\проект1\проект1\source.cp p(69): error C2664: "int DrawTextW(HDC,LPCWSTR,int,LPRECT,UINT)": невозможно преобразовать аргумент 2 из "const char [19]" в "LPCWSTR"
1> v:\visual studio\проекты\проект1\проект1\source.cp p(69): note: Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Вот код:

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
#include <windows.h>
 
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
     {
     static char szAppName[] = "HelloWin" ;
     HWND        hwnd ;
     MSG         msg ;
     WNDCLASSEX  wndclass ;
 
     wndclass.cbSize        = sizeof (wndclass) ;
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
     wndclass.hIconSm       = LoadIcon (NULL, IDI_APPLICATION) ;
 
     RegisterClassEx (&wndclass) ;
 
     hwnd = CreateWindow (szAppName,         // window class name
                    "The Hello Program",     // window caption
                    WS_OVERLAPPEDWINDOW,     // window style
                    CW_USEDEFAULT,           // initial x position
                    CW_USEDEFAULT,           // initial y position
                    CW_USEDEFAULT,           // initial x size
                    CW_USEDEFAULT,           // initial y size
                    NULL,                    // parent window handle
                    NULL,                    // window menu handle
                    hInstance,               // program instance handle
                    NULL) ;                  // creation parameters
 
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
 
     while (GetMessage (&msg, NULL, 0, 0))
          {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
          }
     return msg.wParam ;
     }
 
LRESULT CALLBACK WndProc (HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
     {
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;
 
     switch (iMsg)
          {
          case WM_CREATE :
               PlaySound ("hellowin.wav", NULL, SND_FILENAME | SND_ASYNC) ;
               return 0 ;
 
          case WM_PAINT :
               hdc = BeginPaint (hwnd, &ps) ;
 
               GetClientRect (hwnd, &rect) ;
 
               DrawText (hdc, "Hello, Windows 95!", -1, &rect,
                         DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
 
               EndPaint (hwnd, &ps) ;
               return 0 ;
 
          case WM_DESTROY :
               PostQuitMessage (0) ;
               return 0 ;
          }
 
     return DefWindowProc (hwnd, iMsg, wParam, lParam) ;
     }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2018, 22:30
Ответы с готовыми решениями:

Создается окно и тут же закрывается. Как заставить окно оставаться рабочим открытым?
Как заставить окно оставаться рабочим открытым? Скопировал с одного исходника код (с++ WinApi) для создания окна. И оно сразу...

Не создаётся окно
Я пытаюсь сделать создания окна с контекстом OpenGL, сделал класс с функциями создания\уничтожения. но окно не создаётся. Программа...

Не создается окно
вот регистрация класса окна WNDCLASSEX wc = { sizeof( WNDCLASSEX ), CS_CLASSDC, MsgProc, 0L, 0L, ...

7
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
12.01.2018, 22:39
Оно строки wchar_t просит а не char
0
 Аватар для Богдан всепытный
10 / 18 / 4
Регистрация: 10.11.2017
Сообщений: 283
12.01.2018, 22:48  [ТС]
а wchar_t это что???

Добавлено через 6 минут
Исправил вот так

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
#include <windows.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, int iCmdShow)
{
    static wchar_t szAppName[] = L"HelloWin";
    HWND        hwnd;
    MSG         msg;
    WNDCLASSEX  wndclass;
 
    wndclass.cbSize = sizeof(wndclass);
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;
    wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 
    RegisterClassEx(&wndclass);
 
    hwnd = CreateWindow(szAppName,         // window class name
        "The Hello Program",     // window caption
        WS_OVERLAPPEDWINDOW,     // window style
        CW_USEDEFAULT,           // initial x position
        CW_USEDEFAULT,           // initial y position
        CW_USEDEFAULT,           // initial x size
        CW_USEDEFAULT,           // initial y size
        NULL,                    // parent window handle
        NULL,                    // window menu handle
        hInstance,               // program instance handle
        NULL);                   // creation parameters
 
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
 
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    HDC         hdc;
    PAINTSTRUCT ps;
    RECT        rect;
 
    switch (iMsg)
    {
    case WM_CREATE:
        PlaySound(L"hellowin.wav", NULL, SND_FILENAME | SND_ASYNC);
        return 0;
 
    case WM_PAINT:
        hdc = BeginPaint(hwnd, &ps);
 
        GetClientRect(hwnd, &rect);
 
        DrawText(hdc, L"Hello, Windows 95!", -1, &rect,
            DT_SINGLELINE | DT_CENTER | DT_VCENTER);
 
        EndPaint(hwnd, &ps);
        return 0;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
 
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
Вот сборка:

1>------ Сборка начата: проект: Проект1, Конфигурация: Debug Win32 ------
1> Source.cpp
1>v:\visual studio\проекты\проект1\проект1\source.cp p(38): error C2664: "HWND CreateWindowExW(DWORD,LPCWSTR,LPCWSTR,DW ORD,int,int,int,int,HWND,HMENU,HINSTANCE ,LPVOID)": невозможно преобразовать аргумент 3 из "const char [18]" в "LPCWSTR"
1> v:\visual studio\проекты\проект1\проект1\source.cp p(38): note: Типы, на которые указывают указатели, не связаны; для преобразования требуется reinterpret_cast, приведение в стиле С или приведение в стиле функции
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
12.01.2018, 22:51
Цитата Сообщение от Богдан Хакер Посмотреть сообщение
а wchar_t это что???
это как char только wchar_t. 2-байтовые символы для уникода. т.е. все сhar замени на wchar_t перед всеми строками поставь L, т.е. к примеру L"HelloWin"

Добавлено через 2 минуты
"The Hello Program", тоже L поставь
1
 Аватар для Богдан всепытный
10 / 18 / 4
Регистрация: 10.11.2017
Сообщений: 283
12.01.2018, 23:10  [ТС]
Если поставить L то лезет следующее:

1>------ Сборка начата: проект: Проект1, Конфигурация: Debug Win32 ------
1> Source.cpp
1>Source.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__PlaySoundW@12 в функции "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
1>V:\Visual Studio\проекты\Проект1\Debug\Проект1.exe : fatal error LNK1120: неразрешенных внешних элементов: 1
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0
 Аватар для Fulcrum_013
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
12.01.2018, 23:16
Лучший ответ Сообщение было отмечено Богдан всепытный как решение

Решение

Добавь в проект (в дерево проекта в SolutionExplore не в код) Winmm.lib

Добавлено через 3 минуты
или после инклюдов добавь строчку
C++
1
#pragma comment(lib,"Winmm.lib")
но такой код поймет только студия другие компиляторы нет
2
 Аватар для Богдан всепытный
10 / 18 / 4
Регистрация: 10.11.2017
Сообщений: 283
12.01.2018, 23:16  [ТС]
работает!!! А что за winmm??? Спасибо!!!!!!!!!!
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,965
Записей в блоге: 232
18.01.2018, 23:23
Цитата Сообщение от Богдан Хакер Посмотреть сообщение
А что за winmm?
Это библиотека, в которой находится реализация метода PlaySound

В документации на MSDN на PlaySound написано в самом низу страницы, что требуется Winmm.lib

Цитата Сообщение от Богдан Хакер Посмотреть сообщение
L"Hello, Windows 95!"
Можно ещё так:
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
#include <windows.h>
#include <tchar.h>
 
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, int iCmdShow)
{
    LPCTSTR szAppName = _T("HelloWin");
    HWND        hwnd;
    MSG         msg;
    WNDCLASSEX  wndclass;
 
    wndclass.cbSize = sizeof(wndclass);
    wndclass.style = CS_HREDRAW | CS_VREDRAW;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = szAppName;
    wndclass.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
 
    RegisterClassEx(&wndclass);
 
    hwnd = CreateWindow(szAppName,  // window class name
        _T("The Hello Program"),    // window caption
        WS_OVERLAPPEDWINDOW,        // window style
        CW_USEDEFAULT,              // initial x position
        CW_USEDEFAULT,              // initial y position
        CW_USEDEFAULT,              // initial x size
        CW_USEDEFAULT,              // initial y size
        NULL,                       // parent window handle
        NULL,                       // window menu handle
        hInstance,                  // program instance handle
        NULL);                      // creation parameters
 
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
 
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    HDC         hdc;
    PAINTSTRUCT ps;
    RECT        rect;
 
    switch (iMsg)
    {
        case WM_CREATE:
            PlaySound(_T("chicken.wav"), NULL, SND_FILENAME | SND_ASYNC);
            return 0;
 
        case WM_PAINT:
            hdc = BeginPaint(hwnd, &ps);
 
            GetClientRect(hwnd, &rect);
 
            DrawText(hdc, _T("Hello, Windows 95!"), -1, &rect,
                DT_SINGLELINE | DT_CENTER | DT_VCENTER);
 
            EndPaint(hwnd, &ps);
            return 0;
 
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
    }
 
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2018, 23:23
Помогаю со студенческими работами здесь

Не создаётся окно
Добрый день, подскажите пожалуйста, почему не создаётся окно: hwndChildForm = CreateWindowEx(dwExStyle, lpChildClassName,...

Не создается всплывающее окно
У меня абсолютно непонятная ошибка. Я не могу создать всплывающее окно. Я вроде бы всё сделал правильно, зарегистрировал класс, использовал...

Не создается диалоговое окно
Всем привет! Помогите новичку. Работаю в Dev-Cpp 5.11. Пытаюсь создать простое диалоговое окно с кнопкой, но не получается, появляется...

WinApi Не создается окно
Не знаю что произошло, но через пару запусков программы перестало создаваться окно. #include &lt;Windows.h&gt; const char...

Не создается дочернее окно
Почему не создается дочернее окно? HINSTANCE hInstance; HWND hDataWin; // Дескриптор...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru