Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492

Почему не регистрируется класс окна через WinAPI в консольном приложении?

29.01.2026, 00:04. Показов 411. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Имеется консольное приложение, в котором необходимо создать окно через WinAPI.
Делаю это в отдельном потоке, запускаемом через std::thread, однако не могу зарегистрировать класс окна -
получаю ошибку:

ERROR_MOD_NOT_FOUND
126 (0x7E)
The specified module could not be found.

Вопрос: о каком ненайденном модуле здесь идет речь (hInst получаю с параметром NULL - т.е. это д.б. hInst exe-шника...) ?

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
// порядок вызова в процедуре потока:
void MonitorWindow_Thread(WindowMonitor_CLASS* wm) {
 
    assert(wm != nullptr);
 
    bool ok_init_inst = wm->InitInstance();
    CHECK_ERR(ok_init_inst);
 
    ATOM res_reg = wm->RegisterWindowClass();
    bool ok_reg = (res_reg != 0);
    CHECK_ERR(ok_init_inst);
    ...
} // MonitorWindow_Thread
 
// вот, что вызываю:
 
bool WindowMonitor_CLASS::InitInstance() {
    hInst = GetModuleHandle(NULL);                    здесь hInst нормальный - запомнен в поле класса
    return (hInst != NULL);
}
 
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
 
ATOM WindowMonitor_CLASS::RegisterWindowClass() {
    WNDCLASSEXW wcex;
 
    ZeroMemory(&wcex, sizeof(wcex));
 
    wcex.cbSize = sizeof(wcex);
 
    wcex.style = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc = WndProc;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;
    wcex.hInstance = hInst;                                 здесь hInst тот, что был получен выше, выглядит нормально
 
    //wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_PROCMON4));
    wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
    wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
    //wcex.lpszMenuName = MAKEINTRESOURCEW(IDC_PROCMON4);
    wcex.lpszClassName = szWindowClass;
    //wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    ATOM res = RegisterClassExW(&wcex);
    DWORD ErrCode = GetLastError();                 здесь ошибка = 126 !
 
    return res;
}
 
// ключевые поля класса:
 
class WindowMonitor_CLASS : public AbstractMonitor_CLASS {
    friend void MonitorWindow_Thread(WindowMonitor_CLASS* wm);
 
    ATOM WindowClass = 0;                   // зарегистрированный класс
    HINSTANCE hInst = NULL;
    HWND WinHandle = NULL;              // Окно монитора
    int x1 = 0;
    int y1 = 0;
    int x2 = 0;
    int y2 = 0;
 
    // статус создания окна
    bool WinCreateError = false;            // Ошибка при создании окна
    bool WinCreated = false;                // Окно создано успешно
    
    // класс окна
    const WCHAR* szWindowClass = L"MyClass22";
    const WCHAR* szTitle = L"Monitor_22";
 
   ...
Добавлено через 4 минуты
Извиняюсь за беспокойство - прошу модератора удалить тему.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.01.2026, 00:04
Ответы с готовыми решениями:

Не регистрируется класс окна
Всем привет Непонятная ошибка. Сама программа компилируется а вот при запуске выводит сообщение...

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

Не регистрируется класс окна
Добрый день, подскажите пожалуйста, почему выдаёт ошибку "Не получилось зарегистрировать класс!" ?...

1
Злостный нарушитель
 Аватар для Verevkin
10359 / 5774 / 1274
Регистрация: 12.03.2015
Сообщений: 26,686
29.01.2026, 09:11
Остальное где? Твой огрызок не скомпилить, чтобы завести под дебаггером.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2026, 09:11
Помогаю со студенческими работами здесь

Использовать WINAPI функцию StrToIntEx в консольном приложении
Нужно в консольном приложении читать 16ричную строку в виде string и переводить её в число, руками...

Как в консольном приложении завести либу для WinAPI? (magnification.h)
#include "stdafx.h" #include "windows.h" #include "iostream" #include "strsafe.h" ...

Не регистрируется класс
Не подскажете где ошибка в данной сборке

Как избавится от родительского консольного окна при создание WinAPI окна
добрый день. использую DEV-C++, но так понимаю разницы нет, какая у нас IDE. создаём просто...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru