資源簡(jiǎn)介
本教程試圖使用盡可能快和盡可能清晰的方法教你開(kāi)
始 Win32 API 開(kāi)發(fā).它是以一個(gè)整體來(lái)組織的,所以在你
提問(wèn)之前請(qǐng)從頭到尾看一遍...你的大多數(shù)問(wèn)題很可能
在文字中已被回答.每個(gè)章節(jié)以之前的章節(jié)為基礎(chǔ).我也
在附錄 A 中附上了一些常見(jiàn)的錯(cuò)誤的解決方法.如果你問(wèn)
一些在教程中已被回答的問(wèn)題的話,看起來(lái)就有點(diǎn)不聰明
了.

代碼片段和文件信息
#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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論