用CreateWindow创建窗口时的注意事项

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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里找原因,白忙活了半天。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航