锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
enum Boolean {FALSE,TRUE};
struct Name
{
char first [10];
char last[10];
};
union Number
{
int i;
float j;
};
寤虹珛涓夌鐢ㄦ埛鑷畾涔夋暟鎹被鍨嬶紝榪欎笁縐嶈嚜瀹氫箟綾誨瀷鐨勬爣璁板悕鍒嗗埆涓築oolean錛孨ame鍜孨umber銆傚彲浠ョ敤榪欎簺鏍囪鍚嶅0鏄庡彉閲忋?br> Ex.
2銆傚鏋淐鍑芥暟鍘熷瀷鐨勫渾鎷彿涓粈涔堜篃娌℃湁錛岀紪璇戝櫒灝變笉媯鏌ュ弬鏁頒笖涓嶅鍙傛暟涓暟鍜岀被鍨嬪仛浠諱綍鍋囧畾錛屽湪璋冪敤璇ュ嚱鏁版槸錛岀粰鍑芥暟浼犻掍換浣曞弬鏁扮紪璇戝櫒閮戒笉浼氭姤閿欍?/p>
3銆傚嚱鏁板弬鏁板垪琛ㄤ腑鐢╟onst闄愬畾絎﹁鏄庝笉鑳藉啀鍑芥暟涓慨鏀逛紶閫掔粰鍑芥暟鐨勫弬鏁般俢onst闄愬畾絎﹁繕鏈変竴浜涘叾浠栫敤娉曘備緥濡傚0鏄庡父閲忔寚閽堬細
int *const iPTR=&intger;
榪欐潯璇彞鎶奿Ptr澹版槑涓烘寚鍚戜竴涓暣鏁扮殑甯擱噺鎸囬拡銆俰Ptr鎵鎸囧悜鐨勫煎彲浠ヤ慨鏀癸紝浣嗘槸涓嶈兘鎶奿Ptr鎸囧悜鍏朵粬鍐呭瓨鍗曞厓銆?br> const int *iPtr=&intger錛?br>榪欐潯璇彞鎶奿Ptr澹版槑涓烘寚鍚戞暣鏁板父閲忕殑鎸囬拡銆俰Ptr鎵寮曠敤鐨勫間笉鑳戒慨鏀癸紝浣嗘槸鍙互鍚Ptr鎸囧悜鍏朵粬鍐呭瓨鍗曞厓銆?/p>
4銆傞粯璁ゅ弬鏁板繀欏繪槸鍑芥暟鍙傛暟鍒楄〃涓殑鏈鍙寵竟鐨勫弬鏁般?/p>
5銆傚崟鐩繍綆楃錛堬細錛氾級鑳藉浣跨▼搴忚闂笌浣滅敤鍩熷唴灞閮ㄥ彉閲忓悓鍚嶇殑鍏ㄩ儴鍙橀噺銆?/p>
6銆侰++鍜孋瀵瑰嚱鏁板悕鐨勫鐞嗘柟寮忎笉鍚岋紝鎵浠ヨ瘯鍥炬妸C浠g爜鍜孋++浠g爜榪炴帴鏃訛紝鍦–涓紪璇戠殑鍑芥暟涓嶈兘琚?br>C++璇嗗埆銆傝閫氱煡緙栬瘧鍣ㄤ竴涓垨澶氫釜宸茬粡鍦–涓紪璇戯紝鍍忎笅闈㈠啓鍑哄叾鍑芥暟鍘熷瀷錛?br>extern “C” 鍑芥暟鍘熷瀷 //鍗曚釜鍑芥暟
extern “C”//澶氫釜鍑芥暟
{
鍑芥暟鍘熷瀷
}
榪欎簺澹版槑閫氱煡緙栬瘧鍣ㄦ寚瀹氱殑鍑芥暟涓嶅湪C++涓紪璇戯紝鍥犳涓嶅榪炴帴璇存槑涓垪鍑虹殑鍑芥暟鍚嶇紪鐮併傝繖浜涘嚱鏁拌兘澶熷緱鍒版紜殑榪炴帴銆?br>
“Windows緙栫▼灝卞儚鍘昏鐗欑鍖葷敓錛氳櫧鐒舵槑鏄庣煡閬撴渶鑷繁鏄湁鐩婂鐨勶紝鍙繕鏄病浜哄枩嬈㈡繪槸鎵劇墮鍖匯?#8221;璁板緱寰堟棭鐨勬椂鍊欙紝鐪嬩簡涓涓婱FC錛岃繕鏍規(guī)湰涓嶇煡閬撶獥鍙e晩錛屾寜閽晩錛岃彍鍗曞晩錛岀幇鍦ㄨ榪欎竴绔犳墠鐪嬪埌鐨刉indows鐨勭湡闈㈢洰浜嗐?/p>
1. 浼犺涓殑“鍖堢墮鍒╃鍙瘋〃紺烘硶”錛屾棭鏈夎抽椈姝ゆ硶錛屼絾鏈浘涓瑙佸晩錛屾渶鏄ご鐥涚殑灝卞睘鐪嬪府鍔╂枃妗g殑錛屽挨鍏舵槸MSDN浜嗭紝涓嶈繃瑕佹兂闃呰Microsoft鐨勪竴浜涗唬鐮侊紝榪樼湡鐨勬噦姝ゆ硶鍛銆?br>
* 鍖堢墮鍒╃鍙瘋〃紺烘硶鍓嶇紑浠g爜
鍓嶇紑 | 鏁版嵁綾誨瀷錛堝熀紜綾誨瀷錛?/font> |
c | Char瀛楃 |
by | BYTE瀛楄妭錛堟棤絎﹀彿瀛楃錛?/td> |
n | Short鐭暣鏁板拰鏁存暟錛堣〃紺轟竴涓暟錛?/td> |
i | int鏁存暟 |
x錛寉 | Short鐭暣鏁幫紙閫氬父鐢ㄤ簬x鍜寉鍧愭爣) |
cx錛宑y | short鐭暣鏁幫紙閫氬父鐢ㄤ簬x鍜寉鐨勯暱搴︼紱c琛ㄧず璁℃暟錛?/td> |
b | BOOL錛堟暣鏁幫級 |
w | UINT錛堟棤絎﹀彿鏁幫級鍜學ORD錛堟棤絎﹀彿瀛楋級 |
l | LONG錛堥暱鏁存暟錛?/td> |
dw | DWORD錛堟棤絎﹀彿闀挎暣鏁幫級 |
fn | 鍑芥暟鎸囬拡 |
s | 瀛楃涓?/td> |
sz錛宻tr | 浠ヤ竴涓瓧鑺傜殑0錛堢┖鍊鹼級緇堟鐨勫瓧絎︿覆 |
lp | 32浣嶆寚閽?/td> |
h | 緙栧彿錛堝父鐢ㄤ簬琛ㄧずWindows瀵硅薄錛?/td> |
msg | 娑堟伅 |
*鍙橀噺鐨勫懡鍚?/strong>
鍙橀噺鐨勫懡鍚嶅簲鐢ㄥ寛鐗欏埄絎﹀彿琛ㄧず娉曪紝鍙橀噺鍙敤涓婅〃涓殑鍓嶇紑浠g爜琛ㄧず銆傚彟澶栵紝鍙橀噺鐢變竴涓垨鍑犱釜瀛愬悕鏋勬垚鏃訛紝姣忎竴涓瓙鍚嶉兘瑕佸ぇ鍐欏瓧姣嶅紑澶淬?br> 渚嬪錛?nbsp; char *szFileName; // a null terminated string
int *lpiData; //a 32-bit pointer to a int
榪樻湁涓鐐瑰氨鏄紝鍏ㄥ眬鍙橀噺浠_鎴杇寮澶淬?/p>
*鍑芥暟鍛藉悕
鍑芥暟鍛藉悕鍜屽彉閲忓懡鍚嶈鍒欑浉鍚岋紝浣嗘槸娌℃湁鍓嶇紑銆備篃灝辨槸璇達紝鍙渶瑕佸瓙鍚嶇殑絎竴涓瓧姣嶈澶у啓銆?br>鑰屼笖鍑芥暟鍚嶄腑浣跨敤涓嬪垝綰挎槸闈炴硶鐨勩備緥濡傦紝涓嬮潰鐨勫嚱鏁板悕琛ㄧず鏄棤鏁堢殑鍖堢墮鍒╃鍙瘋〃紺烘硶錛?br> int Get_Pixel(int ix,int iy);
*綾誨瀷鍜屽父閲忕殑鍛藉悕
鎵鏈夌殑綾誨瀷鍜屽父閲忛兘鏄ぇ鍐欑殑瀛楁瘝錛屼絾鍚嶅瓧涓彲浠ュ厑璁鎬嬌鐢ㄤ笅鍒掔嚎銆?/p>
*綾葷殑鍛藉悕
鎵鏈塩++鐨勭被蹇呴』浣跨敤澶у啓鐨凜涓哄墠緙銆傜被鍚嶅瓧鐨勬瘡涓涓瓙鍚嶇殑絎竴涓瓧姣嶈澶у啓銆?/p>
*鍙傛暟鐨勫懡鍚?/strong>
鍑芥暟鐨勫弬鏁板懡鍚嶅拰鏍囧噯鍙橀噺鍛藉悕綰﹀畾鐩稿悓銆?/p>
2.鎬庢牱鍒涘緩涓涓畬鍏ㄥ疄鐢ㄧ殑Windows紼嬪簭錛屼篃灝辨槸閭d釜鎴戜滑緇忓父瑙侀潰鐨勯偅涓獥鍙c備綘鍙渶瑕佷笅闈㈠嚑姝ワ細
1.鍒涘緩涓涓猈indows綾匯?br> 2.鍒涘緩涓涓簨浠跺彞鏌勬垨WinProc銆?br> 3.鐢╓indows娉ㄥ唽Windows綾匯?br> 4.鐢ㄥ墠闈㈠垱寤虹殑Windows綾誨垱寤轟竴涓獥鍙c?br> 5.鍒涘緩涓涓兘澶熶粠浜嬩歡鍙ユ焺鑾峰緱鎴栧悜浜嬩歡鍙ユ焺浼犻扺indows淇℃伅鐨勪富浜嬩歡寰幆銆?/font>
2.1 Windows綾?br> “ Windows涓殑姣忎竴涓獥鍙c佹帶浠躲佸垪琛ㄦ銆佸璇濇鍜屽皬閮ㄤ歡絳夌瓑瀹為檯涓婇兘鏄竴涓獥鍙c傚尯鍒畠浠殑灝辨槸瀹氫箟瀹冧滑鐨勭被銆備竴涓猈indows綾誨氨鏄疻indows鑳藉鎿嶄綔鐨勪竴涓獥鍙g被鍨嬬殑鎻忚堪銆?#8221;
“鎺у埗Windows綾諱俊鎭殑鏁版嵁緇撴瀯鏈変袱涓細WNDCLASS鍜學NDCLASSEX銆俉NDCLASS鏄瘮杈冨彜鑰佺殑涓涓紝鍙兘涓嶄箙灝嗗簾寮冿紝鍥犳鎴戜滑搴斿綋浣跨敤鏂扮殑鎵╁睍鐗圵NDCLASSEX銆?#8221;
typedef struct _WNDCLASSEX { UNIT cbsize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HANDLE hInstance; HICON hIcon; HCURSON hCoursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; }WNDCLASSEX;
鍒涘緩涓涓繖鏍風殑緇撴瀯錛岀劧鍚庡氨鏄~鍐欓噷闈㈡墍鏈夌殑鎴愬憳鍙橀噺錛歐NDCLASSEX winclass;
2.2浜嬩歡鍙ユ焺
榪欓噷鎵璇寸殑鍙ユ焺錛坋xent handler錛夊氨鏄綋浜嬩歡鍙戠敓鏃禬indows浠庝富浜嬩歡寰幆璋冪敤鐨勫洖璋?br>鍑芥暟銆傚浜庡垱寤虹殑浠諱綍涓涓猈indows綾伙紝閮芥湁涓涓嫭绔嬬殑浜嬩歡鍙ユ焺錛屾垜浠О鍛煎畠涓篧inProc錛屽綋鐢ㄦ埛
鍜學indows榪愯浠誨姟鏃訛紝浣犵殑紿楀彛鍜?鎴栧叾浠栫殑搴旂敤紼嬪簭紿楀彛浜х敓浜嬩歡鍜屾秷鎭傛墍鏈夌殑娑堟伅閮借繘鍏ヤ竴
涓槦鍒楋紝鑰屼綘鐨勭獥鍙g殑娑堟伅鍙戦佷綘鐨勭獥鍙d笓鐢ㄩ槦鍒椾腑銆傜劧鍚庝富浜嬩歡寰幆媯绱㈣繖浜涙秷鎭紝騫朵笖灝嗗畠浠彂
閫佸埌浣犵殑紿楀彛鐨刉inProc涓潵澶勭悊銆?/pre>WinProc鍘熷瀷錛?br> LRESULT CALLBACK WindowProc(
HWND hWnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam );2.3娉ㄥ唽Windows綾?br> Windows綾誨凡緇忓畾涔夊茍涓斿瓨鏀懼湪Windsclass涓紝蹇呴』灝嗘柊鐨勭被閫氱煡Windows銆傝鍔熻兘閫氳繃
RegisterClassEx()鍑芥暟瀹炵幇錛屼嬌鐢ㄤ竴涓寚鍚戞柊綾誨畾涔夌殑鎸囬拡鏉ュ疄鐜般傚涓嬶細
RegisterClassEx(&winclass);2.4鍒涘緩紿楀彛
鍒涘緩紿楀彛浣跨敤CreateWindow()鎴朇reateWindowEx()鍑芥暟銆?/pre>2.5涓諱簨浠跺驚鐜?br>![]()
while(TRUE)
{
// test if there is a message in queue, if so get it
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
// test if this is a quit
if (msg.message == WM_QUIT)
break;
// translate any accelerator keys
TranslateMessage(&msg);
// send the message to the window proc
DispatchMessage(&msg);
} // end if
// main game processing goes here
Game_Main();
} // end while
]]>
緇堜簬絳夊埌鍦ㄧ綉涓婁拱鐨?a >涔?/a>浜嗭紝铏界劧榪欎功鏃朵唬鏈夌偣鑰侊紝浣嗚繕鏄寰楄繕鏄湁浠峰鹼紝搴旇濂藉ソ璇諱竴璇伙紝浠旂粏闃呰褰撶劧鏄鍋氫簺絎旇鍟︺?/p>
瀛︿範鍓嶇殑鍑嗗宸ヤ綔錛?br> 榪欐湰涔︾殑渚嬪瓙鐢ㄧ殑鏄疺C++ 6.0+DirectX 7.0錛屾墍浠ュ厛寰楀埌緗戜笂涓嬭澆DirectX 7.0 SDK錛?.0浜﹀彲錛夛紝瑙e帇錛屾妸Include 鍜宭ib 涓嬬殑鏂囦歡鍏ㄩ儴鎷瘋礉鍒癡c ++鐨勫搴旂洰褰曚笅錛岀劧鍚庯紝鎴戝氨璇曠潃緙栬瘧浜嗙涓绔犵殑涓涓緥瀛愭父鎴?--鎵撶爾鍧楃殑娓告垙錛屽彂鐜拌繛鎺ヤ笉浜嗗閮ㄦ枃浠訛紒鏃犲錛岀櫨搴︿竴涓嬶紝鍘熸潵榪樺緱瀵圭紪璇戝櫒鍋氫簺宸ヤ綔錛氬湪Project/Settings /link Object/library 娣誨姞 ddraw.lib dxguid.lib 銆?/p>
絎竴绔?瀛︽搗鏃犳動
璁茶В娓告垙璇炵敓鐨勬暣涓繃紼嬶紝Windows涓嬮潰鐨勬父鎴忚繍琛屾暣涓繃紼嬪拰娓告垙緙栫▼涓殑瑙勮寖銆?br> “
涓涓畝鍖栨父鎴忕殑緇撴瀯錛氱涓姝ワ紝鍒濆鍖?br>
絎簩姝ワ紝榪涘叆娓告垙寰幆
絎笁姝ワ細鑾峰緱鐜╁鐨勮緭鍏ヤ俊鎭?br>
絎洓姝ワ細鎵ц浜哄伐鏅鴻兘鍜屾父鎴忛昏緫
絎簲姝ワ細娓叉煋涓嬩竴甯у浘鍍?br> 絎叚姝ワ細鍚屾鏄劇ず
絎竷姝ワ細寰幆
絎叓姝ワ細鍏抽棴 ”
鍟婂搱鍘熸潵涓涓父鎴忕▼搴忕畝鍗曠偣灝辨槸榪欐牱榪愯鐨勶紝娓告垙涔熷茍涓嶆槸閭d箞紲炵棰濄?/p>
鍙﹀鐨勬敹鑾峰氨鏄父鎴忕紪紼嬩竴浜涜鑼冨拰鎶宸э細
1.“浣犱笉搴斿綋鍦ㄥ榪愯鏃墮棿鎴栧唴瀛樿姹傜壒鍒弗鏍肩殑浠g爜孌典腑寮忕敤楂樺眰API銆傜壒鍒槸涓庢父鎴忓唴寰幆鏈夊叧鐨勪唬鐮佸ぇ澶氶渶瑕佹墜宸ョ紪鍐欙紝鍚﹀垯娓告垙澶氬崐浼氶亣鍒頒弗閲嶇殑閫熷害鍜屾ц兘鐨勯棶棰樸傚綋鐒訛紝榪欏茍涓嶄竴浣嶇潃灝變笉鑳戒俊浠籇irectX絳? API錛屽洜涓篋irectX鐨勮璁$洰鐨勫氨鏄吋欏鵑珮鎬ц兘鍜?#8220;thin”鍘熷垯銆備絾灝遍氬父鏉ヨ錛屽簲褰撻伩鍏嶉綣佽皟鐢ㄩ珮灞傜殑鍑芥暟銆?#8221;----榪欑偣鏄湁鐐逛笉澶槑鐧斤紝浣滆呮槸瀵笰PI鐨勬ц兘涓嶅お淇′換錛熻繕鏄彟鏈夊師鍥狅紝鏆備笖鏀懼湪榪欓噷錛岀瓑鏁翠綋鐪嬪畬鍐嶇爺絀朵箣銆?/p>
2.“涓嶈瀹蟲曚嬌鐢ㄥ叏灞鍙橀噺銆?#8221;“鐢變簬鍙傛暟瑕佽鍘嬫爤鍜屽嚭鏍堬紝鎵ц榪欎釜鍑芥暟浣撴墍闇鏃墮棿灝忎簬璋冪敤鍑芥暟鎵闇鐨勬椂闂達紝鍦ㄨ繖縐嶆儏鍐典笅錛屾洿濂界殑鏂規(guī)硶鍙互鏄绔嬩竴浜涘叏灞鍙橀噺錛岀劧鍚庡啀璋冪敤鍓嶈繘琛岃祴鍊間互浼犻掑弬鏁?#8221;鈥斺旀椂闂存槸濡傛鐨勯噸瑕侊紒
3.“浣跨敤鍐呰仈鍑芥暟”--鍛靛懙錛岃繖涓笂C++璇炬椂鑰佸笀璁插暒銆傝櫧鐒朵嬌緙栬瘧鍚庣殑紼嬪簭鍙樺ぇ浜嗭紝浣嗗嵈鏈夋晥鐨勬彁楂樿繍琛岄熷害銆?/p>
4.“灝介噺浣跨敤32浣嶇殑鍙橀噺鑰屼笉鏄?浣嶆垨16浣嶅彉閲忋?#8221;
“struct CPOINT
{
short x,y;
unsigned char c;
} //
end CPOINT”
“娉ㄦ剰錛屽畾涔夎繖涓粨鏋滅湅涓婂幓涓嶉敊錛屼絾瀹為檯騫墮潪濡傛!棣栧厛錛岀粨鏋勬湰韜槸涓涓?瀛楄妭闀跨殑緇撴瀯鈥斺?2*sizeof(short)+sizeof(char))=5
瀛楄妭銆傝繖澶碂浜嗛錛岀敱浜庢病娉ㄦ剰瀛楄妭瀵歸綈錛屽唴瀛樺鍧鐨勬椂鍊欎細鍑哄ぇ闂銆?#8221;鈥斺旇繖鐐圭‘瀹炰笉鐭ラ亾錛佹爣璁頒箣銆?/p>
5.“浠ョ被浼糝ISC鐨勬柟寮忔潵緙栫▼銆傛崲鍙ヨ瘽鏉ヨ錛屽敖閲忕畝鍖栦綘鐨勪唬鐮侊紝鑰屼笉鏄槸浠栨洿澶嶆潅銆?#8221;鈥斺斾互鍓嶄竴鐩存兂錛岃兘涓鍙ュ畬鎴愶紝灝變笉瑕佸啓澶氬嚑琛岋紝鍘熸潵綆鍗曞彞瀛愶紝鎵ц鐨勬洿蹇?#8220;浣跨敤浜岃繘鍒剁Щ浣嶈繍綆楁潵榪涜涔樻暟鏄?鐨勫箓鐨勭畝鍗曟暣鏁頒箻娉曘?#8221;
6.“涓嶈涓虹畝鍗曠殑瀵硅薄瀹氫箟澶澶嶆潅鐨勬暟鎹粨鏋勩傞摼琛ㄧ粨鏋勫緢濂界敤錛屼絾騫朵笉鎰忓懗鐫褰撲綘鎵闇瑕佺殑鍏跺疄鏄ぇ綰︽湁256涓浐瀹氭暟緇勭殑鏃跺欙紝浣犱篃璇ヤ嬌鐢ㄩ摼琛?#8221;
7.鏈鍚庢湁涓涓皬娓告垙錛屼絾鏄垜瀵歸噷闈㈢殑紕版挒綆楁硶錛屼笉澶悊瑙e晩錛岀湡鏄湁鐐歸毦搴﹀晩銆?/p>