Win32 ReleaseDC和DestroyWindow返回0

时间:2013-01-27 20:56:39

标签: c++ winapi

我有一个用CS_OWNDC样式创建的单个窗口用于我正在编码的引擎并且它正确显示,但是当我关闭程序并且我调用ReleaseDC(hWnd,hDC)时,该函数总是返回0(和根据MSDN,这意味着它无法发布)。 DestroyWindow(hWnd)也返回0。

我在创建窗口期间调用GetDC(hWnd)。

奇怪的是,如果我通过消息传递函数,我只会收到此错误,即使它没有内部编码。

我的主要代码如下:

WindowManager windowManager;
HWND mainWindow = windowManager.Initialize("Title", "ClassName", 1024, 768, 32, WindowProc);

MSG msg;
while(true)
{
    if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
    {
        if(msg.message == WM_QUIT) { break; }
        else
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}
windowManager.Clear(); //this calls ReleaseDC(hWnd, DC) and DestroyWindow(hWnd) among other release codes

我不明白的是,如果我评论整个 while 循环,我不会得到释放或破坏窗口错误。 调用 GetLastError()也会给我一个0。 在MSDN上,它说DestroyWindow必须从同一个线程调用,但我不编码任何多线程函数,所以我不认为是这种情况。

导致这种情况的原因是什么?

0 个答案:

没有答案