资源简介
本教程试图使用尽可能快和尽可能清晰的方法教你开
始 Win32 API 开发.它是以一个整体来组织的,所以在你
提问之前请从头到尾看一遍...你的大多数问题很可能
在文字中已被回答.每个章节以之前的章节为基础.我也
在附錄 A 中附上了一些常见的错误的解決方法.如果你问
一些在教程中已被回答的问题的话,看起来就有点不聪明
了.
代码片段和文件信息
#include
#include “resource.h“
const char g_szClassName[] = “myWindowClass“;
const int ID_TIMER = 1;
const int BALL_MOVE_DELTA = 2;
typedef struct _BALLINFO
{
int width;
int height;
int x;
int y;
int dx;
int dy;
}BALLINFO;
BALLINFO g_ballInfo;
HBITMAP g_hbmBall = NULL;
HBITMAP g_hbmMask = NULL;
HBITMAP CreateBitmapMask(HBITMAP hbmColour COLORREF crTransparent)
{
HDC hdcMem hdcMem2;
HBITMAP hbmMask;
BITMAP bm;
Getobject(hbmColour sizeof(BITMAP) &bm);
hbmMask = CreateBitmap(bm.bmWidth bm.bmHeight 1 1 NULL);
hdcMem = CreateCompatibleDC(0);
hdcMem2 = CreateCompatibleDC(0);
Selectobject(hdcMem hbmColour);
Selectobject(hdcMem2 hbmMask);
SetBkColor(hdcMem crTransparent);
BitBlt(hdcMem2 0 0 bm.bmWidth bm.bmHeight hdcMem 0 0 SRCCOPY);
BitBlt(hdcMem 0 0 bm.bmWidth bm.bmHeight hdcMem2 0 0 SRCINVERT);
DeleteDC(hdcMem);
DeleteDC(hdcMem2);
return hbmMask;
}
void DrawBall(HDC hdc RECT* prc)
{
HDC hdcBuffer = CreateCompatibleDC(hdc);
HBITMAP hbmBuffer = CreateCompatibleBitmap(hdc prc->right prc->bottom);
HBITMAP hbmOldBuffer = (HBITMAP)Selectobject(hdcBuffer hbmBuffer);
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbmOld = (HBITMAP)Selectobject(hdcMem g_hbmMask);
FillRect(hdcBuffer prc (HBRUSH)GetStockobject(WHITE_BRUSH));
BitBlt(hdcBuffer g_ballInfo.x g_ballInfo.y g_ballInfo.width g_ballInfo.height hdcMem 0 0 SRCAND);
Selectobject(hdcMem g_hbmBall);
BitBlt(hdcBuffer g_ballInfo.x g_ballInfo.y g_ballInfo.width g_ballInfo.height hdcMem 0 0 SRCPAINT);
BitBlt(hdc 0 0 prc->right prc->bottom hdcBuffer 0 0 SRCCOPY);
Selectobject(hdcMem hbmOld);
DeleteDC(hdcMem);
Selectobject(hdcBuffer hbmOldBuffer);
DeleteDC(hdcBuffer);
Deleteobject(hbmBuffer);
}
void UpdateBall(RECT* prc)
{
g_ballInfo.x += g_ballInfo.dx;
g_ballInfo.y += g_ballInfo.dy;
if(g_ballInfo.x < 0)
{
g_ballInfo.x = 0;
g_ballInfo.dx = BALL_MOVE_DELTA;
}
else if(g_ballInfo.x + g_ballInfo.width > prc->right)
{
g_ballInfo.x = prc->right - g_ballInfo.width;
g_ballInfo.dx = -BALL_MOVE_DELTA;
}
if(g_ballInfo.y < 0)
{
g_ballInfo.y = 0;
g_ballInfo.dy = BALL_MOVE_DELTA;
}
else if(g_ballInfo.y + g_ballInfo.height > prc->bottom)
{
g_ballInfo.y = prc->bottom - g_ballInfo.height;
g_ballInfo.dy = -BALL_MOVE_DELTA;
}
}
LRESULT CALLBACK WndProc(HWND hwnd UINT msg WPARAM wParam LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
{
UINT ret;
BITMAP bm;
g_hbmBall = LoadBitmap(GetModuleHandle(NULL) MAKEINTRESOURCE(IDB_BALL));
if(g_hbmBall == NULL)
MessageBox(hwnd “Could not load IDB_BALL!“ “Error“ MB_OK | MB_ICONEXCLAMATION);
g_hbmMask = CreateBitmapMask(g_hbmBall RGB(0 0 0));
if(g_hbmMask == NULL)
MessageBox(hwnd “Could not create mask!“ “Error“ MB_OK | MB_ICONEXCLAMATION);
Getobject(g_hbmBall sizeof(b
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2008-07-18 21:24 source\anim_one\
文件 5287 2008-07-18 21:24 source\anim_one\anim_one.c
文件 1748 2008-07-18 21:24 source\anim_one\anim_one.rc
文件 6015 2008-07-18 21:24 source\anim_one\anim_one.vcproj
文件 630 2008-07-18 21:24 source\anim_one\ball.bmp
目录 0 2008-07-18 21:24 source\anim_one\Release\
文件 41472 2008-07-18 21:24 source\anim_one\Release\anim_one.exe
文件 457 2008-07-18 21:24 source\anim_one\resource.h
目录 0 2008-07-18 21:24 source\app_four\
文件 13196 2008-07-18 21:24 source\app_four\app_four.c
文件 2581 2008-07-18 21:24 source\app_four\app_four.rc
文件 6089 2008-07-18 21:24 source\app_four\app_four.vcproj
目录 0 2008-07-18 21:24 source\app_four\Release\
文件 43008 2008-07-18 21:24 source\app_four\Release\app_four.exe
文件 974 2008-07-18 21:24 source\app_four\resource.h
目录 0 2008-07-18 21:24 source\app_one\
文件 2400 2008-07-18 21:24 source\app_one\app_one.c
文件 5469 2008-07-18 21:24 source\app_one\app_one.vcproj
目录 0 2008-07-18 21:24 source\app_one\Release\
文件 38912 2008-07-18 21:24 source\app_one\Release\app_one.exe
目录 0 2008-07-18 21:24 source\app_three\
文件 8344 2008-07-18 21:24 source\app_three\app_three.c
文件 2061 2008-07-18 21:24 source\app_three\app_three.rc
文件 6105 2008-07-18 21:24 source\app_three\app_three.vcproj
目录 0 2008-07-18 21:24 source\app_three\Release\
文件 40960 2008-07-18 21:24 source\app_three\Release\app_three.exe
文件 644 2008-07-18 21:24 source\app_three\resource.h
目录 0 2008-07-18 21:24 source\app_two\
文件 5526 2008-07-18 21:24 source\app_two\app_two.c
文件 2061 2008-07-18 21:24 source\app_two\app_two.rc
文件 5943 2008-07-18 21:24 source\app_two\app_two.vcproj
............此处省略85个文件信息
相关资源
- 山外K66教程
- MC8051_IP核实验教程_part1
- chrome插件API中文版
- WebRTC零基础开发者教程(纯净版)
- 天狼星加密教程算码器
- 《离散数学教程》习题解答beta16[1][
- ENVI操作监督分类教程
- 串口API类 简单 稳定 亲测VS2013可用,
- webos开源教程(适合新手)
- aquifertest中文教程
- 数据库系统基础教程史嘉权pdf版
- 地球物理软件madagascar教程
- NetLogo 中文教程
- ADAMS_CAR模块详细教程(整车仿真分析
- 天线设计软件4nec2的简易教程(图解)
- Lingo API手册
- 初级教程篇:按键(中断方式)实现
- vss6.0及安装使用教程
- snort 教程
- JeeCMS文档API开发
- 软考网络工程师必过教程
- SourceInsight3.5绿色中文破解修正版 含教
- eCognition入门教程-ETM+影像土地覆盖分
- ISCCC-ISMS审核员教程-案例练习册
- hspice2007入门教程
- SolidWorks热力学仿真具体步骤教程
- OFFICE2013教程
- InfluxDB源码编译教程(v1.7.4)
- 应用泛函分析简明教程
- TestStand基础教程
评论
共有 条评论