首页
社区
课程
招聘
CreateWindow返回0,错误码是1407,大侠们帮忙看一下啊
发表于: 2011-7-29 10:32 8132

CreateWindow返回0,错误码是1407,大侠们帮忙看一下啊

2011-7-29 10:32
8132
#include <windows.h>
#include <stdio.h>
#include <tchar.h>

LRESULT CALLBACK winsunproc(          HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
);


int WINAPI WinMain(          HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow
)
{
	WNDCLASS cls;
	cls.cbClsExtra=0;
	cls.cbClsExtra=0;
	cls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
	cls.hCursor=LoadCursor(NULL,IDC_CROSS);
	cls.hIcon=LoadIcon(NULL,IDI_ERROR);
	cls.hInstance=hInstance;
	cls.lpfnWndProc=(WNDPROC)winsunproc;
	cls.lpszClassName=_T("zhy");
	cls.lpszMenuName=NULL;
	cls.style=CS_HREDRAW|CS_VREDRAW;
	RegisterClass(&cls);

	HWND hwnd;
	hwnd=CreateWindow(_T("zhy"),_T("zhy0408"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT ,CW_USEDEFAULT ,CW_USEDEFAULT ,CW_USEDEFAULT ,NULL,NULL,hInstance,NULL);

	int t=GetLastError();

	ShowWindow(hwnd,SW_MAXIMIZE);
	UpdateWindow(hwnd);

	MSG msg;
	while(GetMessage(&msg,NULL,0,0))
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}
	return 0;

}

LRESULT CALLBACK winsunproc(          HWND hwnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam
)
{
	switch(uMsg)
	{
	case WM_CHAR:
		char a[20];
		sprintf_s(a,"char is %d",wParam);
		MessageBox(hwnd,(LPCTSTR)a,(LPCTSTR)("zhy0408"),0);
		break;
	case WM_LBUTTONDOWN:
		MessageBox(hwnd,(LPCTSTR)"mouse is click",(LPCTSTR)"zhy0408",0);
		HDC	hdc;
		hdc=GetDC(hwnd);
		TextOut(hdc,0,50,(LPCTSTR)"zhy",3);
		ReleaseDC(hwnd,hdc);
		break;
	case WM_PAINT:
		HDC hDc;
		PAINTSTRUCT ps;
		hDc=BeginPaint(hwnd,&ps);
		TextOut(hDc,0,0,_T("zhy0408"),7);
		EndPaint(hwnd,&ps);
		break;
	case WM_CLOSE:
		if(IDYES==MessageBox(hwnd,_T("close?"),(LPCTSTR)"zhy0408",MB_YESNO))
		{
			DestroyWindow(hwnd);
		}
		break;
	case WM_DESTROY:
		PostQuitMessage(0);
		break;
	default:
		return DefWindowProc(hwnd,uMsg,wParam,lParam);
	}
	return 0;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
找不到窗口类别。
2011-7-29 10:43
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
WS_OVERLAPPEDWINDOW  这个不支持WINCE的
看看MSDN文档吧  我想帮你看 但是看不懂 哈哈
2011-7-29 10:50
0
雪    币: 458
活跃值: (421)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
4
WNDCLASS cls;
  cls.cbClsExtra=0;
  cls.cbClsExtra=0;

        改成
WNDCLASS cls;
        cls.cbClsExtra=0;
        cls.cbWndExtra=0;
2011-7-29 11:15
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
case WM_CLOSE:
    if(IDYES==MessageBox(hwnd,_T("close?"),(LPCTSTR)"zhy0408",MB_YESNO))
    {
      DestroyWindow(hwnd);
    }
    break;
  case WM_DESTROY:
    PostQuitMessage(0);
    break;
  default: //把这句去掉
    return DefWindowProc(hwnd,uMsg,wParam,lParam); //把这句去掉
  }
  return 0; 这句也去掉

  return DefWindowProc(hwnd,uMsg,wParam,lParam);
2011-7-29 11:21
0
雪    币: 113
活跃值: (100)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
那有可能是RegisterClass就失败了,而不是在CreateWindow处。
一般这么简单的程序找个向导生成,然后对比下就明白了。
2011-7-29 18:09
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
好了,3q
2011-7-29 19:02
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
网上也都是这么说的,可是我这按照4#的方法改下就对了,此处好像不用改,我也不知道是怎么回事
2011-7-29 19:06
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
额。。。我也看不懂
2011-7-29 19:08
0
雪    币: 377
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GVU
10
if(IDYES==MessageBox(hwnd,_T("close?"),(LPCTSTR)"zhy0408",MB_YESNO))

为什么后面的(LPCTSTR)"zhy0408"不使用_T,如果是Unicode你的程序肯定有问题。
2011-7-29 20:12
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
我看来一下,是Unicode,不过这样没问题啊,运行好的
2011-7-30 23:30
0
游客
登录 | 注册 方可回帖
返回
//