就是窗口图标创建,加载不出。 任务栏图标也加载不出。 弄个画板画个框框也没加载出。

#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); //功能: 将没有处理的消息进行处理, 保证系统逻辑连贯性
}
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); //功能: 将没有处理的消息进行处理, 保证系统逻辑连贯性
}