Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72

Функция CreateWindow возвращает 0. Не могу найти ошибку в коде(

27.06.2021, 14:33. Показов 1569. Ответов 10
Метки с++ (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Подскажите пожалуйста , где у меня ошибка в коде? Почему CreateWindow возвращает 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
#include <windows.h>
 
LRESULT CALLBACK WndProc(_In_ HWND hWnd, _In_ UINT message, _In_ WPARAM wParam, _In_ LPARAM lParam) {
    switch (message)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
    }
    return 0;
}
int CALLBACK WinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPSTR lpCmdLine, _In_ int nCmdShow) {
    WNDCLASSEX wc;
 
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = L"MyAppClass";
    wc.hIconSm = LoadIcon(wc.hInstance, IDI_APPLICATION);
    if (!RegisterClassEx(&wc)) {
        return EXIT_FAILURE;
    }
    else {
        HWND hWnd = CreateWindow(wc.lpszClassName,L"Byte++",WS_OVERLAPPEDWINDOW,0,0,500,600,NULL,NULL,wc.hInstance,NULL);
        if (!hWnd) {
            return EXIT_FAILURE;
        }
        else {
            ShowWindow(hWnd, nCmdShow);
            UpdateWindow(hWnd);
            MSG msg;
            while (GetMessage(&msg,NULL,0,0)) {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            return (int)msg.wParam;
        }
    }
}
Миниатюры
Функция CreateWindow возвращает 0. Не могу найти ошибку в коде(  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2021, 14:33
Ответы с готовыми решениями:

Двумерный массив. Поиск нулей.Не могу найти ошибку ошибку в коде
Вот,например массив 5 5 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 считываются два числа m и n и далее в выходной...

Не могу найти ошибку в коде
Всем привет. Я готовился к егэ по информатике и решал задачу по программирования на шарпе. using System; namespace ConsoleApp6 { ...

Не могу найти ошибку в коде
Помогите пожалуйста Объясните где ошибка Dim n As String Private Sub Command1_Click() Select Case n Case &quot;+&quot; ...

10
19496 / 10101 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
27.06.2021, 14:51
Цитата Сообщение от Shert Посмотреть сообщение
Почему CreateWindow возвращает 0.
GetLastError-то используйте, в самом деле, ну
0
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
27.06.2021, 15:04  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
GetLastError-то используйте, в самом деле, ну
Такс, и что мне делать с этим НУЛЁМ в коде ошибки ?
Миниатюры
Функция CreateWindow возвращает 0. Не могу найти ошибку в коде(  
0
19496 / 10101 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
27.06.2021, 15:13
Цитата Сообщение от Shert Посмотреть сообщение
Такс, и что мне делать с этим НУЛЁМ в коде ошибки ?
Надо примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        HWND hWnd = CreateWindow(wc.lpszClassName,L"Byte++",WS_OVERLAPPEDWINDOW,0,0,500,600,NULL,NULL,wc.hInstance,NULL);
        if (!hWnd) {
            DWORD Error = GetLastError();
            LPVOID lpMsgBuf;
            FormatMessage(
                  FORMAT_MESSAGE_ALLOCATE_BUFFER | 
                  FORMAT_MESSAGE_FROM_SYSTEM |
                  FORMAT_MESSAGE_IGNORE_INSERTS,
                  NULL,
                  Error,
                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                  (LPTSTR) &lpMsgBuf,
                  0, NULL );
            MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK);
            LocalFree(lpMsgBuf);
         
            return EXIT_FAILURE;
        }
0
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
27.06.2021, 15:34  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Надо примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        HWND hWnd = CreateWindow(wc.lpszClassName,L"Byte++",WS_OVERLAPPEDWINDOW,0,0,500,600,NULL,NULL,wc.hInstance,NULL);
        if (!hWnd) {
            DWORD Error = GetLastError();
            LPVOID lpMsgBuf;
            FormatMessage(
                  FORMAT_MESSAGE_ALLOCATE_BUFFER | 
                  FORMAT_MESSAGE_FROM_SYSTEM |
                  FORMAT_MESSAGE_IGNORE_INSERTS,
                  NULL,
                  Error,
                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                  (LPTSTR) &lpMsgBuf,
                  0, NULL );
            MessageBox(NULL, (LPCTSTR)lpMsgBuf, TEXT("Error"), MB_OK);
            LocalFree(lpMsgBuf);
         
            return EXIT_FAILURE;
        }
Хм, очень странно Ошибка показываться не хочет (
Миниатюры
Функция CreateWindow возвращает 0. Не могу найти ошибку в коде(  
0
19496 / 10101 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
27.06.2021, 15:51
Shert, этот код нужно поместить под условие. Просто сделайте в точности как у меня в примере.
0
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
27.06.2021, 15:56  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Shert, этот код нужно поместить под условие. Просто сделайте в точности как у меня в примере.
Увы, безрезультатно
Миниатюры
Функция CreateWindow возвращает 0. Не могу найти ошибку в коде(  
0
19496 / 10101 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
27.06.2021, 15:57
Цитата Сообщение от Shert Посмотреть сообщение
Увы
Так это не для результата, а что бы просто правильно было.
0
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
27.06.2021, 15:59  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Так это не для результата, а что бы просто правильно было.
Я понимаю. Но в решении моей проблемы , эти действия не помогли ( Информацию о своей ошибке я так и не получил.
0
19496 / 10101 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
27.06.2021, 16:04
Лучший ответ Сообщение было отмечено Shert как решение

Решение

Цитата Сообщение от Shert Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
LRESULT CALLBACK WndProc(_In_ HWND hWnd, _In_ UINT message, _In_ WPARAM wParam, _In_ LPARAM lParam) {
    switch (message)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
    }
    return 0;
}
В общем, у вас неправильно написана WndProc.
Надо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
LRESULT CALLBACK WndProc(_In_ HWND hWnd, _In_ UINT message, _In_ WPARAM wParam, _In_ LPARAM lParam) {
    LRESULT result = 0;
    switch (message)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default: 
            result = DefWindowProc(hWnd, message, wParam, lParam);
            break;
    }
    return result;
}
Добавлено через 27 секунд
Цитата Сообщение от Shert Посмотреть сообщение
Информацию о своей ошибке я так и не получил.
Зато я получил. Это, в данном случае, более важно.

Добавлено через 3 минуты
Цитата Сообщение от Shert Посмотреть сообщение
Но в решении моей проблемы , эти действия не помогли
А никто и не обещал, что вам тут помогут с первого ответа. Нужно терпение. Иногда нужно прямо таки вытаскивать клещами из ТС правильную постановку вопроса
1
26 / 1 / 1
Регистрация: 27.06.2021
Сообщений: 72
27.06.2021, 16:09  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
В общем, у вас неправильно написана WndProc.
Надо так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
LRESULT CALLBACK WndProc(_In_ HWND hWnd, _In_ UINT message, _In_ WPARAM wParam, _In_ LPARAM lParam) {
    LRESULT result = 0;
    switch (message)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default: 
            result = DefWindowProc(hWnd, message, wParam, lParam);
            break;
    }
    return result;
}
Добавлено через 27 секунд

Зато я получил. Это, в данном случае, более важно.

Добавлено через 3 минуты

А никто и не обещал, что вам тут помогут с первого ответа. Нужно терпение. Иногда нужно прямо таки вытаскивать клещами из ТС правильную постановку вопроса
Спасибо большое. Моя тупость опять подвела: не дочитал документацию на MSDN
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.06.2021, 16:09
Помогаю со студенческими работами здесь

Не могу найти ошибку в коде
Привет всем. У меня не получается построить решение. Вот код. #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; ...

Не могу найти ошибку в коде
Нужно сделать игру из 26 блоков в блоке размером 6 на 6 вроде все сделал поставил клик и все,но после нажатия на цифру 1(нужно нажать по...

Не могу найти ошибку в коде
Код вместо измененного массива выдает неправильные значения. Должен выдавать значение измененного массива 0 или 1, а выдает 4198800, 32766...

Не могу найти ошибку в коде
Написал программу для вычисления функция с неизвестным кол-вом повторений, но запускаться она не хочет, помогите разобраться с проблемой,...

Не могу найти ошибку в коде
Здравствуйте уважаемые! Помогите пожалуйста мне. Что не так в этой части скрипта: if (frm.num1.checked == true) { num1 =...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru