在 windows API 上创建 Child window
Create Child window on windows API
我正在尝试将 child window 添加到我的主程序 window,但是函数 CreatWindow 抛出一个异常,提示无法访问 0x00000 处的地址,但是当我尝试创建一个按钮时它工作正常,我跟踪了变量并且 none 其中的变量为空,这里是:
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函数之后,这很奇怪,因为调试器显示none个值(指针)为null。
是否因为 lpfnWndProc
为 NULL 而失败?
我正在尝试将 child window 添加到我的主程序 window,但是函数 CreatWindow 抛出一个异常,提示无法访问 0x00000 处的地址,但是当我尝试创建一个按钮时它工作正常,我跟踪了变量并且 none 其中的变量为空,这里是:
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函数之后,这很奇怪,因为调试器显示none个值(指针)为null。
是否因为 lpfnWndProc
为 NULL 而失败?