资源简介
本人的原创Windows入门程序,直接用C语言调用Windows API的方式编写,几乎涉及了Windows入门会碰到的所有基础问题:窗口、消息、菜单、工具栏、资源、对话框、计时器、自绘按钮、GDI位图操作、Windows目录操作、INI文件操作等等。
顺便向一位叫吴志刚的朋友表示感谢,我从你的MFC版本的俄罗斯方块中拿了图标和所有的位图资源,还仿照了你的界面布局,希望你不要责备后生,呵呵。
程序的开发环境是VC6,源代码中有详细的注释,算法也一看就明白,如果你是位初学者,拿来练练手应该会有所收获,希望能对你有所帮助。
代码片段和文件信息
//=========================================================
// Project Win32 俄罗斯方块程序
// File Tetris.cpp 主程序
// Update 2009.04
// Author 沉淪 http://www.EasyIDE.cn
// Tools Visual C++ 6.0 & Editplus 3
//=========================================================
#include “Tetris.h“
//Windows 入口函数
int WINAPI WinMain(HINSTANCE hInstanceHINSTANCE hPrevInstanceLPSTR szCmdLineint iCmdShow)
{
static TCHAR szClsName[] = TEXT(“Tetris“);
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
InitCommonControls(); //初始化通用控件类库
//程序启动时初始化数据
hInst = hInstance;
RandomBlock(&ii&jj&cc);
//x = 4; y = -1;
iLevel = 1; iSorce = 0;
ilayer = 0; iSorceMax = TetrisIni(0);
hDcAlert = CreateCompatibleDC(NULL);
//注册窗口类
wndclass.hInstance = hInstance;
wndclass.lpszClassName = szClsName;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
wndclass.cbSize = sizeof(WNDCLASSEX);
wndclass.style = CS_HREDRAW|CS_VREDRAW;
wndclass.hIcon = LoadIcon(hInstanceMAKEINTRESOURCE(IDI_ICON1));
wndclass.hIconSm = NULL;
wndclass.hCursor = LoadCursor(NULLIDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE+1);
wndclass.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
if ( !RegisterClassEx(&wndclass) )
{
MessageBox(
NULL
TEXT(“This program requires Windows NT!“)
TEXT(“RegisterClass ERROR“)
MB_IConerror);
return 0;
}
//创建主窗口
hwnd = CreateWindowEx(
WS_EX_CLIENTEDGE
szClsName
TEXT(“俄罗斯方块Win32版“)
WS_MINIMIZEBOX|WS_SYSMENU
GetSystemMetrics(SM_CXFULLSCREEN)/2-370/2
GetSystemMetrics(SM_CYFULLSCREEN)/2-520/2
370
520
NULL
NULL
hInstance
NULL);
//显示窗口并刷新客户区
ShowWindow(hwndiCmdShow);
UpdateWindow(hwnd);
//构建消息循环
while ( GetMessage(&msgNULL00) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//主窗口过程
LRESULT CALLBACK WndProc(HWND hwndUINT messageWPARAM wParamLPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch ( message )
{
case WM_CREATE:
GameUI(hwnd); //创建界面控件
GameStart(hwnd); //数据初始化
//背景音乐初始化
bMusicOn = TRUE;
iMusicBG = IDR_WAVE1;
hMenu = GetMenu(hwnd);
MusicItem(IDM_MUSIC1);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd&ps);
DrawMatrix(hdc); //绘制游戏区
DrawTetris(hdc000); //绘制方块
DrawNext(hdc); //绘制预览区
BitBlt(hdc4020016050hDcAlert00SRCCOPY);//绘制提示语
EndPaint(hwnd&ps);
return 0;
case WM_TIMER:
DropTetris(hwnd);
return 0;
case WM_DRAWITEM:
DrawButton(lParam); //绘制方向按钮
return TRUE;
case WM_KEYDOWN:
switch ( (int)wParam )
{
case VK_LEFT:
if ( !bStart ) break;
if ( CheckBlock(x-1y) )
{
x --;
hdc = GetDC(hwnd);
DrawTetris(hdc-100);
ReleaseDC(hwndhdc);
}
break;
case VK_RIGHT:
if ( !bStart ) break;
if ( CheckBlock(x+1y) )
{
x ++;
hdc = GetDC(hwnd);
DrawTetris(hdc100);
ReleaseDC(hwndhdc);
- 上一篇:连连看小游戏(基于简单的MFC)
- 下一篇:MFC多边形画法--计算机图形学
相关资源
- 操作系统c语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论