|
|
用CreateWindow创建窗口时的注意事项 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站 |
5.1前,为了模拟一个程序的测试,从那个程序里copy出来一段代码,功能就是调用CreateWindow创建一个窗口;但是怎么也通过不了,CreateWindow老是返回NULL;查了MSDN,上面的代码也基本一样,没找到任何问题,郁闷的要命。 STDMETHODIMP CSetReady::Init( long hInst) { HWND s_wndPump = NULL; WNDCLASS wc; wc.style = 0; wc.lpfnWndProc = PumpWndProc; wc.cbClsExtra = wc.cbWndExtra = 0; wc.hInstance = (HINSTANCE)hInst; wc.hIcon = NULL; wc.hCursor = NULL; wc.hbrBackground = NULL; wc.lpszMenuName = NULL; wc.lpszClassName = _T("Test_Window"); RegisterClass(&wc); s_wndPump = CreateWindow(wc.lpszClassName, NULL, WS_DISABLED, 0, 0, 0, 0, NULL, NULL, wc.hInstance, NULL); return S_OK; } 原来问题出在传给WNDCLASS的窗口处理函数PumpWndProc上;调用CreateWindow时,CreateWindow会调用一次PumpWndProc,并且要求PumpWndProc返回TRUE。由于代码是copy过来的所以调试CreateWindow,没注意PumpWndProc的返回是什么,造成一直在CSetReady::Init里找原因,白忙活了半天。
|
|
相关文章:相关软件: |
|