Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
#1

RegisterClassEx возвращает 0 - C++

26.07.2014, 13:53. Просмотров 239. Ответов 1
Метки нет (Все метки)

Здоровеньки булы.
Не могу зарегистрировать класс окна. RegisterClassEx возвращает 0, GetLasterror даёт результат 87 (Параметр задан неверно).
Никак не пойму, что именно заданно не так.
Unicode отключён, все функции версии A.
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
class Window {
        HINSTANCE Hinstance;
        LPCTSTR ClassName;
        ATOM ClassType;
        HWND Hwnd;
        static LRESULT CALLBACK WindProc(HWND Hwnd, UINT Msg, WPARAM WParam, LPARAM LParam) {
            return DefWindowProc(Hwnd, Msg, WParam, LParam);
        };
    public:
        Window(HINSTANCE Hinst, LPCTSTR Name, WindowStyle WStyle = WindowStyle());
        void Run();
    };
 
    Window::Window(HINSTANCE Hinst, LPCTSTR Name, WindowStyle WStyle)
        : Hinstance(Hinst), ClassName(Name), ClassType(0) {
        WNDCLASSEX WC;
        WC.cbSize = sizeof(WNDCLASSEX);
        WC.style = CS_HREDRAW | CS_VREDRAW;
        WC.lpfnWndProc = Window::WindProc;
        WC.cbClsExtra = 0;
        WC.cbWndExtra = 0;
        WC.hInstance = Hinst;
        WC.hIconSm = LoadIcon(nullptr, IDI_APPLICATION);
        WC.hCursor = LoadCursor(nullptr, IDC_ARROW);
        WC.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
        WC.lpszMenuName = nullptr;
        WC.lpszClassName = Name;
        WC.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
        ClassType = RegisterClassEx(&WC);
        Hwnd = CreateWindow(Name, 0, WStyle.GetStyle(), 0, 0, 0, 0, nullptr, nullptr, Hinstance, 0);
    }
 
    void Window::Run() {
        ShowWindow(Hwnd, SW_SHOWNORMAL);
        MSG msg;
        while(GetMessage(&msg, NULL, 0, 0)) {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2014, 13:53     RegisterClassEx возвращает 0
Посмотрите здесь:

Что возвращает конструктор? C++
exp(x) возвращает 0 C++
C++ Функция возвращает объект
Функция возвращает auto C++
Не верно возвращает массив C++
C++ Метод не возвращает значение
C++ Функция не возвращает значение
Функция не возвращает значение C++
Функция не возвращает значение C++
Деление возвращает 0 (codeblocks) C++
BASS_Init возвращает FALSE C++
C++ Не возвращает значение

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volvo
Супер-модератор
Эксперт Pascal
 Аватар для volvo
22346 / 14523 / 4119
Регистрация: 22.10.2011
Сообщений: 25,725
Записей в блоге: 3
26.07.2014, 14:29     RegisterClassEx возвращает 0 #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
hIconSm инициализируется дважды, а hIcon - ни разу.
Yandex
Объявления
26.07.2014, 14:29     RegisterClassEx возвращает 0
Ответ Создать тему
Опции темы

Текущее время: 20:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru