Win32 窗口编译能成功并显示窗口。 但内容一直加载不出来
初学 就遇到这种问题。网上找了也没看到对应的解决方法。 我用的是VS2010就是窗口图标创建,加载不出。 任务栏图标也加载不出。 弄个画板画个框框也没加载出。
程序代码:
#include<Windows.h> LRESULT CALLBACK PELouSi(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam); //WINAPI 调用约定 , 主要是参数的入栈顺序, 这个栈空间的清理者 //参数1:句柄, 窗口的唯一标识 参数2:always NULL. 参数3:传递给应用程序的命令行参数 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow) { //初始化窗口类 int x = 0; WNDCLASSEX wc; HWND hWnd; //返回的句柄 wc.cbClsExtra = 0; wc.cbSize = sizeof(WNDCLASSEX); wc.cbWndExtra = 0; wc.hbrBackground = (HBRUSH)COLOR_WINDOW; wc.hCursor = LoadCursor(NULL, IDC_ARROW); //加载光标 wc.hIcon = NULL;//LoadIcon(NULL, IDI_HAND); //修改状态栏图标 wc.hIconSm = NULL;//窗口图标 wc.hInstance = hInstance; wc.lpfnWndProc = PELouSi;//回调函数地址 wc.lpszClassName = "tetri";//窗口名字,给操作系统看的 wc.lpszMenuName = NULL; wc.style = CS_HREDRAW | CS_VREDRAW; //12 个成员 //注册窗口对象 if( 0 == RegisterClassEx(&wc))//注册失败8 { //得到错误码 int a = GetLastError(); return 0; } //创建窗口 WS_OVERLAPPEDWINDOW hWnd = CreateWindowEx(WS_EX_TOPMOST, "tetri", "内蒙古方块",WS_OVERLAPPEDWINDOW, 100, 30, 500, 645, NULL, NULL, hInstance, NULL); //返回句柄, 窗口唯一标识 if(NULL == hWnd) { return 0; } ShowWindow(hWnd, nCmdShow); //隐藏显示返0, 正常显示返回非0 //CreateWindow(); MSG mSg;// 消息结构体 //消息循环 while(GetMessage(&mSg, NULL, 1, 2)) // 从消息队列中获得消息 参数2:NULL 和 非NULL 区别 { //翻译消息 TranslateMessage(&mSg ); //分发消息: 标准消息 命令消息 通知消息 自定义消息 DispatchMessage( &mSg ); } return 0; } //回调函数 LRESULT CALLBACK PELouSi(HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam) //UINT nMsg:消息的ID, { PAINTSTRUCT pt; HDC hDC; //关闭窗口消息 switch(nMsg) { case WM_CREATE: //窗口创建初期只产生一次 GetLastError(); //初始化数据 break; case WM_PAINT: hDC = BeginPaint(hWnd, &pt); //getDC, 窗口可操作性区域标识 画板 //中间画图部分 Rectangle(hDC, 0, 0, 300, 600);//画矩形 EndPaint(hWnd, &pt); break; case WM_DESTROY: PostQuitMessage(0);//发出WM_QUIT消息 break; };// 手动 处理点× 关闭消息 //点×三种消息 wm_CLOSE, WM_DESTROY, WM_QUIT 依次产生 return DefWindowProc(hWnd, nMsg, wParam, lParam); //功能: 将没有处理的消息进行处理, 保证系统逻辑连贯性 }