CreateWindow返回NULL,而且GetLastError()也返回0,代码如下:

WNDCLASSEX wc =
 {
  sizeof( WNDCLASSEX ), CS_CLASSDC, NULL/*gWndProc 注意这里直接把它写成 NULL ,贪方便啊.*/, 
  0L, 0L,
  GetModuleHandle( NULL ), NULL, NULL, NULL, NULL,
  classname, NULL
 };
 RegisterClassEx( &wc );

HWND hWnd = CreateWindow( classname, wndname,
  WS_DLGFRAME | WS_SYSMENU, 0, 0,m_ScreenWidth, m_ScreenHeight,
  ::GetDesktopWindow(), NULL,wc.hInstance, NULL );

 
把窗口回调函数写成了 NULL ,发现窗口没有显示出来。。,CreateWindow 函数调用 失败...
笨蛋,窗口回调函数都没有.那么消息流向呢.. 这样当然不行的啊..
 
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. LRESULT CALLBACK WinSunProc(
  5. HWND hwnd, // handle to window
  6. UINT uMsg, // message identifier
  7. WPARAM wParam, // first message parameter
  8. LPARAM lParam // second message parameter
  9. );
  10.  
  11. int WINAPI WinMain(
  12. HINSTANCE hInstance, // handle to current instance
  13. HINSTANCE hPrevInstance, // handle to previous instance
  14. LPSTR lpCmdLine, // command line
  15. int nCmdShow // show state
  16. )
  17. {
  18. WNDCLASS wndcls;
  19. wndcls.cbClsExtra=;
  20. wndcls.cbWndExtra=;
  21. wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
  22. wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);
  23. wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);
  24. wndcls.hInstance=hInstance;
  25. wndcls.lpfnWndProc=WinSunProc;
  26. wndcls.lpszClassName="sunxin2006";
  27. wndcls.lpszMenuName=NULL;
  28. wndcls.style=CS_HREDRAW | CS_VREDRAW;
  29. RegisterClass(&wndcls);
  30.  
  31. HWND hwnd;
  32. hwnd=CreateWindow("sunxin2006","http://www.sunxin.org",WS_OVERLAPPEDWINDOW,
  33. ,,,,NULL,NULL,hInstance,NULL);
  34.  
  35. ShowWindow(hwnd,SW_SHOWNORMAL);
  36. UpdateWindow(hwnd);
  37.  
  38. MSG msg;
  39. while(GetMessage(&msg,NULL,,))
  40. {
  41. TranslateMessage(&msg);
  42. DispatchMessage(&msg);
  43. }
  44. return msg.wParam;
  45. }
  46.  
  47. LRESULT CALLBACK WinSunProc(
  48. HWND hwnd, // handle to window
  49. UINT uMsg, // message identifier
  50. WPARAM wParam, // first message parameter
  51. LPARAM lParam // second message parameter
  52. )
  53. {
  54. switch(uMsg)
  55. {
  56. case WM_CHAR:
  57. char szChar[];
  58. sprintf(szChar,"char code is %d",wParam);
  59. MessageBox(hwnd,szChar,"char",);
  60. break;
  61. case WM_LBUTTONDOWN:
  62. MessageBox(hwnd,"mouse clicked","message",);
  63. HDC hdc;
  64. hdc=GetDC(hwnd);
  65. TextOut(hdc,,,"程序员之家",strlen("程序员之家"));
  66. //ReleaseDC(hwnd,hdc);
  67. break;
  68. case WM_PAINT:
  69. HDC hDC;
  70. PAINTSTRUCT ps;
  71. hDC=BeginPaint(hwnd,&ps);
  72. TextOut(hDC,,,"http://www.sunxin.org",strlen("http://www.sunxin.org"));
  73. EndPaint(hwnd,&ps);
  74. break;
  75. case WM_CLOSE:
  76. if(IDYES==MessageBox(hwnd,"是否真的结束?","message",MB_YESNO))
  77. {
  78. DestroyWindow(hwnd);
  79. }
  80. break;
  81. case WM_DESTROY:
  82. PostQuitMessage();
  83. break;
  84. default:
  85. return DefWindowProc(hwnd,uMsg,wParam,lParam);
  86. }
  87. return ;
  88. }

