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

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

Восстановить пароль Регистрация
 
Бендерродригез
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
26.07.2014, 13:53     RegisterClassEx возвращает 0 #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++ разработайте функцию типа float, что возвращает сумму двух входных параметров, если значения первого параметру парное, иначе возвращает их разницу
exp(x) возвращает 0 C++
DLL не возвращает строку C++
C++ Функция возвращает структуру
Функция не возвращает false C++
Функция возвращает auto C++
C++ noexcept возвращает значение?
Не верно возвращает массив C++

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

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

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