如何用C语言写一个界面漂亮的游戏,比如俄罗斯方块?

不要玩游戏,做一个正规的窗口是极其困难的!!!

你自己看吧。这是用C语言制作的最简单的窗口:

#包含?& lttchar.h & gt

#包含?& ltwindows.h & gt

/*?该函数由Windows内部函数DispatchMessage()调用。*/?

LRESULT?回调?窗口程序?(HWND?hWnd,?UINT?消息,?WPARAM?wParam,?LPARAM?lParam)

{

HDC?hdc

PAINTSTRUCT?PS;

RECT?rect

切换?(消息)/*?处理信息?*/

{

案子?WM_DESTROY:?

PostQuitMessage?(0);?/*?将WM_QUIT发送到消息队列?*/

打破;

案子?WM_PAINT:

hdc?=?开始画画?(hWnd,?& ampPS);

GetClientRect?(hWnd,?& amprect);

DrawText?(hdc,?正文(“你好,?Windows?NT!”),?-1,?& amprect,?DT_SINGLELINE?|?DT_CENTER?|?DT _ VCENTER);

EndPaint?(hWnd,?& ampPS);

打破;

默认:?/*?未处理的消息?*/?

回归?DefWindowProc?(hWnd,?消息,?wParam,?lParam);

}

回归?0;

}

/*?以下是主要功能?*/

int?WINAPI?_tWinMain(HINSTANCE?hThisInstance,?HINSTANCE?hPrevInstance,?LPTSTR?lpCmdLine,?int?nFunsterStil)

{

HWND?hWnd/*?这是窗户的把手吗?*/

味精?消息;/*?应用程序的消息保存在这里?*/

WNDCLASSEX?wincl?/*?窗口类的数据结构。*/

TCHAR?szClassName[?]?=?TEXT(" windows app ");?/*?窗口类的类名。*/

/*?窗口结构?*/

wincl.hInstance?=?hThisInstance

wincl.lpszClassName?=?szClassName

wincl.lpfnWndProc?=?windows procedure;/*?这个函数由Windows操作系统调用。*/

wincl.style?=?CS _ DBLCLKS?/*?获取双击命令?*/

wincl.cbSize?=?sizeof?(WNDCLASSEX);

/*?使用默认图标和鼠标指针?*/

wincl.hIcon?=?LoadIcon?(NULL,?IDI _应用);

wincl.hIconSm?=?LoadIcon?(NULL,?IDI _应用);

wincl.hCursor?=?LoadCursor?(NULL,?IDC _ ARROW);

wincl.lpszMenuName?=?NULL?/*?没有菜单?*/

wincl.cbClsExtra?=?0;/*?窗口类后没有多余的字节。*/

wincl.cbWndExtra?=?0;/*?结构还是窗口实例?*/

/*?使用窗口的默认颜色作为窗口的背景颜色?*/

wincl.hbrBackground?=?(HBRUSH)?颜色_背景;

/*?注册窗口类。如果注册失败,那么退出程序?*/

如果?(!RegisterClassEx?(& ampwincl))

回归?0;

/*?窗口类已经注册。创造它的程序?*/

hWnd?=?CreateWindowEx?(

0,

szClassName,?/*?班名?*/

TEXT("Windows?App”)、?/*?窗口标题栏的文本?*/

WS_OVERLAPPEDWINDOW,?/*?默认窗口?*/

CW_USEDEFAULT,?/*?窗户的左上角在哪里?*/

CW_USEDEFAULT,?/*?窗户的右下角在哪里?*/

544,?/*?窗口宽度(像素)?*/

375,?/*?窗口高度(像素)?*/

HWND_DESKTOP,?/*?窗口是桌面的子窗口吗?*/

NULL,/*?这个窗口没有菜单?*/

hThisInstance,?/*?程序实例的句柄?*/

NULL?/*?窗口没有创建数据?*/

);

/*?显示窗口?*/

橱窗?(hWnd,?nFunsterStil);

/*?重新粉刷窗户?*/

更新窗口(hWnd);

/*?运行消息循环。循环到GetMessage()函数并返回0?*/

什么时候?(GetMessage?(& amp消息?NULL,?0,?0))

{

/*?把虚拟信息翻译成人物信息?*/

翻译消息(& amp消息);

/*?向窗口发送信息过程?*/

dispatch message(amp;消息);

}

/*?返回PostQuitMessage()函数的返回值?*/

回归?messages.wParam

}