CreateWindow的出错解决的更多相关文章

  1. make menuconfig出错解决方法

     make menuconfig出错解决方法 2011-06-11 22:22:49 分类: 系统运维 错误现象: make menuconfig In file included from scri ...

  2. vs连接mysql出错解决方法

    vs连接mysql出错解决方法 先按以下的步骤配置一下: **- (1)打开VC6.0 工具栏Tools菜单下的Options选项.在Directories的标签页中右边的"Show dir ...

  3. paip.vs2010 或.net 4.0安装出错解决大法.

    paip.vs2010 或.net 4.0安装出错解决大法. 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.cs ...

  4. 黄聪:C#使用Application.Restart重启程序出错解决办法

    调用 Application.Restart重启程序出错 解决办法,就是给程序的.exe文件,加上下面的设置

  5. $ sudo python -m pip install pylint 出错解决方法

    问题:在unbuntu执行$ sudo python -m pip install pylint出错解决方法支行以下命令sudo pip install pylint==1.9.3这样roboware ...

  6. npm中npm install 始终出错解决办法

    npm中npm install 始终出错解决办法 错误信息: C:\Windows\System32>npm install -g gulp npm ERR! Windows_NT 6.1.76 ...

  7. $ gulp watch 运行出错解决方法

    $ gulp watch 运行出错解决方法   $ gulp watch     如果你出现了如下报错信息: gulp-notify: [Laravel Elixir] Browserify Fail ...

  8. 安装openstack同步数据库时出错解决方法

    错误提示:(2003, "Can't connect to MySQL server on 'controller' ([Errno -2] Name or service not know ...

  9. ARM64平台编译stream、netperf出错解决办法 解决办法:指定编译平台为alpha [root@localhost netperf-2.6.0]# ./configure –build=alpha

    ARM64平台编译stream.netperf出错解决办法 http://ilinuxkernel.com/?p=1738 stream编译出错信息: [root@localhost stream]# ...

随机推荐

  1. 【转】20条Linux命令面试问答

    问:1 如何查看当前的Linux服务器的运行级别? 答: ‘who -r’ 和 ‘runlevel’ 命令可以用来查看当前的Linux服务器的运行级别. 问:2 如何查看Linux的默认网关? 答: ...

  2. IOS中APP开发常用的一些接口

    免费的API接口: 1.聚合数据,上面有手机归属地查询等: 2.百度API store:上面有很多免费的接口,可以使用在自己的app中: 3.环信:提供一些用户交互的一些场景等,可以用来做即时通讯软件

  3. SQLite高级:一库建多表,封装类

    package eoe.database; import android.content.Context; import android.database.sqlite.SQLiteDatabase; ...

  4. php __set()和__get()函数

    <?php /* 总结: 1. 从一个难以访问的属性读取数据的时候 __get() 方法被调用 2. 向一个难以访问的属性赋值的时候 __set() 方法被调用 3. 难以访问包括:(1)私有属 ...

  5. dubbo框架揭秘之服务引用

    ApplicationConfig config = new ApplicationConfig("hello-worldp"); RegistryConfig reg = new ...

  6. jQuery 的 ready 函数是如何工作的?(源码分析)

    如果你使用过 jQuery , 就必然使用过 ready 函数,它用来注册当页面准备好之后可以执行的函数. 问题来啦,我们的页面什么时候准备好了呢? 1. onload 事件 最基本的处理方式就是页面 ...

  7. WMWARE下/sbin/scsi_id 返回值为空

    [root@HE1 ~]# /sbin/scsi_id -g -u /dev/sdb 第一种是从VMWARE层面去解决,用文本编辑器修改vmx文件,在vmx文件中任意位置(通常在最后)添加如下行: d ...

  8. storm遇到问题汇总

    http://www.reader8.cn/jiaocheng/20131023/2139887.html 错误1:在windows下运行ExclamationTopology或者WordCountT ...

  9. lufylegend库 鼠标事件 循环事件 键盘事件

    lufylegend库 鼠标事件 循环事件 键盘事件 <!DOCTYPE html> <html lang="en"> <head> <m ...

  10. .Net多线程编程—使用Visual Studio 2012进行调试

    1 相关概念 1)栈帧 C语言中,每个栈帧对应着一个未运行完的函数.栈帧中保存了该函数的返回地址和局部变量. 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构. 2)单步执行与单步函 ...