导致CreateWindow创建窗口失败的一种原因
2013-05-28 18:55
344 查看
导语:在封装一个基本的Frame显示窗口时遇到CreateWindow函数调用成功,但是窗口总是不显示。
CreateWindow返回NULL,GetLastError()返回0
经过网上搜集资料和单步调试发现问题
在程序调用CreateWindow函数之前会首先调用WndProc具体原因暂时不详,(我的程序这里好像是会调用三次WndProc,可能是系统发送的消息),然后会调用CreateWindow,所以当前几次调用WndProc时需要返回TURE才会成功创建window。
这是之前的WndProc函数代码
改为
即可,修改后成功创建window的代码为
将默认的消息传给DefWindowProc来处理,并返回其处理后的结果。
CreateWindow返回NULL,GetLastError()返回0
经过网上搜集资料和单步调试发现问题
在程序调用CreateWindow函数之前会首先调用WndProc具体原因暂时不详,(我的程序这里好像是会调用三次WndProc,可能是系统发送的消息),然后会调用CreateWindow,所以当前几次调用WndProc时需要返回TURE才会成功创建window。
这是之前的WndProc函数代码
LRESULT CALLBACK MYFrame::__WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { MYFrame *pObj = ( MYFrame *)::GetWindowLong( hWnd, GWL_USERDATA); PAINTSTRUCT ps; HDC hdc; long xPos; long yPos; switch( uMsg ) { case WM_PAINT: hdc = ::BeginPaint(hWnd, &ps); ::EndPaint(hWnd, &ps); break; case WM_DESTROY: ::PostQuitMessage(0); break; default: ::DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; }将
default: ::DefWindowProc(hWnd, uMsg, wParam, lParam);
改为
default: return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
即可,修改后成功创建window的代码为
LRESULT CALLBACK MYFrame::__WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { MYFrame *pObj = ( MYFrame *)::GetWindowLong( hWnd, GWL_USERDATA); PAINTSTRUCT ps; HDC hdc; long xPos; long yPos; switch( uMsg ) { case WM_PAINT: hdc = ::BeginPaint(hWnd, &ps); ::EndPaint(hWnd, &ps); break; case WM_DESTROY: ::PostQuitMessage(0); break; default: return ::DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; }
将默认的消息传给DefWindowProc来处理,并返回其处理后的结果。
相关文章推荐
- 关于创建COM组件时 返回 0x80040154 导致失败的一种情况
- 项目经理案头手册学习系列【16】——导致项目失败的原因
- mongodump 失败且导致mongo服务挂掉【本质原因,wt文件损坏】
- laravel 创建路由失败原因
- servlet-api.jar包冲突导致项目启动失败原因
- tomcat启动成功,访问主页失败的一种原因
- OpenGl Superbible示例代码中glfwCreateWindow不能成功创建窗口问题
- MFC 动态链接库(DLL)中创建窗口失败
- springmvc+mybatis 到注入失败的一种原因及解决方案
- "易语言.尘土"界面库2.0版源代码分析(2):创建窗口(CreateWindow)
- 导致人生失败的31个原因
- 外键创建失败原因
- MVC 成功创建了数据库,但是数据库对象创建失败[此引用关系将导致不允许的周期性引用]
- CreateWindow失败的一个原因
- 一种创建子视图窗口的办法
- Qt 数据库创建表失败原因之数据库关键字
- vc CreateWindow创建窗口控件及设置字体
- spring+mybatis 注入properties文件中属性失败导致datasource加载失败的原因和解决
- 创建表空间数据文件过大导致失败
- MySQL用户权限导致的创建Trigger失败