首页 > 代码库 > 一次莫名其妙的CreateWindow失败的事故

一次莫名其妙的CreateWindow失败的事故

---恢复内容开始---

  在测试解决某个问题的时候, 创建了一个简单的窗口像这样的

 1 WNDCLASS wnd;
 2 
 3 wnd.style = CS_HREDRAW|CS_VREDRAW;
 4 wnd.hInstance = hInstance;
 5 .
 6 .
 7 .
 8 .
 9 .
10 .
11 .
12 wnd.lpszMenuName = NULL;
13 
14 
15 RegisterClass(&wnd);
16 DWORD error = ::GetLastError();
17 HWND hwnd = CreateWindowW(....);
18 error = ::GetLasterror();

一直到注册窗口的时候都是正常的

但是CreateWindow之后返回的一直都是空句柄

GetLastError返回的也是0

这感觉没办法调处问题在哪里

遂上网查之

 

从网上学习到:

CreateWindow的时候,会执行一次设置的WndProc, 并且要返回TRUE

看了一下自己的WndProc,确实没有返回TRUE

加上default: return DefWindowProc(...);

就ok了

 

一次莫名其妙的CreateWindow失败的事故