我正在尝试在主窗口中添加子窗口,但是函数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函数后,这非常奇怪,因为调试器显示所有值(指针)都不为空。谢谢你的帮助

最佳答案

因为lpfnWndProc为NULL会失败吗?

关于c++ - 在Windows API上创建子窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33838120/

10-14 19:13
查看更多