如何用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
}