CreateWindow的出错解决

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=0;
20     wndcls.cbWndExtra=0;
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         0,0,600,400,NULL,NULL,hInstance,NULL);
34
35     ShowWindow(hwnd,SW_SHOWNORMAL);
36     UpdateWindow(hwnd);
37
38     MSG msg;
39     while(GetMessage(&msg,NULL,0,0))
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[20];
58         sprintf(szChar,"char code is %d",wParam);
59         MessageBox(hwnd,szChar,"char",0);
60         break;
61     case WM_LBUTTONDOWN:
62         MessageBox(hwnd,"mouse clicked","message",0);
63         HDC hdc;
64         hdc=GetDC(hwnd);
65         TextOut(hdc,0,50,"程序员之家",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,0,0,"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(0);
83         break;
84     default:
85         return DefWindowProc(hwnd,uMsg,wParam,lParam);
86     }
87     return 0;
88 }

时间: 2024-11-03 22:30:54

CreateWindow的出错解决的相关文章

SQL安装过程中“针对SQL Server 注册表的一致性验证“出错解决方式

1.打开注册表,查找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\0804],分别打开Counter 和Help 2.打开Counter,把滚动条拉倒最后,然后记下最大的那个值(不同计算机不一样的),记下后关闭窗口 3.同样的打开Help,滚动到最后记最大的那个值(你们的值不一定跟我一样的哦!!!),记下后关闭窗口 4,再重新定位到Perflib的节点上, 5.双击Last Counter然后在

工厂模式的Assembly.Load(path).CreateInstance(className)出错解决方法

1.问题描述 ★代码展示 下面是Factory中的一段代码: '********************************************** ' 文 件 名:DataAcess ' 命名空间:Factory ' 内 容: ' 功 能:创建用户需要的接口 ' 文件关系: ' 作 者:令仔很忙 ' 小 组: ' 生成日期:2014-07-28 17:37:52 ' 版 本 号:V2.0 ' 修改日志: ' 版权说明: '********************************

Cocos2d-x 3.0 编译出错 解决 error: expected &amp;#39;;&amp;#39; at end of member declaration

近期把项目移植到cocos2d-x 3.0,在整Android编译环境的时候,出现一大堆的编译出错,都是类似"error: expected ';' at end of member declaration"之类的,看了一些编译错误,都是cocos2d-x库里面的代码出错. 经过分析,怀疑可能是编译环境的问题,由于cocos2d-x使用了非常多C++11的新特性,这有可能导致老的编译器出错,看了一下NDK以下的文件以及toolchains里面的内容,windows编译器默认使用4.6,

vs连接mysql出错解决方法

vs连接mysql出错解决方法 先按下面的步骤配置一下: **- (1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的"Show directories for:"下拉列表中选中"Includefiles",然后在中间列表框中添加你本地安装MySQL的include目录路径.(我的是D:\Program Files\MySQL\MySQL Server 5.0\include). vs2010中的设置,在:项目-

Windows Server 2012启用Windows功能NetFx3时出错解决方法

作者:冰点阳光 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://baohua.me/operating-system/windows-server-2012-enable-windows-feature-netfx3-error-sulotion/ 在Windows server 2012 R2服务器上安装SQL Server 2012数据库,在安装过程中出现"启用Windows 功能NetFx3时出错,错误代码:-2146498298.请尝试从Wind

在项目中导入import javax.servlet 出错解决办法

我们有时会把别人的项目copy到自己这里进行二次开发或者参考学习,有的时候会发生下图的错误,即eclipse项目里我们导入的项目里提示HttpServletRequest 不能引用,会伴随头疼的小红叉出现 具体原因是我们工程里面web-inf/lib目录下少了相应的包:Package javax.servlet.http引起的:通俗且确切的讲就是缺少TOMCAT_HOME\lib下的servlet-api.jar.在别人的机器上他配置了Server,一般都是tomcat,而在拷贝的过程中Serv

Office 2007在安装过程中出错-解决办法

1, 可能是因为c:\program files\common files\microsoft Shared\web server Extensions\40\bin目录下缺少Fp4autl.dll,Fpencode.dll和Fp4awel.dll这三个文件导致的.可以从 windows xp的安装光盘中找到Fp40ext.cab ,把他解压出来,就可以找到这三个文件,将它们复制到bin文件夹下试试试了一下对我没用,继续搜2,运行regedit,打开注册表 找到HKEY_LOCAL_MACHIN

dpkg:处理 xxx (--configure)时出错解决办法,也可用于卸载软件出错的情况

dpkg:处理 xxx (--configure)时出错解决办法 今早安装nfs时出现问题,找到该文,备份留用. 然后在网上找到了这片文章,按步骤走就解决了,中间会提示自动卸载一下,执行那个命令就好了, 我遇到的情况是在ubuntu上使用apt-get安装软件的时候出现如下错误: 正在设置 nfs-common (1:1.2.2-4ubuntu5) ...dpkg:处理 nfs-common (--configure)时出错: 子进程 已安装 post-installation 脚本 返回了错误

mkisofs出错解决办法

使用mkisofs遇到错误: genisoimage: Uh oh, I cant find the boot catalog directory 'beini/boot/isolinux'! 使用的命令是 sudo mkisofs -o boot.iso  -r -J  --no-emul-boot --boot-info-table  --boot-load-size 4 -c beini/boot/isolinux/boot.cat -b beini/boot/bzImage  -v be