#include <windows.h>
int iCarX=-200,iCarY=200;
HINSTANCE hInstance;
HDC hdcSrc,hdcBack,hdcMem;
HBITMAP hBitmapSrc,hBitmapBack,hBitmapMem;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
int Render(HDC hdc);
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("Spirit") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ;
wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ;
if (!RegisterClass (&wndclass))
{
MessageBox ( NULL, TEXT ("This program requires Windows NT!"),
szAppName, MB_ICONERROR) ;
return 0 ;
}
hwnd = CreateWindow( szAppName, TEXT ("Spirit Demo 精灵动画演示"), WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, 388, 517, NULL, NULL, hInstance, NULL) ;
ShowWindow (hwnd, iCmdShow) ;
UpdateWindow (hwnd) ;
while (GetMessage (&msg, NULL, 0, 0))
{
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
return msg.wParam ;
}
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
switch (message){
case WM_CREATE:
hInstance=((LPCREATESTRUCT)lParam)->hInstance;
hdc=GetDC(hwnd);
hdcSrc=CreateCompatibleDC(hdc); //源图像DC
hdcBack=CreateCompatibleDC(hdc); //目标图像DC
hdcMem=CreateCompatibleDC(hdc); //内存DC
hBitmapSrc=LoadBitmap(hInstance,TEXT("CARS")); //读图像
hBitmapBack=LoadBitmap(hInstance,TEXT("SCENE"));
hBitmapMem=CreateCompatibleBitmap(hdc,388,517); //为内存DC建立一个位图
SelectObject(hdcSrc,hBitmapSrc); //将位图分别选入DC
SelectObject(hdcBack,hBitmapBack);
SelectObject(hdcMem,hBitmapMem);
SetTimer(hwnd,1,10,NULL); //定时器,间隔10ms
return 0 ;
case WM_PAINT:
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
Render(hdc); //我们的渲染函数
EndPaint (hwnd, &ps) ;
return 0 ;
case WM_TIMER:
iCarX+=1; //移动
if (iCarX>389) {
KillTimer(hwnd,1);
return 0;
}
InvalidateRect(hwnd,NULL,NULL); //这两句使窗口内容更新,即调用我们的渲染函数
UpdateWindow(hwnd);
return 0;
case WM_DESTROY:
DeleteDC(hdcSrc);
DeleteDC(hdcBack);
DeleteObject(hBitmapSrc);
DeleteObject(hBitmapBack);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
int Render(HDC hdc){
BitBlt(hdcMem,0,0,388,517,hdcBack,0,0,SRCCOPY); //将背景拷贝到内存DC上
BitBlt(hdcMem,iCarX,iCarY,220,133,hdcSrc,220,0,SRCAND); //处理掩码图
BitBlt(hdcMem,iCarX,iCarY,220,133,hdcSrc,0,0,SRCPAINT); //处理目标图像
BitBlt(hdc,0,0,388,517,hdcMem,0,0,SRCCOPY); //画到屏幕上的窗口的DC
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
精灵动画,一个很有趣的工程
共18个文件
pdb:2个
bmp:2个
pch:1个
4星 · 超过85%的资源 需积分: 9 17 下载量 78 浏览量
2008-12-15
00:15:18
上传
评论
收藏 1.86MB RAR 举报
温馨提示
精灵动画,一个很有趣的工程,有兴趣的可以下下来看一下,其实我也没看呢
资源详情
资源评论
资源推荐
收起资源包目录
.rar (18个子文件)
精灵动画
Spirit.rc 2KB
resource.h 410B
Spirit.cpp 3KB
Spirit.opt 53KB
Spirit.ncb 33KB
Spirit.dsp 4KB
Debug
vc60.pdb 76KB
Spirit.exe 1.04MB
vc60.idb 137KB
Spirit.obj 18KB
Spirit.pdb 329KB
Spirit.ilk 193KB
Spirit.res 759KB
Spirit.pch 3.38MB
Scene.bmp 588KB
Spirit.dsw 535B
Release
Cars.bmp 171KB
Spirit.plg 1KB
共 18 条
- 1
snowlight218
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1