Создать дочернее окно в Windows API

Я пытаюсь добавить дочернее окно в мое главное окно, но функция CreatWindow создает исключение, говоря, что не может получить доступ к адресу в 0x00000, но работает нормально, когда я пытаюсь создать кнопку, я отслеживал переменные и ничего из них нулевые, вот оно:

WNDCLASSEX windowClass;

windowClass.cbSize = sizeof(WNDCLASSEX);
windowClass.hInstance = hInstance;
windowClass.lpfnWndProc = NULL;
windowClass.lpszClassName = className;
windowClass.style = CS_HREDRAW | CS_VREDRAW;
windowClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
windowClass.hCursor = LoadCursor(NULL, IDC_ARROW);
windowClass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
windowClass.hIconSm = LoadIcon(NULL, IDI_WINLOGO);
windowClass.cbClsExtra = 0;
windowClass.cbWndExtra = 0;
windowClass.lpszMenuName = NULL;

if (!RegisterClassEx(&windowClass)){
return;
}

window = CreateWindowEx(0,
className,
(LPCTSTR)NULL,
WS_CHILD | WS_BORDER,
0, 0, 0, 0,
owner,
(HMENU)ID,
hInstance,
NULL);

Приведенный выше код дает ошибку, важные переменные приходят отсюда:

    gl = new OpenGLContainer("hellogl", hInstance);
addChild(gl);

первым параметром является className, конструктор выполняет только атрибуцию, вызов метода addChild gl-> setOwner (window_handler) и gl-> create (), который является первым фрагментом кода, который я опубликовал.

Я также видел список стеков, и проблема в том, что после входа программы в функцию CreateWindow это очень странно, поскольку отладчик показывает, что ни одно из значений (указателей) не является нулевым. Спасибо за помощь

0

Решение

Может ли это быть неудачным, потому что lpfnWndProc нулевой?

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector