资源简介
本人的原创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语言版第2版源代码
- Windows程序设计小游戏捕鱼达人
- C语言C++常见面试题含答案 (1).pdf
- netcdf 4.4.1 c/c++类库windows64位绿色版
- 队列应用银行排队问题模拟:计算客户
- C语言核心技术英文版
- C语言实现基于winsock的ftp客户端程序
- windows下获取CPU、BIOS、硬盘、MAC地址
- 自制编程语言基于C语言郑钢源代码
- 数据结构C语言版第2版课后习题答案
- 华为技术有限公司C语言编程规范110
- C语言编程经典200
- 数据结构课程设计 职工管理系统 c语
- 常用算法程序集(C语言描述) (PD
- RTX与Windows进程通信互斥对象+共享内存
- 轻松玩转AVR单片机C语言
- Apache2.2-win32-x86
- C语言基于SDL的贪吃蛇项目
- Fast ANN神经网络算法源码
- 郝斌C语言详细笔记 附源码91146
- MFC+Access图书馆管理系统
- 谭浩强《C语言程序设计》考研考点讲
- 小甲鱼C语言课件
- C语言多关卡可视化推箱子
- 基于MSP430的DAC7811控制-C语言
- C语言链表应用的完整版ATM提款机
- 《单片机C语言程序设计实训100例——
- 西安电子科技大学软件工程C语言程序
- C语言点滴 赵岩著 pdf
- C语言邻接表结构实现克鲁斯卡尔算法
评论
共有 条评论