锘??xml version="1.0" encoding="utf-8" standalone="yes"?>乱码第一页成人,久久久视频精品,久久精品国产亚洲精品http://m.shnenglu.com/bestcln/category/8824.html鍒濆VC ,灝辨槸鎶婃瘡澶╂墍鐪嬪埌鐨勬暣鐞嗗埌鍗氬錛屾參鎱㈡秷鍖栬繖浜涘唴瀹廣傝璇佹垜鐨勫涔犱箣璺惂銆傚緢澶氶兘鏄漿杞姐?/description>zh-cnTue, 09 Jun 2009 05:24:56 GMTTue, 09 Jun 2009 05:24:56 GMT60windows娑堟伅鏈哄埗 (1)http://m.shnenglu.com/bestcln/articles/87137.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Tue, 09 Jun 2009 01:19:00 GMThttp://m.shnenglu.com/bestcln/articles/87137.htmlhttp://m.shnenglu.com/bestcln/comments/87137.htmlhttp://m.shnenglu.com/bestcln/articles/87137.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/87137.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/87137.html1. 紿楀彛榪囩▼

姣忎釜紿楀彛浼氭湁涓涓О涓虹獥鍙h繃紼嬬殑鍥炶皟鍑芥暟(WndProc)錛屽畠甯︽湁鍥涗釜鍙傛暟錛屽垎鍒負錛氱獥鍙e彞鏌?Window Handle),娑堟伅ID(Message ID),鍜屼袱涓秷鎭弬鏁?wParam, lParam), 褰撶獥鍙f敹鍒版秷鎭椂緋葷粺灝變細璋冪敤姝ょ獥鍙h繃紼嬫潵澶勭悊娑堟伅銆傦紙鎵浠ュ彨鍥炶皟鍑芥暟錛?/p>

2 娑堟伅綾誨瀷

1) 緋葷粺瀹氫箟娑堟伅(System-Defined Messages)

鍦⊿DK涓簨鍏堝畾涔夊ソ鐨勬秷鎭紝闈炵敤鎴峰畾涔夌殑錛屽叾鑼冨洿鍦╗0x0000, 0x03ff]涔嬮棿錛?鍙互鍒嗕負浠ヤ笅涓夌被錛?br>
1>紿楀彛娑堟伅(Windows Message)

涓庣獥鍙g殑鍐呴儴榪愪綔鏈夊叧錛屽鍒涘緩紿楀彛錛岀粯鍒剁獥鍙o紝閿姣佺獥鍙g瓑銆傚彲浠ユ槸涓鑸殑紿楀彛錛屼篃鍙互鏄疍ialog,鎺т歡絳夈?br>
濡傦細WM_CREATE, WM_PAINT, WM_MOUSEMOVE, WM_CTLCOLOR, WM_HSCROLL...

2>鍛戒護娑堟伅(Command Message)

涓庡鐞嗙敤鎴瘋姹傛湁鍏籌紝 濡傚崟鍑昏彍鍗曢」鎴栧伐鍏鋒爮鎴栨帶浠舵椂錛?灝變細浜х敓鍛戒護娑堟伅銆?br>
WM_COMMAND, LOWORD(wParam)琛ㄧず鑿滃崟欏癸紝宸ュ叿鏍忔寜閽垨鎺т歡鐨処D銆傚鏋滄槸鎺т歡, HIWORD(wParam)琛ㄧず鎺т歡娑堟伅綾誨瀷

3> 鎺т歡閫氱煡(Notify Message)

鎺т歡閫氱煡娑堟伅錛?榪欐槸鏈鐏墊椿鐨勬秷鎭牸寮忥紝 鍏禡essage, wParam, lParam鍒嗗埆涓猴細WM_NOTIFY, 鎺т歡ID錛屾寚鍚慛MHDR鐨勬寚閽堛侼MHDR鍖呭惈鎺т歡閫氱煡鐨勫唴瀹癸紝 鍙互浠繪剰鎵╁睍銆?br>
2) 紼嬪簭瀹氫箟娑堟伅(Application-Defined Messages)

鐢ㄦ埛鑷畾涔夌殑娑堟伅錛?瀵逛簬鍏惰寖鍥存湁濡備笅瑙勫畾錛?br>
WM_USER: 0x0400-0x7FFF    (ex. WM_USER+10)

WM_APP(winver>4.0): 0x8000-0xBFFF (ex.WM_APP+4)

RegisterWindowMessage: 0xC000-0xFFFF

3 娑堟伅闃熷垪(Message Queues)

Windows涓湁涓ょ綾誨瀷鐨勬秷鎭槦鍒?br>
1) 緋葷粺娑堟伅闃熷垪(System Message Queue)

榪欐槸涓涓郴緇熷敮涓鐨凲ueue錛岃澶囬┍鍔?mouse, keyboard)浼氭妸鎿嶄綔杈撳叆杞寲鎴愭秷鎭瓨鍦ㄧ郴緇熼槦鍒椾腑錛岀劧鍚庣郴緇熶細鎶婃娑堟伅鏀懼埌鐩爣紿楀彛鎵鍦ㄧ殑綰跨▼鐨勬秷鎭槦鍒?thread-specific message queue)涓瓑寰呭鐞?br>
2) 綰跨▼娑堟伅闃熷垪(Thread-specific Message Queue)

姣忎竴涓狦UI綰跨▼閮戒細緇存姢榪欐牱涓涓嚎紼嬫秷鎭槦鍒椼?榪欎釜闃熷垪鍙湁鍦ㄧ嚎紼嬭皟鐢℅DI鍑芥暟鏃舵墠浼氬垱寤猴紝榛樿涓嶅垱寤?銆傜劧鍚庣嚎紼嬫秷鎭槦鍒椾腑鐨勬秷鎭細琚佸埌鐩稿簲鐨勭獥鍙h繃紼?WndProc)澶勭悊.

娉ㄦ剰錛?綰跨▼娑堟伅闃熷垪涓璚M_PAINT錛學M_TIMER鍙湁鍦≦ueue涓病鏈夊叾浠栨秷鎭殑鏃跺欐墠浼氳澶勭悊錛學M_PAINT娑堟伅榪樹細琚悎騫朵互鎻愰珮鏁堢巼銆傚叾浠栨墍鏈夋秷鎭互鍏堣繘鍏堝嚭錛團IFO錛夌殑鏂瑰紡琚鐞嗐?/p>

4 闃熷垪娑堟伅(Queued Messages)鍜岄潪闃熷垪娑堟伅(Non-Queued Messages)

1)闃熷垪娑堟伅(Queued Messages)


娑堟伅浼氬厛淇濆瓨鍦ㄦ秷鎭槦鍒椾腑錛屾秷鎭驚鐜細浠庢闃熷垪涓彇娑堟伅騫跺垎鍙戝埌鍚勭獥鍙e鐞?br>
濡傞紶鏍囷紝閿洏娑堟伅銆?br>
2) 闈為槦鍒楁秷鎭?NonQueued Messages)

娑堟伅浼氱粫榪囩郴緇熸秷鎭槦鍒楀拰綰跨▼娑堟伅闃熷垪鐩存帴鍙戦佸埌紿楀彛榪囩▼琚鐞?br>
濡傦細 WM_ACTIVATE, WM_SETFOCUS, WM_SETCURSOR錛?WM_WINDOWPOSCHANGED

娉ㄦ剰: postMessage鍙戦佺殑娑堟伅鏄槦鍒楁秷鎭紝瀹冧細鎶婃秷鎭疨ost鍒版秷鎭槦鍒椾腑錛?SendMessage鍙戦佺殑娑堟伅鏄潪闃熷垪娑堟伅錛?琚洿鎺ラ佸埌紿楀彛榪囩▼澶勭悊

5 PostMessage(PostThreadMessage), SendMessage

PostMessage:鎶婃秷鎭斁鍒版寚瀹氱獥鍙f墍鍦ㄧ殑綰跨▼娑堟伅闃熷垪涓悗绔嬪嵆榪斿洖銆?PostThreadMessage錛氭妸娑堟伅鏀懼埌鎸囧畾綰跨▼鐨勬秷鎭槦鍒椾腑鍚庣珛鍗寵繑鍥炪?br>
SendMessage錛氱洿鎺ユ妸娑堟伅閫佸埌紿楀彛榪囩▼澶勭悊錛?澶勭悊瀹屼簡鎵嶈繑鍥炪?/p>

6 GetMessage, PeekMessage

PeekMessage浼氱珛鍗寵繑鍥?nbsp; 鍙互淇濈暀娑堟伅

GetMessage鍦ㄦ湁娑堟伅鏃惰繑鍥?nbsp;浼氬垹闄ゆ秷鎭?/p>

7 TranslateMessage, TranslateAccelerator

TranslateMessage: 鎶婁竴涓獀irtual-key娑堟伅杞寲鎴愬瓧絎︽秷鎭?character message)錛屽茍鏀懼埌褰撳墠綰跨▼鐨勬秷鎭槦鍒椾腑錛屾秷鎭驚鐜笅涓嬈″彇鍑哄鐞嗐?br>
TranslateAccelerator: 灝嗗揩鎹烽敭瀵瑰簲鍒扮浉搴旂殑鑿滃崟鍛戒護銆傚畠浼氭妸WM_KEYDOWN 鎴?WM_SYSKEYDOWN杞寲鎴愬揩鎹烽敭琛ㄤ腑鐩稿簲鐨刉M_COMMAND 鎴朩M_SYSCOMMAND娑堟伅錛?鐒跺悗鎶婅漿鍖栧悗鐨?WM_COMMAND鎴朩M_SYSCOMMAND鐩存帴鍙戦佸埌紿楀彛榪囩▼澶勭悊錛?澶勭悊瀹屽悗鎵嶄細榪斿洖銆?/p>

8(娑堟伅姝婚攣( Message Deadlocks)

鍋囪鏈夌嚎紼婣鍜孊錛?鐜板湪鏈変互涓嬩笅姝ラ

1) 綰跨▼A SendMessage緇欑嚎紼婤, A絳夊緟娑堟伅鍦ㄧ嚎紼婤涓鐞嗗悗榪斿洖

2) 綰跨▼B鏀跺埌浜嗙嚎紼婣鍙戞潵鐨勬秷鎭紝騫惰繘琛屽鐞嗭紝 鍦ㄥ鐞嗚繃紼嬩腑錛孊涔熷悜綰跨▼A SendMessgae錛岀劧鍚庣瓑寰呬粠A榪斿洖銆?br>
鍥犱負姝ゆ椂錛?綰跨▼A姝g瓑寰呬粠綰跨▼B榪斿洖錛?鏃犳硶澶勭悊B鍙戞潵鐨勬秷鎭紝 浠庤屽鑷翠簡綰跨▼A,B鐩鎬簰絳夊緟錛?褰㈡垚姝婚攣銆傚涓嚎紼嬩篃鍙互褰㈡垚鐜艦姝婚攣銆?br>
鍙互浣跨敤 SendNotifyMessage鎴朣endMessageTimeout鏉ラ伩鍏嶅嚭鐜版閿併?/p>

9 BroadcastSystemMessage

鎴戜滑涓鑸墍鎺ヨЕ鍒扮殑娑堟伅閮芥槸鍙戦佺粰紿楀彛鐨勶紝 鍏跺疄錛?娑堟伅鐨勬帴鏀惰呭彲浠ユ槸澶氱澶氭牱鐨勶紝瀹冨彲浠ユ槸搴旂敤紼嬪簭(applications), 鍙畨瑁呴┍鍔?installable drivers), 緗戠粶璁懼(network drivers), 緋葷粺綰ц澶囬┍鍔?system-level device drivers)絳夛紝

BroadcastSystemMessage榪欎釜API鍙互瀵逛互涓婄郴緇熺粍浠跺彂閫佹秷鎭?/p>

]]>
鍖堢墮鍒╄〃紺烘硶http://m.shnenglu.com/bestcln/articles/86625.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Wed, 03 Jun 2009 01:45:00 GMThttp://m.shnenglu.com/bestcln/articles/86625.htmlhttp://m.shnenglu.com/bestcln/comments/86625.htmlhttp://m.shnenglu.com/bestcln/articles/86625.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/86625.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/86625.html鍑犲勾浠ュ墠,Charles Simonyi(浠栧悗鏉ユ垚涓哄井杞殑钁楀悕紼嬪簭鍛?璁捐浜嗕竴縐嶄互鍓嶇紑涓哄熀紜鐨勫懡鍚嶆柟娉?榪欑鏂規硶鍚庢潵縐頒負"鍖堢墮鍒╄〃紺烘硶"浠ヨ蹇典粬.浠栫殑鎬濇兂鏄牴鎹瘡涓爣璇嗙鎵浠h〃鐨勫惈涔夌粰瀹冧竴涓墠緙.寰蔣鍚庢潵閲囩敤浜嗚繖涓濇兂,緇欐瘡涓爣璇嗙涓涓墠緙浠ヨ鏄庡畠鐨勬暟鎹被鍨?鍥犳,鏁村瀷鍙橀噺鐨勫墠緙鏄痭,闀挎暣鍨嬪彉閲忔槸nl,瀛楃鍨嬫暟緇勫彉閲忔槸ca,浠ュ強瀛楃涓?浠ョ┖綾誨瀷緇撳熬鐨勫瓧絎︽暟緇?浠z涓哄墠緙.榪欎簺鍚嶅瓧鍙兘浼氶潪甯稿彜鎬?姣斿璇?lpszFoo琛ㄧず"Foo"鏄竴涓寚鍚戜互絀哄瓧絎︿負緇撳熬鐨勫瓧絎︿覆鐨勯暱鏁村瀷鎸囬拡.

 

榪欑鏂規硶鐨勪紭鐐規槸浣夸漢鑳藉閫氳繃鍙橀噺鐨勫悕瀛楁潵杈ㄥ埆鍙橀噺鐨勭被鍨?鑰屼笉姣斿幓鏌ユ壘瀹冪殑瀹氫箟.閬楁喚鐨勬槸,榪欑鏂規硶涓嶄粎浣垮彉閲忓悕瀛楅潪甯哥粫鍙?鑰屼笖浣挎敼鍙樺彉閲忕被鍨嬬殑宸ヤ綔鍙樺緱鍗佸垎鑹板法.鍦╓indows3.1涓?鏁村瀷鍙橀噺涓?6涓哄.濡傛灉鎴戜滑鍦ㄥ紑濮嬫椂閲囩敤浜嗕竴涓暣鍨嬪彉閲?浣嗘槸鍦ㄩ氳繃30---40涓嚱鏁扮殑璁$畻涔嬪悗,鍙戠幇閲囩敤鏁村瀷鍙橀噺瀹藉害涓嶅,榪欐椂鎴戜滑涓嶄粎瑕佹敼鍙樿繖涓彉閲忕殑綾誨瀷,鑰屼笖瑕佹敼鍙樿繖涓彉閲忓湪榪?0--40涓嚱鏁頒腑鐨勫悕瀛?

 

鍥犱負涓嶅垏瀹為檯,闄や簡涓浜涢〗鍥虹殑Windows紼嬪簭鍛樺宸茬粡娌℃湁浜哄啀浣跨敤"鍖堢墮鍒╄〃紺烘硶"浜?姣棤鐤戦棶,鍦ㄦ煇縐嶅満鍚堝畠渚濈劧瀛樺湪,浣嗗ぇ閮ㄥ垎浜虹幇鍦ㄥ凡緇忔姏寮冨畠浜?涓鑸岃█,杈撳叆鍓嶇紑鏄竴縐嶇碂緋曠殑鎯蟲硶,鍥犱負瀹冩妸鍙橀噺浜庡叾綾誨瀷绱х揣鍦扮粦鍦ㄤ簡涓璧?

瀵逛簬30琛屼互涓嬬殑鍑芥暟錛屽寛鐗欏埄鏂規硶涓鑸湁浼樺娍銆?/p>

灝ゅ叾鏄鐣岄潰緙栫▼錛屾湁浼樺娍銆?/p>

浣嗗浜庢湁寮虹儓鐨勭畻娉曡姹傘佸挨鍏舵槸鏈夊緢澶氭娊璞$被鍨嬬殑C++紼嬪簭錛屽寛鐗欏埄鏂規硶綆鐩存槸涓涓伨闅俱?/p>

鐪嬩綘鐢ㄥ湪浠涔堝湴鏂廣?/p>

鐜板湪鏈変簡寰堝ソ鐨処DE宸ュ叿,濡?VC,SourceInsight絳?

閫変腑鍙橀噺,浼氳嚜鍔ㄦ彁紺哄憡璇変綘瀹冪殑澹版槑鍜屽畾涔?榪欐牱

鍖堢墮鍒╁懡鍚嶆硶灝辨病鏈夊緢澶х殑蹇呰浜?

鏃犻潪灝辨槸涓轟簡紼嬪簭鍙鎬ц緝濂?

瀹為檯涓婅壇濂界殑浠g爜涔﹀啓涔犳儻姣斿己鍒朵嬌鐢ㄥ寛鐗欏埄鍛藉悕娉曟洿閲嶈.

緋葷粺鎬с傛暣浣撴с傚彲璇繪с傚垎綾昏娓呮銆傝鏈夋敞閲婏紒

 

鍖堢墮鍒╁懡鍚嶆硶鏄井杞帹騫跨殑涓縐嶅叧浜庡彉閲忋佸嚱鏁般佸璞°佸墠緙銆佸畯瀹氫箟絳夊悇縐嶇被鍨嬬殑絎﹀彿鐨勫懡鍚嶈鑼冦傚寛鐗欏埄鍛藉悕娉曠殑涓昏鎬濇兂鏄細鍦ㄥ彉閲忓拰鍑芥暟鍚嶄腑鍔犲叆鍓嶇紑浠ュ榪涗漢浠紼嬪簭鐨勭悊瑙c傚畠鏄敱寰蔣鍐呴儴鐨勪竴涓寛鐗欏埄浜哄彂璧蜂嬌鐢ㄧ殑錛岀粨鏋滃畠鍦ㄥ井杞唴閮ㄩ愭笎嫻佽璧鋒潵錛屽茍涓旀帹騫跨粰浜嗗叏涓栫晫鐨刉indows寮鍙戜漢鍛樸備笅闈㈠皢浠嬬粛鍖堢墮鍒╁懡鍚嶆硶錛屽悗闈㈢殑渚嬪瓙閲屼篃浼氬敖閲忛伒瀹堝畠鍜屼笂闈㈢殑浠g爜椋庢牸銆傝繕鏄偅鍙ヨ瘽錛屽茍涓嶆槸瑕佹眰鎵鏈夌殑璇昏呴兘瑕佸幓閬靛畧錛屼絾鏄笇鏈涜鑰呬綔涓轟竴涓幇浠g殑杞歡寮鍙戜漢鍛橀兘鍘婚伒瀹堝畠銆?/p>

 

 

a       Array                                 鏁扮粍

  b       BOOL (int)                            甯冨皵(鏁存暟)

  by      Unsigned Char (Byte)                  鏃犵鍙峰瓧絎?瀛楄妭)

  c       Char                                  瀛楃(瀛楄妭)

  cb      Count of bytes                        瀛楄妭鏁?/p>

  cr      Color reference value                 棰滆壊(鍙傝?鍊?/p>

  cx      Count of x (Short)                    x鐨勯泦鍚?鐭暣鏁?

  dw      DWORD   (unsigned long)                 鍙屽瓧(鏃犵鍙烽暱鏁存暟)

  f       Flags   (usually multiple bit values)   鏍囧織(涓鑸槸鏈夊浣嶇殑鏁板?

  fn      Function                              鍑芥暟

  g_      global                                鍏ㄥ眬鐨?/p>

  h       Handle                                鍙ユ焺

  i       Integer                               鏁存暟

  l       Long                                  闀挎暣鏁?/p>

  lp      Long pointer                          闀挎寚閽?/p>

  m_      Data member of a class                涓涓被鐨勬暟鎹垚鍛?/p>

  n       Short int                             鐭暣鏁?/p>

  p       Pointer                               鎸囬拡

  s       String                                瀛楃涓?/p>

  sz      Zero terminated String                浠?緇撳熬鐨勫瓧絎︿覆

  tm      Text metric                           鏂囨湰瑙勫垯

  u       Unsigned int                          鏃犵鍙鋒暣鏁?/p>

  ul      Unsigned long (ULONG)                 鏃犵鍙烽暱鏁存暟

  w       WORD (unsigned short)                 鏃犵鍙風煭鏁存暟

  x,y     x, y coordinates (short)              鍧愭爣鍊?鐭暣鏁?/p>

  v       void                                  絀?/p>

 

 

 

鏈夊叧欏圭洰鐨勫叏灞鍙橀噺鐢╣_寮濮嬶紝綾繪垚鍛樺彉閲忕敤m_錛屽眬閮ㄥ彉閲忚嫢鍑芥暟杈冨ぇ鍒欏彲鑰冭檻鐢╨_鐢ㄤ互鏄劇ず璇存槑鍏舵槸灞閮ㄥ彉閲忋?/p>

 

鍓嶇紑       綾誨瀷       渚嬪瓙

g_    鍏ㄥ眬鍙橀噺       g_Servers

C     綾繪垨鑰呯粨鏋勪綋       CDocument錛孋PrintInfo

m_   鎴愬憳鍙橀噺       m_pDoc錛宮_nCustomers

 

VC甯哥敤鍓嶇紑鍒楄〃錛?/p>

 

鍓嶇紑       綾誨瀷       鎻忚堪       渚嬪瓙

ch    char 8浣嶅瓧絎?nbsp;   chGrade

ch    TCHAR       16浣峌NICODE綾誨瀷瀛楃       chName

b     BOOL       甯冨皵鍙橀噺       bEnabled

n     int    鏁村瀷錛堝叾澶у皬鐢辨搷浣滅郴緇熷喅瀹氾級       nLength

n     UINT       鏃犵鍙鋒暣鍨嬶紙鍏跺ぇ灝忕敱鎿嶄綔緋葷粺鍐沖畾錛?nbsp;      nLength

w    WORD       16浣嶆棤絎﹀彿鏁村瀷    wPos

l      LONG       32浣嶆湁絎﹀彿鏁村瀷    lOffset

dw   DWORD       32浣嶆棤絎﹀彿鏁村瀷       dwRange

p     *       Ambient memory model pointer 鍐呭瓨妯″潡鎸囬拡錛屾寚閽堝彉閲?nbsp;   pDoc

lp     FAR*       闀挎寚閽?nbsp;      lpDoc

lpsz  LPSTR       32浣嶅瓧絎︿覆鎸囬拡       lpszName

lpsz  LPCSTR       32浣嶅父閲忓瓧絎︿覆鎸囬拡       lpszName

lpsz  LPCTSTR       32浣峌NICODE綾誨瀷甯擱噺鎸囬拡       lpszName

h     handle       Windows瀵硅薄鍙ユ焺       hWnd

lpfn  (*fn)()       鍥炶皟鍑芥暟鎸囬拡 Callback Far pointer to CALLBACK function       lpfnAbort

 

Windows瀵硅薄鍚嶇О緙╁啓錛?/p>

 

Windows瀵硅薄       渚嬪瓙鍙橀噺       MFC綾?nbsp;      渚嬪瓙瀵硅薄

HWND    hWnd;       CWnd*       pWnd;

HDLG     hDlg;       CDialog*       pDlg;

HDC       hDC;       CDC*       pDC;

HGDIOBJ       hGdiObj;       CGdiObject*     pGdiObj;

HPEN     hPen;       CPen*       pPen;

HBRUSH hBrush;       CBrush*       pBrush;

HFONT   hFont;       CFont*       pFont;

HBITMAP       hBitmap;       CBitmap*       pBitmap;

HPALETTE       hPalette;       CPalette*       pPalette;

HRGN     hRgn;       CRgn*       pRgn;

HMENU hMenu;       CMenu*       pMenu;

HWND    hCtl;       CStatic*       pStatic;

HWND    hCtl;       CButton*       pBtn;

HWND    hCtl;       CEdit*       pEdit;

HWND    hCtl;       CListBox*       pListBox;

HWND    hCtl;       CComboBox*       pComboBox;



]]>
鍙岀紦瀛? 錛?錛?/title><link>http://m.shnenglu.com/bestcln/articles/85679.html</link><dc:creator>鏋佸搧鍨冨溇</dc:creator><author>鏋佸搧鍨冨溇</author><pubDate>Mon, 25 May 2009 02:43:00 GMT</pubDate><guid>http://m.shnenglu.com/bestcln/articles/85679.html</guid><wfw:comment>http://m.shnenglu.com/bestcln/comments/85679.html</wfw:comment><comments>http://m.shnenglu.com/bestcln/articles/85679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bestcln/comments/commentRss/85679.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bestcln/services/trackbacks/85679.html</trackback:ping><description><![CDATA[鏄劇ず鐨勫浘褰負浠涔堜細闂儊<br>銆銆鎴戜滑鐨勭粯鍥捐繃紼嬪ぇ澶氭斁鍦∣nDraw鎴栬匫nPaint鍑芥暟涓紝OnDraw鍦ㄨ繘琛屽睆騫曟樉紺烘椂鏄敱OnPaint榪涜璋冪敤鐨勩傚綋紿楀彛鐢變簬浠諱綍鍘熷洜闇瑕侀噸緇樻椂錛屾繪槸鍏堢敤鑳屾櫙鑹插皢鏄劇ず鍖烘竻闄わ紝鐒跺悗鎵嶈皟鐢∣nPaint錛岃岃儗鏅壊寰寰涓庣粯鍥懼唴瀹瑰弽宸緢澶э紝榪欐牱鍦ㄧ煭鏃墮棿鍐呰儗鏅壊涓庢樉紺哄浘褰㈢殑浜ゆ浛鍑虹幇錛屼嬌寰楁樉紺虹獥鍙g湅璧鋒潵鍦ㄩ棯銆傚鏋滃皢鑳屾櫙鍒瘋緗垚NULL錛岃繖鏍鋒棤璁烘庢牱閲嶇粯鍥懼艦閮戒笉浼氶棯浜嗐傚綋鐒訛紝榪欐牱鍋氫細浣垮緱紿楀彛鐨勬樉紺轟貢鎴愪竴鍥紝鍥犱負閲嶇粯鏃舵病鏈夎儗鏅壊瀵瑰師鏉ョ粯鍒剁殑鍥懼艦榪涜娓呴櫎錛岃屽張鍙犲姞涓婁簡鏂扮殑鍥懼艦銆傛湁鐨勪漢浼氳錛岄棯鐑佹槸鍥犱負緇樺浘鐨勯熷害澶參鎴栬呮樉紺虹殑鍥懼艦澶鏉傞犳垚鐨勶紝鍏跺疄榪欐牱璇村茍涓嶅錛岀粯鍥劇殑鏄劇ず閫熷害瀵歸棯鐑佺殑褰卞搷涓嶆槸鏍規湰鎬х殑銆備緥濡傚湪OnDraw(CDC *pDC)涓繖鏍峰啓錛?br><br>銆pDC->MoveTo(0,0);<br>銆pDC->LineTo(100,100);<br><br>銆銆榪欎釜緇樺浘榪囩▼搴旇鏄潪甯哥畝鍗曘侀潪甯稿揩浜嗗惂錛屼絾鏄媺鍔ㄧ獥鍙e彉鍖栨椂榪樻槸浼氱湅瑙侀棯鐑併傚叾瀹炰粠閬撶悊涓婅錛岀敾鍥劇殑榪囩▼瓚婂鏉傝秺鎱㈤棯鐑佸簲璇ヨ秺灝戯紝鍥犱負緇樺浘鐢ㄧ殑鏃墮棿涓庣敤鑳屾櫙娓呴櫎灞忓箷鎵鑺辯殑鏃墮棿鐨勬瘮渚嬭秺澶т漢瀵歸棯鐑佺殑鎰熻浼氳秺涓嶆槑鏄俱傛瘮濡傦細娓呮灞忓箷鏃墮棿涓?s緇樺浘鏃墮棿涔熸槸涓?s錛岃繖鏍峰湪10s鍐呯殑榪炵畫閲嶇敾涓氨瑕侀棯鐑?嬈★紱濡傛灉娓呮灞忓箷鏃墮棿涓?s涓嶅彉錛岃岀粯鍥炬椂闂翠負9s錛岃繖鏍?0s鍐呯殑榪炵畫閲嶇敾鍙細闂儊涓嬈°傝繖涓篃鍙互璇曢獙錛屽湪OnDraw(CDC *pDC)涓繖鏍峰啓錛?br><br>for(int i=0;i<100000;i++)<br>{<br>銆pDC->MoveTo(0,i);<br>銆pDC->LineTo(1000,i);<br>}<br><br>銆銆紼嬪簭鏈夌偣鏋佺錛屼絾鏄兘璇存槑闂銆?br><br>銆銆璇村埌榪欓噷鍙兘鍙堟湁浜鴻璇翠簡錛屼負浠涔堜竴涓畝鍗曞浘褰㈢湅璧鋒潵娌℃湁澶嶆潅鍥懼艦閭d箞闂憿錛熻繖鏄洜涓哄鏉傚浘褰㈠崰鐨勯潰縐ぇ錛岄噸鐢繪椂閫犳垚鐨勫弽宸瘮杈冨ぇ錛屾墍浠ユ劅瑙変笂瑕侀棯寰楀帀瀹充竴浜涳紝浣嗘槸闂儊棰戠巼瑕佷綆銆傞偅涓轟粈涔堝姩鐢葷殑閲嶇敾棰戠巼楂橈紝鑰岀湅璧鋒潵鍗翠笉闂紵榪欓噷錛屾垜灝辮鍐嶆寮鴻皟浜嗭紝闂儊鏄粈涔堬紵闂儊灝辨槸鍙嶅樊錛屽弽宸秺澶э紝闂儊瓚婂帀瀹熾傚洜涓哄姩鐢葷殑榪炵畫涓や釜甯т箣闂寸殑宸紓寰堝皬鎵浠ョ湅璧鋒潵涓嶉棯銆傚鏋滀笉淇★紝鍙互鍦ㄥ姩鐢葷殑姣忎竴甯т腑闂村姞涓寮犵函鐧界殑甯э紝涓嶉棯鎵嶆憿銆? <p><font color=#0000ff>2銆佽В鍐沖姙娉曪細</font><br>銆銆鍦ㄥ浘褰㈠浘璞″鐞嗙紪紼嬭繃紼嬩腑,鍙岀紦鍐叉槸涓縐嶅熀鏈殑鎶鏈傛垜浠煡閬?濡傛灉紿椾綋鍦ㄥ搷搴擶M_PAINT娑堟伅鐨勬椂鍊欒榪涜澶嶆潅鐨勫浘褰㈠鐞嗭紝閭d箞紿椾綋鍦ㄩ噸緇樻椂鐢變簬榪囬鐨勫埛鏂拌屽紩璧烽棯鐑佺幇璞°傝В鍐寵繖涓闂鐨勬湁鏁堟柟娉曞氨鏄弻緙撳啿鎶鏈?/p> <p>銆銆鍥犱負紿椾綋鍦ㄥ埛鏂版椂錛屾昏鏈変竴涓摝闄ゅ師鏉ュ浘璞$殑榪囩▼OnEraseBkgnd錛屽畠鍒╃敤鑳屾櫙鑹插~鍏呯獥浣撶粯鍥懼尯錛岀劧鍚庡湪璋冪敤鏂扮殑緇樺浘浠g爜榪涜閲嶇粯錛岃繖鏍蜂竴鎿︿竴鍐欓犳垚浜嗗浘璞¢鑹茬殑鍙嶅樊銆傚綋WM_PAINT鐨勫搷搴斿緢棰戠箒鐨勬椂鍊欙紝榪欑鍙嶅樊涔熷氨瓚婂彂鏄庢樉銆備簬鏄垜浠氨鐪嬪埌浜嗛棯鐑佺幇璞°?/p> <p>銆銆鎴戜滑浼氬緢鑷劧鐨勬兂鍒幫紝<font color=#0000ff>閬垮厤鑳屾櫙鑹茬殑濉厖鏄渶鐩存帴鐨勫姙娉曘備絾鏄偅鏍風殑璇濓紝紿椾綋涓婁細鍙樼殑涓鍥㈢碂銆傚洜涓烘瘡嬈$粯鍒跺浘璞$殑鏃跺欓兘娌℃湁灝嗗師鏉ョ殑鍥捐薄娓呴櫎錛岄犳垚浜嗗浘璞$殑孌嬬暀錛屼簬鏄獥浣撻噸緇樻椂錛岀敾闈㈠線寰浼氬彉鐨勪貢涓冨叓緋熴傛墍浠ュ崟綰殑紱佹鑳屾櫙閲嶇粯鏄笉澶熺殑</font>銆傛垜浠繕瑕佽繘琛岄噸鏂扮粯鍥撅紝浣嗚姹傞熷害寰堝揩錛屼簬鏄垜浠兂鍒頒簡浣跨敤<font color=#ff0000>BitBlt鍑芥暟銆傚畠鍙互鏀寔鍥懼艦鍧楃殑澶嶅埗錛岄熷害寰堝揩銆傛垜浠彲浠ュ厛鍦ㄥ唴瀛樹腑浣滃浘錛岀劧鍚庣敤姝ゅ嚱鏁板皢鍋氬ソ鐨勫浘澶嶅埗鍒板墠鍙幫紝鍚屾椂紱佹鑳屾櫙鍒鋒柊錛岃繖鏍峰氨娑堥櫎浜嗛棯鐑?/font>銆備互涓婁篃灝辨槸鍙岀紦鍐茬粯鍥劇殑鍩烘湰鐨勬濊礬銆?/p> <p><font color=#0000ff>錛撱佸叿浣撴楠わ細<br></font><font color=#0000ff><font color=#000000>銆銆鍋囪鎴戜滑寤虹珛浜嗕竴涓狣raw鐨勫伐紼嬶紝鎴戜滑瑕佸湪DrawView涓繘琛岀粯鍥炬搷浣溿?br><br>銆銆鍦ㄥ弻緙撳啿鏂規硶涓紝棣栧厛瑕佸仛鐨勬槸灞忚斀鑳屾櫙鍒鋒柊銆傝儗鏅埛鏂板叾瀹炴槸鍦ㄥ搷搴擶M_ERASEBKGND娑堟伅銆傛垜浠湪瑙嗙被錛圕DrawView錛変腑娣誨姞瀵硅繖涓秷鎭殑鍝嶅簲錛屽彲浠ョ湅鍒扮己鐪佺殑浠g爜濡備笅錛?/font></font></p> <p>銆BOOL CDrawView::OnEraseBkgnd(CDC* pDC) <br>銆{<br>     銆 //return CDrawView::OnEraseBkgnd(pDC);<br>銆銆<font color=#0000ff>return TRUE;<br></font>銆}<br><br><font color=#0000ff>鎺ヤ笅鏉ユ槸鍙岀紦鍐茬殑瀹炵幇姝ラ錛?br></font><br><font color=#0000ff>錛?錛夊鍔犳垚鍛樺彉閲?/font>錛堝湪DrawView.h鏂囦歡涓級<br><br>銆//鍙傛暟澹版槑<br>銆銆CBitmap* m_pOldBitmap;<br>銆銆 CBitmap* m_pMemBitmap; //澹版槑鍐呭瓨涓壙杞戒復鏃跺浘璞$殑浣嶅浘<br>銆銆CDC* m_pMemDC;   //澹版槑鐢ㄤ簬緙撳啿浣滃浘鐨勫唴瀛楧C<br><br><font color=#0000ff>錛?錛夊垵濮嬪寲鍙橀噺</font>錛堝湪DrawView鐨勬瀯閫犲嚱鏁頒腑錛?br><br>銆銆m_pMemDC=new CDC();<br>銆銆m_pMemBitmap=new CBitmap();<br><br><font color=#0000ff>錛?錛夊鍔犳秷鎭搷搴斿嚱鏁?/font><font color=#0080ff>WM_CREATE錛?font color=#000000>鍦―rawView.cpp涓?/font>錛?br><br></font>銆int CDrawView::OnCreate(LPCREATESTRUCT lpCreateStruct)<br>銆{<br>銆銆 if (CView::OnCreate(lpCreateStruct) == -1)<br>銆銆銆 return -1;</p> <p><font color=#0000ff><font color=#000000>銆銆 int x=GetSystemMetrics(SM_CXSCREEN);<br>銆銆 int y=GetSystemMetrics(SM_CYSCREEN);<br><br>銆銆CDC* pDC=GetDC();<br>銆銆m_pMemDC->CreateCompatibleDC(pDC); //渚濋檮紿楀彛DC鍒涘緩鍏煎鍐呭瓨DC<br>銆銆m_pMemBitmap->CreateCompatibleBitmap(pDC,x,y); //鍒涘緩鍏煎浣嶅浘<br>銆 銆m_pOldBitmap=m_pMemDC->SelectObject(m_pMemBitmap); //灝嗕綅鍥鵑夎繘鍐呭瓨DC,鍘熶綅鍥句繚瀛樺埌m_pOldBitmap<br><br>銆銆 CBrush brush(RGB(255,255,255));<br>銆銆m_pMemDC->FillRect(CRect(0,0,x,y),&brush);    //璁劇疆瀹㈡埛鍖鴻儗鏅負鐧借壊<br><br>銆銆ReleaseDC(pDC);</font></font></p> <p><font color=#0000ff><font color=#000000>銆銆return 0;<br>銆}<br><font color=#0000ff>錛?錛変慨鏀筄nDraw()鍑芥暟</font>(DrawView.cpp涓?<br><br>銆銆void CDrawView::OnDraw(CDC* pDC)<br>銆銆{<br>銆銆銆CDocument* pDoc = GetDocument();<br>銆銆銆CRect rc;<br>銆銆銆GetClientRect(&rc);<br>銆銆銆<font color=#0000ff>DrawSomething();   //鍦ㄨ繖涓嚱鏁伴噷浣犲彲浠ョ敾浣犳兂鐢葷殑涓滆タ</font><br>銆銆銆pDC->BitBlt(0,0,rc.Width(),rc.Height(),m_pMemDC,0,0,SRCCOPY);<br>銆銆銆銆//榪欓噷灝辨槸灝嗗唴瀛橀噷闈㈢殑鐢誨竷澶嶅埗鍒版樉紺鴻澶囩殑buffer浜?br></font></font><font color=#0000ff><font color=#000000>銆銆}<br><br><font color=#0000ff>錛?錛夎嚜宸辯殑緇樺浘鍑芥暟</font>(DrawView.cpp涓?<br><br>銆銆void DrawSomething()<br>銆銆{<br>    銆銆m_pMemDC->Rectangle(0,0,100,100);        //姝ゅ鐢諱簡涓煩褰?br>    銆銆 Invalidate();<br>銆銆}<br><br><font color=#0000ff>錛?錛塪elete鎺塶ew鐨勪笢瑗?/font>錛堝湪DrawView鐨勬瀽鏋勫嚱鏁頒腑錛?br><br></font></font><font color=#0000ff><font color=#000000>銆銆delete m_pBitmap;<br>    銆delete m_pMemDC;<br></font></font></p> <img src ="http://m.shnenglu.com/bestcln/aggbug/85679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bestcln/" target="_blank">鏋佸搧鍨冨溇</a> 2009-05-25 10:43 <a href="http://m.shnenglu.com/bestcln/articles/85679.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VC++鍙岀紦鍐插疄鐜版柟娉?http://m.shnenglu.com/bestcln/articles/85673.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Mon, 25 May 2009 01:58:00 GMThttp://m.shnenglu.com/bestcln/articles/85673.htmlhttp://m.shnenglu.com/bestcln/comments/85673.htmlhttp://m.shnenglu.com/bestcln/articles/85673.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/85673.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/85673.html銆銆鍥犱負紿椾綋鍦ㄥ埛鏂版椂錛屾昏鏈変竴涓摝闄ゅ師鏉ュ浘璞$殑榪囩▼OnEraseBkgnd錛屽畠鍒╃敤鑳屾櫙鑹插~鍏呯獥浣撶粯鍥懼尯錛岀劧鍚庡湪璋冪敤鏂扮殑緇樺浘浠g爜榪涜閲嶇粯錛岃繖鏍蜂竴鎿︿竴鍐欓犳垚浜嗗浘璞¢鑹茬殑鍙嶅樊銆傚綋WM_PAINT鐨勫搷搴斿緢棰戠箒鐨勬椂鍊欙紝榪欑鍙嶅樊涔熷氨瓚婂彂鏄庢樉銆備簬鏄垜浠氨鐪嬪埌浜嗛棯鐑佺幇璞°?/p>

銆銆鎴戜滑浼氬緢鑷劧鐨勬兂鍒幫紝閬垮厤鑳屾櫙鑹茬殑濉厖鏄渶鐩存帴鐨勫姙娉曘備絾鏄偅鏍風殑璇濓紝紿椾綋涓婁細鍙樼殑涓鍥㈢碂銆傚洜涓烘瘡嬈$粯鍒跺浘璞$殑鏃跺欓兘娌℃湁灝嗗師鏉ョ殑鍥捐薄娓呴櫎錛岄犳垚浜嗗浘璞$殑孌嬬暀錛屼簬鏄獥浣撻噸緇樻椂錛岀敾闈㈠線寰浼氬彉鐨勪貢涓冨叓緋熴傛墍浠ュ崟綰殑紱佹鑳屾櫙閲嶇粯鏄笉澶熺殑銆傛垜浠繕瑕佽繘琛岄噸鏂扮粯鍥撅紝浣嗚姹傞熷害寰堝揩錛屼簬鏄垜浠兂鍒頒簡浣跨敤BitBlt鍑芥暟銆傚畠鍙互鏀寔鍥懼艦鍧楃殑澶嶅埗錛岄熷害寰堝揩銆傛垜浠彲浠ュ厛鍦ㄥ唴瀛樹腑浣滃浘錛岀劧鍚庣敤姝ゅ嚱鏁板皢鍋氬ソ鐨勫浘澶嶅埗鍒板墠鍙幫紝鍚屾椂紱佹鑳屾櫙鍒鋒柊錛岃繖鏍峰氨娑堥櫎浜嗛棯鐑併備互涓婁篃灝辨槸鍙岀紦鍐茬粯鍥劇殑鍩烘湰鐨勬濊礬銆?/p>

銆銆鍏堟寜鏅氬仛鍥劇殑鏂規硶榪涜緙栫▼銆傚嵆鍦ㄨ綾葷殑OnDraw鍑芥暟涓坊鍔犵粯鍥句唬鐮併傚湪姝ゆ垜浠粯鍒惰嫢騫插悓蹇冨渾錛屼唬鐮佸涓嬶細
 CBCDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 CPoint ptCenter;
 CRect rect,ellipseRect;
 GetClientRect(&rect);
 ptCenter = rect.CenterPoint();
 for(int i=20;i>0;i--)
 {
      ellipseRect.SetRect(ptCenter,ptCenter);
      ellipseRect.InflateRect(i*10,i*10);
      pDC->Ellipse(ellipseRect);
 }

緙栬瘧榪愯紼嬪簭錛屽皾璇曟敼鍙樼獥鍙eぇ灝忥紝鍙互鍙戠幇闂儊鐜拌薄銆?/p>

銆銆鍦ㄥ弻緙撳啿鏂規硶涓紝棣栧厛瑕佸仛鐨勬槸灞忚斀鑳屾櫙鍒鋒柊銆傝儗鏅埛鏂板叾瀹炴槸鍦ㄥ搷搴擶M_ERASEBKGND娑堟伅銆傛垜浠湪瑙嗙被涓坊鍔犲榪欎釜娑堟伅鐨勫搷搴旓紝鍙互鐪嬪埌緙虹渷鐨勪唬鐮佸涓嬶細

BOOL CMYView::OnEraseBkgnd(CDC* pDC) 
{
     return CView::OnEraseBkgnd(pDC);
}

鏄皟鐢ㄧ埗綾葷殑OnEraseBkgnd鍑芥暟錛屾垜浠睆钄芥璋冪敤錛屽彧欏葷洿鎺eturn TRUE;鍗沖彲銆?/p>

銆銆涓嬮潰鏄唴瀛樼紦鍐蹭綔鍥劇殑姝ラ銆?/p>

 CPoint ptCenter;
 CRect rect,ellipseRect;
 GetClientRect(&rect);
 ptCenter = rect.CenterPoint();
 CDC dcMem;                                                 //鐢ㄤ簬緙撳啿浣滃浘鐨勫唴瀛楧C
 CBitmap bmp;                                                //鍐呭瓨涓壙杞戒復鏃跺浘璞$殑浣嶅浘
 dcMem.CreateCompatibleDC(pDC);              //渚濋檮紿楀彛DC鍒涘緩鍏煎鍐呭瓨DC
 bmp.CreateCompatibleBitmap(&dcMem,rect.Width(),rect.Height());//鍒涘緩鍏煎浣嶅浘
 dcMem.SelectObject(&bmp);                         //灝嗕綅鍥鵑夋嫨榪涘唴瀛楧C
 dcMem.FillSolidRect(rect,pDC->GetBkColor());//鎸夊師鏉ヨ儗鏅~鍏呭鎴峰尯錛屼笉鐒朵細鏄粦鑹?br> for(int i=20;i>0;i--)                                         //鍦ㄥ唴瀛楧C涓婂仛鍚屾牱鐨勫悓蹇冨渾鍥捐薄
 {
      ellipseRect.SetRect(ptCenter,ptCenter);
      ellipseRect.InflateRect(i*10,i*10);
      dcMem.Ellipse(ellipseRect);
 }
 pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//灝嗗唴瀛楧C涓婄殑鍥捐薄鎷瘋礉鍒板墠鍙?br> dcMem.DeleteDC();                                      //鍒犻櫎DC
 bm.DeleteObject();                                       //鍒犻櫎浣嶅浘

鐢變簬澶嶆潅鐨勭敾鍥炬搷浣滆漿鍏ュ悗鍙幫紝鎴戜滑鐪嬪埌鐨勬槸閫熷害寰堝揩鐨勫鍒舵搷浣滐紝鑷劧涔熷氨娑堥櫎浜嗛棯鐑佺幇璞°?/p>

]]>
VC++瀹屾垚Win2000涓嬬洿鎺ヨ鍐欑鐩樻墖鍖?http://m.shnenglu.com/bestcln/articles/83612.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Thu, 21 May 2009 14:19:00 GMThttp://m.shnenglu.com/bestcln/articles/83612.htmlhttp://m.shnenglu.com/bestcln/comments/83612.htmlhttp://m.shnenglu.com/bestcln/articles/83612.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/83612.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/83612.html
瀵圭鐩樻墖鍖烘暟鎹殑璁塊棶

鍓嶉潰宸茬粡鎻愯繃錛屽湪Windows 涓嬫妸鎵鏈夌殑璁懼褰撲綔鏂囦歡榪涜鎿嶄綔銆傚鏋滃涓插彛榪涜緙栫▼鎴栬涓嶅皯璇昏呰繕姣旇緝鐔熸倝錛氬浜庝覆琛岀鍙?銆?錛屽彲浠ョ敤”COM1”銆?#8221;COM2”浣滀負鍙傛暟璋冪敤CreateFile錛堬級鍑芥暟錛岃繖閲岀殑”COM1”銆?#8221;COM2”鍗充互鏂囦歡瀛樻斁璺緞鐨勬柟寮忔寚鍑轟簡瑕佹搷浣滅殑紜歡璁懼銆備絾鏄鏋滈渶瑕佸紓佺洏鐨勬煇涓墖鍖鴻繘琛岃鍐欙紝鍙兘涓嶅皯璇昏呬笉浼氭兂鍒頒嬌鐢–reateFile錛堬級鍑芥暟鎴栨槸涓嶇煡濡備綍浣跨敤銆傚叾瀹烇紝涓庡涓茶绔彛鐨勮闂被浼鹼紝闇瑕佺敤涓庢枃浠跺瓨鏀捐礬寰勭浉綾諱技鐨勬柟寮忔寚鍑鴻鎿嶄綔鐨勭‖浠惰澶囷紙紜洏錛夈備絾鏄繖閲屽茍涓嶆槸鐢?#8220;DISK1”銆?#8220;DISK2”絳夊幓鏍囪瘑鏌愪竴鍧楃墿鐞嗗瓨鍦ㄧ殑紜洏銆傜敱浜庨昏緫鎵囧尯鏄瓨鍦ㄤ簬閫昏緫鍒嗗尯涓婄殑錛屽洜姝よ繖閲岄渶瑕佷互鏌愮鐗瑰畾鐨勬牸寮忔潵鎸囧畾闇瑕佽闂殑紓佺洏閫昏緫鍒嗗尯銆傚浜庨昏緫鍒嗗尯X錛屽叾鏍煎紡涓?#8221;\\.\X:”銆?br>
HANDLE CreateFile( LPCTSTR lpFileName,

DWORD dwDesiredAccess,

DWORD dwShareMode,

LPSECURITY_ATTRIBUTES lpSecurityAttributes,

DWORD dwCreationDisposition,

DWORD dwFlagsAndAttributes,

HANDLE hTemplateFile );


CreateFile錛堬級鍑芥暟鍘熷瀷濡備笂鎵紺猴紝鐢變簬璁塊棶鐨勬槸浜嬪疄涓婂凡緇忓瓨鍦ㄧ殑紓佺洏鎵囧尯錛屽洜姝ゅ彧鑳戒互OPEN_EXISTING鏍囧織璁劇疆dwCreationDisposition鍙傛暟鎸囧嚭灝嗚鎵撳紑宸茬粡瀛樺湪鐨勬枃浠訛紙璁懼錛夈傝嚦浜庡叾浠栧弬鏁扮殑浣跨敤涓庢搷浣滄櫘閫氭枃浠舵椂鐨勭敤娉曠浉鍚屻?br>
閫氳繃CreateFile錛堬級鎵撳紑鐨勬槸鏁翠釜紓佺洏閫昏緫鍒嗗尯錛岃岃鎿嶄綔鐨勬槸璇ュ垎鍖虹殑鏌愪簺鎵囧尯錛屽洜姝よ繕瑕侀氳繃SetFilePointer錛堬級鍑芥暟浠ユ枃浠舵搷浣滅殑鏂瑰紡鎶婃寚閽堢Щ鍒拌鎿嶄綔鐨勭鐩樻墖鍖哄紑濮嬪銆係etFilePointer錛堬級鍑芥暟鍘熷瀷涓猴細

DWORD SetFilePointer(HANDLE hFile,

LONG lDistanceToMove,

PLONG lpDistanceToMoveHigh,

DWORD dwMoveMethod);


鍙傛暟hFile涓篊reateFile錛堬級榪斿洖鐨勬枃浠訛紙璁懼錛夊彞鏌勶紱lDistanceToMove鍜宭pDistanceToMoveHigh鎸囧嚭浜嗚璁劇疆鍋忕Щ閲忕殑浣庣鍜岄珮绔儴鍒嗭紱dwMoveMethod鎸囧嚭鏂囦歡鎸囬拡浠庝綍澶勫紑濮嬬Щ鍔紝鍙兘鐨勯夐」鏈塅ILE_START錛堜粠鏂囦歡寮濮嬶級銆丗ILE_END錛堜粠鏂囦歡緇撳熬錛夊拰FILE_CURRENT錛堜粠鏂囦歡褰撳墠浣嶇疆錛夈?br>
鍦ㄥ畾浣嶅埌瑕佽闂殑鎵囧尯寮濮嬩綅緗悗灝卞彲浠ラ氳繃ReadFile錛堬級鎴朩riteFile錛堬級鍑芥暟瀹炴柦鐩稿簲鐨勮鍐欒闂簡錛屽叿浣撴搷浣滀笌鏂囦歡璇誨啓騫舵病鏈変粈涔堝お澶х殑宸埆銆傛渶鍚庯紝鍦ㄥ畬鎴愯闂搷浣滃悗浠loseHandle錛堬級鍏抽棴鏂囦歡鍙ユ焺閲婃斁璧勬簮錛屼粠鑰屽畬鎴愪竴嬈″畬鏁寸殑紓佺洏鎵囧尯鏁版嵁璁塊棶鎿嶄綔銆備笅闈㈢粰鍑哄叿浣撶殑璇匯佸啓澶勭悊榪囩▼錛?br>
BOOL CDirectAccessHDDlg::WriteSectors(BYTE bDrive, DWORD dwStartSector, WORD wSectors, LPBYTE lpSectBuff)

// 瀵圭鐩樻墖鍖烘暟鎹殑鍐欏叆

{

銆if (bDrive == 0) return 0;

銆char devName[] = "\\\\.\\A:";

銆devName[4] ='A' + bDrive - 1;

銆HANDLE hDev = CreateFile(devName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

銆if (hDev == INVALID_HANDLE_VALUE) return 0;

銆SetFilePointer(hDev, 512 * dwStartSector, 0, FILE_BEGIN);

銆DWORD dwCB;

銆BOOL bRet = WriteFile(hDev, lpSectBuff, 512 * wSectors, &dwCB, NULL);

銆CloseHandle(hDev);

銆return bRet;

}

BOOL CDirectAccessHDDlg::ReadSectors(BYTE bDrive, DWORD dwStartSector, WORD wSectors, LPBYTE lpSectBuff)

// 瀵圭鐩樻墖鍖烘暟鎹殑璇誨彇

{

銆if (bDrive == 0) return 0;

銆char devName[] = "\\\\.\\A:";

銆devName[4] ='A' + bDrive - 1;

銆HANDLE hDev = CreateFile(devName, GENERIC_READ, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);

銆if (hDev == INVALID_HANDLE_VALUE) return 0;

銆SetFilePointer(hDev, 512 * dwStartSector, 0, FILE_BEGIN);

銆DWORD dwCB;

銆BOOL bRet = ReadFile(hDev, lpSectBuff, 512 * wSectors, &dwCB, NULL);

銆CloseHandle(hDev);

銆return bRet;

}


紓佺洏鎵囧尯鏁版嵁鐩存帴璇誨啓鎶鏈殑搴旂敤

涓婁竴姝ュ疄鐜頒簡瀵圭鐩樻墖鍖烘暟鎹繘琛岃鍐欒闂殑鏍稿績澶勭悊榪囩▼銆傚湪姝ゅ熀紜涓婂彲浠ュ畬鎴愪竴浜涙湁瀹炵敤浠峰肩殑搴旂敤錛屼緥濡傦紝鍙互瀹炵幇瀵規寚瀹氱鐩樺垎鍖轟腑鎸囧畾璧鋒鎵囧尯鐨勫唴瀹規煡鐪嬶細

if (ReadSectors(uDiskID, m_uFrom, (UINT)dwSectorNum, bBuf) == FALSE) {

銆MessageBox("鎵閫夌鐩樺垎鍖轟笉瀛樺湪錛?, "閿欒", MB_OK | MB_IConERROR);

銆return;

}


涓轟簡鏂逛究鏁版嵁鐨勬樉紺猴紝鍙仛濡備笅澶勭悊浠ュ畬鎴愭牸寮忚漿鎹㈢瓑宸ヤ綔錛?br>
for (DWORD i = 0; i < dwSectorNum * 512; i++) {

銆sprintf(cBuf, "%s%02X ", cBuf, bBuf[i]);

銆if ((i % 512) == 511)

sprintf(cBuf, "%s\r\n絎?d鎵囧尯\r\n", cBuf, (int)(i / 512) + m_uFrom);

銆if ((i % 16) == 15)

sprintf(cBuf, "%s\r\n", cBuf);

銆else if ((i % 16) == 7)

sprintf(cBuf, "%s- ", cBuf);

}




鏄劇ず緇撴灉濡備笂鍥炬墍紺恒傚彟澶栦竴縐嶅簲鐢ㄤ笌涔嬬被浼鹼紝鍗沖紓佺洏鎵囧尯鍐呭鐨勫浠戒笌鎭㈠澶勭悊銆備笉灝戦槻鐥呮瘨杞歡閮芥彁渚涜繖鏍風殑鍔熻兘錛氬紜洏寮曞鍖哄唴瀹圭殑澶囦喚錛屼竴鏃︾‖鐩樺紩瀵兼墖鍖鴻鐥呮瘨鐮村潖鍚庤兘澶熼氳繃瀵瑰浠芥暟鎹殑鍐欏叆瀹炵幇鎭㈠銆傚浠芥搷浣滀笌鍓嶉潰鐨勬暟鎹樉紺烘搷浣滅被浼鹼紝鍙槸鎶婅鍙栫殑鍐呭涓嶇粡鏍煎紡澶勭悊鑰岀洿鎺ヤ繚瀛樺埌鎸囧畾鐨勬枃浠朵腑鍗沖彲錛?br>
file.Open(fileDlg.GetPathName(), Cfile::modeCreate | Cfile::modeReadWrite);

……

if (ReadSectors(uDiskID, m_uFrom, (UINT)dwSectorNum, bBuf) == FALSE) {

銆MessageBox("鎵閫夌鐩樺垎鍖轟笉瀛樺湪錛?, "閿欒", MB_OK | MB_IConERROR);

銆return;

}

file.Write(bBuf, dwSectorNum * 512);

file.Close();


鏁版嵁鐨勬仮澶嶅鐞嗘濂戒笌涔嬬浉鍙嶏紝棣栧厛鎵撳紑澶囦喚鏂囦歡騫舵牴鎹枃浠墮暱搴﹁綆楄鍐欑殑鎵囧尯鏁幫紝鐒跺悗璇誨彇鍏跺唴瀹瑰埌緙撳瓨錛屾渶鍚庡皢鍏跺啓鍏ュ埌鎸囧畾鎵囧尯瀹屾垚鏁版嵁鐨勬仮澶嶏細

file.Open(fileDlg.GetPathName(), Cfile::modeReadWrite);

DWORD dwSectorNum = file.GetLength();

if (dwSectorNum % 512 != 0) return;

銆dwSectorNum /= 512;

銆unsigned char* bBuf = new unsigned char[dwSectorNum * 512];

銆file.Read(bBuf, dwSectorNum * 512);

銆if (WriteSectors(uDiskID, m_uFrom, (UINT)dwSectorNum, bBuf) == FALSE) {

MessageBox("鎵閫夌鐩樺垎鍖轟笉瀛樺湪錛?, "閿欒", MB_OK | MB_IConERROR);

return;

銆}

銆file.Close();

銆delete[] bBuf;


闈㈠皢瑕佺粰鍑虹殑鏈鍚庝竴涓簲鐢ㄦ槸瀵圭鐩樻暟鎹殑瀹夊叏鎿﹂櫎銆備紬鎵鍛ㄧ煡錛屽湪鎿嶄綔緋葷粺涓嬫槸閫氳繃鏂囦歡綆$悊緋葷粺瀹炵幇瀵規枃浠惰闂鐞嗙殑銆傚綋鍒犻櫎涓涓枃浠舵椂錛岃鏂囦歡鐨勫叏閮ㄥ唴瀹瑰茍娌℃湁鍙戠敓浠諱綍鎹熷潖錛屽鏋滄病鏈夊閮ㄦ暟鎹殑瑕嗙洊錛屽畬鍏ㄥ彲浠ラ氳繃鍚勭鏁版嵁鎭㈠杞歡灝嗗厛鍓嶅垹闄ょ殑鏂囦歡鎭㈠鍑烘潵銆備絾鍦ㄥ啗宸ャ佹斂搴滅瓑鐗規畩鐨勬秹瀵嗚涓氥侀儴闂ㄤ腑錛岃姹傜殑鏄暟鎹殑褰誨簳鍒犻櫎錛屽嵆緇忓垹闄よ繃鐨勬暟鎹槸涓嶅彲榪涜鍐嶆仮澶嶅鐞嗙殑銆備負浜嗙‘淇濈鐩樻暟鎹殑鍙潬娓呯┖錛屽彲浠ュ姣忎竴涓墖鍖哄啓鍏ュ叏1鍚庡啀鍐欏叆鍏?銆備箣鎵浠ュ嬈″啓鍏ユ暟鎹紝鏄洜涓轟竴嬈″啓鍏ュ彧鑳介槻姝㈡暟鎹仮澶嶈蔣浠剁殑鎭㈠澶勭悊銆傚鏋滆鐩栨鏁頒笉澶氱殑鍖栵紝閫氳繃涓縐嶈縐板仛“紓佺洏鏀懼ぇ闀?#8221;鐨勭壒孌婁華鍣ㄤ粛鑳藉浠ョ墿鐞嗙殑鏂規硶灝嗗厛鍓嶅垹闄ょ殑鏁版嵁鎭㈠鍑烘潵錛屽洜姝よ繖閲岄渶瑕佸鎵囧尯澶氭閲嶅鍐欏叆鏁版嵁錛屽弽澶嶆鏁拌秺澶氭摝闄ゆ晥鏋滆秺濂姐備笅闈㈡槸榪欓儴鍒嗙殑鍏蜂綋瀹炵幇浠g爜錛?br>
unsigned char bBuf[512];

UINT i = 0;

BOOL bRet = TRUE;

while (m_bAllDisk){

銆memset(bBuf, 0xFF, sizeof(bBuf));

銆bRet = WriteSectors(uDiskID, i, 1, bBuf);

銆memset(bBuf, 0, sizeof(bBuf));

銆bRet = WriteSectors(uDiskID, i, 1, bBuf);

銆if (bRet == FALSE){

if (i == 0)

銆MessageBox("鎵閫夌鐩樺垎鍖轟笉瀛樺湪錛?, "閿欒", MB_OK | MB_IConERROR);

else

銆MessageBox("紓佺洏鏁版嵁鎿﹂櫎瀹屾瘯錛?, "閿欒", MB_OK | MB_IConERROR);

銆return;

銆}

銆i++;

}


灝忕粨

鏈枃浠呭紓佺洏鎵囧尯鍐呭鐨勭洿鎺ヨ鍐欐柟娉曞仛浜嗕粙緇嶅茍緇欏嚭浜嗘墖鍖烘暟鎹唴瀹圭殑鏄劇ず銆佸浠戒笌鎭㈠銆佺鐩樻暟鎹殑褰誨簳鎿﹂櫎絳夊嚑涓富瑕佺殑搴旂敤浣滀簡浠嬬粛銆傝鑰呭彲浠ユ牴鎹渶瑕佸疄鐜板叾浠栫殑搴旂敤濡傚埄鐢ㄧ鐩樻墖鍖哄唴瀹硅繘琛岃韓浠借璇併佹暟鎹殣钘忋佺鐩樺垹闄ゆ暟鎹殑鎭㈠絳夈傛湰鏂囨墍榪扮▼搴忎唬鐮佸湪Windows 2000 Professional + SP4涓嬬敱Microsoft Visual C++ 6.0緙栬瘧閫氳繃銆?


]]>
UpdateData()http://m.shnenglu.com/bestcln/articles/83607.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Thu, 21 May 2009 14:14:00 GMThttp://m.shnenglu.com/bestcln/articles/83607.htmlhttp://m.shnenglu.com/bestcln/comments/83607.htmlhttp://m.shnenglu.com/bestcln/articles/83607.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/83607.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/83607.htmlUpdateData()

瀵逛簬鍙互鎺ユ敹鏁版嵁鐨勬帶浠訛紝濡傜紪杈戞帶浠舵潵璇達紝UpdateData()鍑芥暟鑷沖叧閲嶈銆傚綋鎺т歡鍐呭鍙戠敓鍙樺寲鏃訛紝瀵瑰簲鐨勬帶浠跺彉閲忕殑鍊煎茍娌℃湁璺熺潃鍙樺寲錛屽悓

鏍鳳紝褰撴帶浠跺彉閲忓煎彉鍖栨椂錛屾帶浠跺唴瀹逛篃涓嶄細璺熺潃鍙樸?br>UpdateData()鍑芥暟灝辨槸瑙e喅榪欎釜闂鐨勩?/p>

UpdateData(true);鎶婃帶浠跺唴瀹硅鍏ユ帶浠跺彉閲?br>UpdateData(false);鐢ㄦ帶浠跺彉閲忕殑鍊兼洿鏂版帶浠?/p>

濡傦細鏈夌紪杈戞帶浠禝DC_EDIT1錛屽搴旂殑鍙橀噺涓哄瓧絎︿覆m_Edit1錛?br>1銆佷慨鏀瑰彉閲忓煎茍鏄劇ず鍦ㄦ帶浠朵腑錛?br>m_Edit1 = _T("緇撴灉涓?0");
UpdateData(false);
2銆佽鍙栨帶浠剁殑鍊煎埌鍙橀噺涓細
鐢–lassWizard涓篒DC_EDIT1娣誨姞EN_CHANGE娑堟伅澶勭悊鍑芥暟錛?br>void CEditView::OnChangeEdit1()
{
    UpdateData(true);
}



]]>
瀹氭椂鍣?/title><link>http://m.shnenglu.com/bestcln/articles/83606.html</link><dc:creator>鏋佸搧鍨冨溇</dc:creator><author>鏋佸搧鍨冨溇</author><pubDate>Thu, 21 May 2009 14:08:00 GMT</pubDate><guid>http://m.shnenglu.com/bestcln/articles/83606.html</guid><wfw:comment>http://m.shnenglu.com/bestcln/comments/83606.html</wfw:comment><comments>http://m.shnenglu.com/bestcln/articles/83606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bestcln/comments/commentRss/83606.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bestcln/services/trackbacks/83606.html</trackback:ping><description><![CDATA[<strong><font color=#006699>涓銆佸畾鏃跺櫒鐨勫熀鏈嬌鐢ㄦ柟娉?br><br></font></strong>鍦ㄧ紪紼嬫椂錛屼細緇忓父浣跨敤鍒板畾鏃跺櫒銆備嬌鐢ㄥ畾鏃跺櫒鐨勬柟娉曟瘮杈冪畝鍗曪紝閫氬父鍛婅瘔WINDOWS涓涓椂闂撮棿闅旓紝鐒跺悗WINDOWS浠ユ鏃墮棿闂撮殧鍛ㄦ湡鎬цЕ鍙戠▼搴忋傞氬父鏈変袱縐嶆柟娉曟潵瀹炵幇錛氬彂閫乄M_TIMER娑堟伅鍜岃皟鐢ㄥ簲鐢ㄧ▼搴忓畾涔夌殑鍥炶皟鍑芥暟銆?br><br><font color=#0066ff>1.1 鐢╓M_TIMER鏉ヨ緗畾鏃跺櫒</font><br><br>鍏堣鐪婼etTimer榪欎釜API鍑芥暟鐨勫師鍨? <pre>UINT_PTR SetTimer( HWND hWnd, // 紿楀彛鍙ユ焺 UINT_PTR nIDEvent, // 瀹氭椂鍣↖D錛屽涓畾鏃跺櫒鏃訛紝鍙互閫氳繃璇D鍒ゆ柇鏄摢涓畾鏃跺櫒 UINT uElapse, // 鏃墮棿闂撮殧,鍗曚綅涓烘縐? TIMERPROC lpTimerFunc // 鍥炶皟鍑芥暟 ); </pre> 渚嬪 <pre>SetTimer(m_hWnd,1,1000,NULL); //涓涓?縐掕Е鍙戜竴嬈$殑瀹氭椂鍣?/pre> 鍦∕FC紼嬪簭涓璖etTimer琚皝瑁呭湪CWnd綾諱腑錛岃皟鐢ㄥ氨涓嶇敤鎸囧畾紿楀彛鍙ユ焺浜嗭紝渚嬪:<br> <pre>UINT SetTimer(1,100,NULL); </pre> 鍑芥暟鍙嶅洖鍊煎氨鏄涓涓弬鏁板?錛岃〃紺烘瀹氭椂鍣ㄧ殑ID鍙楓?br><br>絎簩涓弬鏁拌〃紺鴻絳夊緟100姣鏃墮棿鍐嶉噸鏂板鐞嗕竴嬈°傜涓変釜鍙傛暟鍦ㄨ繖縐嶆柟娉曚腑涓鑸敤NULL銆?br><strong>娉ㄦ剰錛?/strong>璁劇疆絎簩涓弬鏁版椂瑕佹敞鎰忥紝濡傛灉璁劇疆鐨勭瓑寰呮椂闂存瘮澶勭悊鏃墮棿鐭紝紼嬪簭灝變細鍑洪棶棰樹簡銆?br><br><font color=#0066ff>1.2 璋冪敤鍥炶皟鍑芥暟</font><br><br>姝ゆ柟娉曢鍏堝啓涓涓涓嬫牸寮忕殑鍥炶皟鍑芥暟<br> <pre>void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime);</pre> 鐒跺悗鍐嶇敤SetTimer(1,100,TimerProc)鍑芥暟鏉ュ緩涓涓畾鏃跺櫒錛岀涓変釜鍙傛暟灝辨槸鍥炶皟鍑芥暟鍦板潃銆?br><br><strong><font color=#006699>浜屻佸涓畾鏃跺櫒鐨勫疄鐜頒笌搴旂敤</font></strong><br><br>鎴戜滑鍦ㄥ畨瑁呭畾鏃跺櫒鏃墮兘涓哄叾鎸囧畾浜咺D錛屼嬌鐢ㄥ涓畾鏃跺櫒鏃訛紝璇D灝卞彂鎸ヤ綔鐢ㄤ簡銆?br>涓嶄嬌鐢∕FC鏃訛紝褰撴帴鏀跺埌WM_TIMER娑堟伅錛學PARAM wParam涓殑鍊間究鏄瀹氭椂鍣ㄧ殑ID<br>浣跨敤MFC鏃跺氨鏇寸畝鍗曚簡錛屾垜浠負鍏跺鍔燱M_TIME鐨勬秷鎭鐞嗗嚱鏁癘nTimer鍗沖彲錛岃鐪嬪涓嬩緥瀛? <pre>void CTimerTestDlg::OnTimer(UINT nIDEvent) { switch (nIDEvent) { case 24: ///澶勭悊ID涓?4鐨勫畾鏃跺櫒 Draw1(); break; case 25: ///澶勭悊ID涓?5鐨勫畾鏃跺櫒 Draw2(); break; } CDialog::OnTimer(nIDEvent); }</pre> 褰撲綘鐢ㄥ洖璋冨嚱鏁版椂錛屾垜浠彲浠ユ牴鎹畁Timerid鐨勫兼潵鍒ゆ柇鏄摢涓畾鏃跺櫒錛屼緥濡? <pre>void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime) { switch(nTimerid) { case 1: ///澶勭悊ID涓?鐨勫畾鏃跺櫒 Do1(); break; case 2: ///澶勭悊ID涓?鐨勫畾鏃跺櫒 Do2(); break; } }</pre> <font color=#006699><strong>涓夈佸彇娑堝畾鏃跺櫒</strong></font><br><br>涓嶅啀浣跨敤瀹氭椂鍣ㄥ悗錛屾垜浠簲璇ヨ皟鐢↘illTimer鏉ュ彇娑堝畾鏃訛紝KillTimer鐨勫師鍨嬪涓?br> <pre>BOOL KillTimer( HWND hWnd, // 紿楀彛鍙ユ焺 UINT_PTR uIDEvent // ID );</pre> 鍦∕FC紼嬪簭涓垜浠彲浠ョ洿鎺ヨ皟鐢↘illTimer(int nIDEvent)鏉ュ彇娑堝畾鏃跺櫒銆?br><br>鏈枃鎻愪緵鐨勪緥瀛愪唬鐮佸湪榪愯鏃跺氨鍙互鐪嬪埌涓や釜瀹氭椂鍣ㄩ兘鍦ㄥ伐浣滐紝鑰屼笖絎竴涓湪榪愯10嬈″悗灝變細琚獽ILL鎺夈?br> <img src ="http://m.shnenglu.com/bestcln/aggbug/83606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bestcln/" target="_blank">鏋佸搧鍨冨溇</a> 2009-05-21 22:08 <a href="http://m.shnenglu.com/bestcln/articles/83606.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SetTimerhttp://m.shnenglu.com/bestcln/articles/83604.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Thu, 21 May 2009 13:20:00 GMThttp://m.shnenglu.com/bestcln/articles/83604.htmlhttp://m.shnenglu.com/bestcln/comments/83604.htmlhttp://m.shnenglu.com/bestcln/articles/83604.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/83604.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/83604.htmlTimer浜嬩歡錛屽嵆瀹氭椂鍣ㄤ簨浠訛紝鏄湪娓告垙緙栫▼涓紝緇忓父浣跨敤鐨勪竴涓簨浠躲傚熷姪瀹冨彲浠ヤ駭鐢熷畾鏃舵墽琛屽姩浣滅殑鏁堟灉銆傝繖綃囨枃绔狅紝灝卞拰澶у涓璧鋒帰璁ㄤ竴涓嬪浣曚嬌鐢⊿etTimer錛堬級鍑芥暟銆?
1銆丼etTimer瀹氫箟鍦ㄩ偅閲岋紵

SetTimer琛ㄧず鐨勬槸瀹氫箟涓畾鏃跺櫒銆傛牴鎹畾涔夋寚瀹氱殑紿楀彛錛屽湪鎸囧畾鐨勭獥鍙o紙CWnd錛変腑瀹炵幇OnTimer浜嬩歡錛岃繖鏍鳳紝灝卞彲浠ョ浉搴斾簨浠朵簡銆?

SetTimer鏈変袱涓嚱鏁般備竴涓槸鍏ㄥ眬鐨勫嚱鏁?:SetTimer()

UINT SetTimer(
HWND hWnd, // handle of window for timer messages
UINT nIDEvent, // timer identifier
UINT uElapse, // time-out value
TIMERPROC lpTimerFunc // address of timer procedure
);

鍏朵腑hWnd 鏄寚鍚慍Wnd鐨勬寚閽堬紝鍗沖鐞員imer浜嬩歡鐨勭獥鍙g被銆傝閬撶獥鍙g被錛圕Wnd錛夛紝鎴戜滑鏈夊繀瑕佹潵鐪嬩竴涓婥Wnd鐨勭戶鎵挎儏鍐碉細CWnd鏈変互涓嬪瓙綾伙細CFrameWnd,CDialog,CView,CControlBar絳夌被銆傝繖涔熸剰鍛寵繖浜涚被涓兘鍙互瀹氫箟SetTimer浜嬩歡銆?

鍚屾椂錛孲etTimer錛堬級鍦–Wnd涓篃鏈夊畾涔夛紝鍗砈etTimer錛堬級鏄疌Wnd鐨勪竴涓垚鍛樺嚱鏁般侰Wnd鐨勫瓙綾誨彲浠ヨ皟鐢ㄨ鍑芥暟錛屾潵璁劇疆瑙﹀彂鍣ㄣ?

UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );

鍙傛暟鍚箟錛?

nIDEvent:鏄寚璁劇疆榪欎釜瀹氭椂鍣ㄧ殑iD錛屽嵆韜喚鏍囧織錛岃繖鏍峰湪OnTimer錛堬級浜嬩歡涓紝鎵嶈兘鏍規嵁涓嶅悓鐨勫畾鏃跺櫒錛屾潵鍋氫笉鍚岀殑浜嬩歡鍝嶅簲銆傝繖涓狪D鏄竴涓棤絎﹀彿鐨勬暣鍨嬨?

nElapse

鏄寚鏃墮棿寤惰繜銆傚崟浣嶆槸姣銆傝繖鎰忓懗鐫錛屾瘡闅攏Elapse姣緋葷粺璋冪敤涓嬈ntimer錛堬級銆?

void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD)

Specifies the address of the application-supplied TimerProc callback function that processes the WM_TIMER messages. If this parameter is NULL, the WM_TIMER messages are placed in the application’s message queue and handled by the CWnd object銆?

鎰忔濇槸錛屾寚瀹氬簲鐢ㄧ▼搴忔彁渚涚殑TimerProc鍥炶皟鍑芥暟鐨勫湴鍧錛屾潵澶勯噷榪欎釜Timer浜嬩歡銆傚鏋滄槸NULL錛屽鐞嗚繖涓猅imer浜嬩歡鐨勫畾涔夎繖涓猅imer鐨凜Wnd瀵硅薄銆備粬灝哤M_TIMER娑堟伅浼犻掔粰榪欎釜瀵硅薄錛岄氳繃瀹炵幇榪欎釜瀵硅薄鐨凮nTimer錛堬級浜嬩歡鏉ュ鐞嗚繖涓猅imer浜嬩歡銆?

鎵浠ワ紝涓鑸儏鍐典笅錛屾垜浠皢榪欎釜鍊艱涓篘ULL錛屾湁璁劇疆璇ュ畾鏃跺櫒鐨勫璞′腑鐨凮nTimer錛堬級鍑芥暟鏉ュ鐞嗚繖涓簨浠躲?

鍚屾牱鐨勶紝鎴戜滑鍐嶇湅鐪婯illTimer錛堬級鍜孫nTimer錛堬級鐨勫畾涔?

KillTimer鍚孲etTimer錛堬級涓鏍鳳紝浠栦篃鏈変袱涓紝涓涓槸鍏ㄥ眬鐨?:KillTimer(),鍙︿竴涓槸CWnd鐨勪竴涓嚱鏁般備粬鐨勫0鏄庡涓嬶細



//鍏ㄥ眬鍑芥暟

BOOL KillTimer(
HWND hWnd, // handle of window that installed timer
UINT uIDEvent // timer identifier
);

//CWnd鍑芥暟

BOOL KillTimer( int nIDEvent );

榪欎袱涓嚱鏁拌〃紺虹殑鎰忔濇槸灝唅D涓簄IDEVENT鐨勫畾鏃跺櫒縐昏蛋銆備嬌鍏朵笉鍐嶄綔鐢ㄣ傚叾鐢ㄦ硶濡傚悓SetTimer錛堬級涓鏍楓?

鍐嶇湅鐪婳nTimer錛堬級

CWnd::OnTimer
afx_msg void OnTimer( UINT nIDEvent );

ontimer錛堬級鏄搷搴擟Wnd瀵硅薄浜х敓鐨刉M_Timer娑堟伅銆俷IDEvent琛ㄧず瑕佸搷搴擳IMER浜嬩歡鐨処D銆?

浜屻乀imer浜嬩歡鐨勪嬌鐢細

鐢變互涓婄殑鍒嗘瀽錛屾垜浠簲璇ュ緢娓呮錛屽浣曟潵浣跨敤Timer浜嬩歡銆傚亣瀹氭垜浠湪瑙嗗浘涓婄敾涓涓笎鍙樼殑鍔ㄧ敾銆傛垜浠鍏堝湪鑿滃崟鏍忎笂娣誨姞涓涓彍鍗曢」錛岀粰榪欎釜鑿滃崟娣誨姞鍛戒護鍝嶅簲錛?

pView->SetTimer(1,1000,NULL);//pView鏄鍥劇被鐨勬寚閽堬紝榪欓噷鏄湪瑙嗗浘綾誨綋涓緗竴涓畾鏃跺櫒銆?

娣誨姞瀹屾瘯錛屽啀緇欒鍥劇被娣誨姞涓涓猈M_Timer浜嬩歡鐨勭浉搴斻傚湪OnTimer錛堬級鍑芥暟涓紪鍐欐眽涔︼紝榪涜鐩稿簲銆?

濡傛錛屽氨鑳藉仛鍑哄姩鐢匯?


]]>
MFC緇樺浘錛堣漿杞斤級http://m.shnenglu.com/bestcln/articles/83189.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Sun, 17 May 2009 08:22:00 GMThttp://m.shnenglu.com/bestcln/articles/83189.htmlhttp://m.shnenglu.com/bestcln/comments/83189.htmlhttp://m.shnenglu.com/bestcln/articles/83189.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/83189.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/83189.html闃呰鍏ㄦ枃

]]>
浠涔堟槸綰挎ф彃鍊煎師鐞?浠涔堟槸鍙岀嚎鎬ф彃鍊? http://m.shnenglu.com/bestcln/articles/82865.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Wed, 13 May 2009 12:29:00 GMThttp://m.shnenglu.com/bestcln/articles/82865.htmlhttp://m.shnenglu.com/bestcln/comments/82865.htmlhttp://m.shnenglu.com/bestcln/articles/82865.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/82865.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/82865.html綆鍗曟瘮鏂?
鍘熸潵鐨勬暟鍊煎簭鍒楋細0錛?0錛?0錛?0錛?0
綰挎ф彃鍊間竴嬈′負錛?錛?錛?0錛?5錛?0錛?5錛?0錛?5錛?0
鍗寵涓哄叾鍙樺寲錛堝鍑忥級鏄嚎褰㈢殑錛屽彲浠ュ湪鍧愭爣鍥句笂鐢誨嚭涓鏉$洿綰?
鍦ㄦ暟鐮佺浉鏈烘妧鏈腑錛岃繖浜涙暟鍊煎彲浠ヤ唬琛ㄧ粍鎴愪竴寮犵収鐗囩殑涓嶅悓鍍忕礌鐐圭殑鑹插僵銆佽壊搴︾瓑鎸囨爣銆?/p>

 

涓轟簡鏂逛究鐞嗚В錛屽厛鑰冭檻涓緇存儏鍐典笅鐨勭嚎鎬ф彃鍊?
瀵逛簬涓涓暟鍒梒錛屾垜浠亣璁綾[a]鍒癱[a+1]涔嬮棿鏄嚎鎬у彉鍖栫殑
閭d箞瀵逛簬嫻偣鏁皒(a<=x<a+1)錛宑(x)=c[a+1]*(x-a)+c[a]*(1+a-x);
榪欎釜濂界悊瑙e惂錛?

鎶婅繖縐嶆彃鍊兼柟寮忔墿灞曞埌浜岀淮鎯呭喌
瀵逛簬涓涓簩緇存暟緇刢錛屾垜浠亣璁懼浜庝換鎰忎竴涓誕鐐規暟i,c(a,i)鍒癱(a+1,i)涔嬮棿鏄嚎鎬у彉鍖栫殑,c(i,b)鍒癱(i,b+1)涔嬮棿涔熸槸綰挎у彉鍖栫殑(a,b閮芥槸鏁存暟)
閭d箞瀵逛簬嫻偣鏁扮殑鍧愭爣(x,y)婊¤凍(a<=x<a+1,b<=y<b+1)錛屾垜浠彲浠ュ厛鍒嗗埆姹傚嚭c(x,b)鍜宑(x,b+1):
c(x,b) = c[a+1]*(x-a)+c[a]*(1+a-x);
c(x,b+1) = c[a+1][b+1]*(x-a)+c[a][b+1]*(1+a-x);
濂斤紝鐜板湪宸茬粡鐭ラ亾c(x,b)鍜宑(x,b+1)浜嗭紝鑰屾牴鎹亣璁綾(x,b)鍒癱(x,b+1)涔熸槸綰挎у彉鍖栫殑錛屾墍浠?
c(x,y) = c(x,b+1)*(y-b)+c(x,b)*(1+b-y)
榪欏氨鏄弻綰挎ф彃鍊鹼紝



]]>
2嬈℃彃鍊?/title><link>http://m.shnenglu.com/bestcln/articles/82861.html</link><dc:creator>鏋佸搧鍨冨溇</dc:creator><author>鏋佸搧鍨冨溇</author><pubDate>Wed, 13 May 2009 11:50:00 GMT</pubDate><guid>http://m.shnenglu.com/bestcln/articles/82861.html</guid><wfw:comment>http://m.shnenglu.com/bestcln/comments/82861.html</wfw:comment><comments>http://m.shnenglu.com/bestcln/articles/82861.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bestcln/comments/commentRss/82861.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bestcln/services/trackbacks/82861.html</trackback:ping><description><![CDATA[<p><font face=瀹嬩綋> </p> <p align=left><span>鍥懼儚鐨勫弻綰挎ф彃鍊兼斁澶х畻娉曚腑錛岀洰鏍囧浘鍍忎腑鏂板垱閫犵殑璞$礌鍊鹼紝鏄敱婧愬浘鍍忎綅緗湪瀹冮檮榪戠殑<span>2*2</span>鍖哄煙<span>4</span>涓偦榪戣薄绱犵殑鍊奸氳繃鍔犳潈騫沖潎璁$畻寰楀嚭鐨勩傚弻綰挎у唴鎻掑肩畻娉曟斁澶у悗鐨勫浘鍍忚川閲忚緝楂橈紝涓嶄細鍑虹幇鍍忕礌鍊間笉榪炵畫鐨勭殑鎯呭喌銆傜劧鑰屾綆楁硶鍏鋒湁浣庨氭護娉㈠櫒鐨勬ц川錛屼嬌楂橀鍒嗛噺鍙楁崯錛屾墍浠ュ彲鑳戒細浣垮浘鍍忚疆寤撳湪涓瀹氱▼搴︿笂鍙樺緱妯$硦銆?/span></p> <p align=center><span><a title="The four red dots show the data points and the green dot is the point at which we want to interpolate." ></a></span></p> <h2><span><span><span><img height=367 alt="" src="mhtml:file://F:\c鐩榎鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣淺緗戦〉鎽樿\鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶 - 鏋礬 - CSDNBlog.mht!http://p.blog.csdn.net/images/p_blog_csdn_net/Breathomn/EntryImages/20090306/image002.jpg" width=384></span></span></span></h2> <h2><span><span><span><span>鍥?</span></span></span></span></h2> <h2><span><span><span>X</span><span>鏂瑰悜鐨勭嚎鎬ф彃鍊?/span></span></span></h2> <p align=left><span>瀵逛簬鏍囧噯鐨勫弻綰挎у樊鍊肩畻娉曪紝<span>X</span>鏂瑰悜鐨勭嚎鎬ф彃鍊鹼細</span></p> <p align=left><span><img height=40 alt="" src="mhtml:file://F:\c鐩榎鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣淺緗戦〉鎽樿\鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶 - 鏋礬 - CSDNBlog.mht!http://p.blog.csdn.net/images/p_blog_csdn_net/Breathomn/EntryImages/20090306/image003.gif" width=541>[</span><span>閫氱敤<span>1]</span></span></p> <p align=left><span><img height=39 alt="" src="mhtml:file://F:\c鐩榎鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣淺緗戦〉鎽樿\鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶 - 鏋礬 - CSDNBlog.mht!http://p.blog.csdn.net/images/p_blog_csdn_net/Breathomn/EntryImages/20090306/image004.gif" width=541>[</span><span>閫氱敤<span>2]</span></span></p> <p align=left><span>鍏蜂綋鍒版垜浠墍瀹炵幇鐨勭畻娉曚腑錛屾垜浠嬌Q11銆丵12銆丵21銆丵22涓哄厜鏍呬笂鐩擱偦鐨勫洓鐐癸紝鍗砅鍙兘钀戒簬榪欏洓鐐瑰叾涓竴鐐逛笂銆?#916;col鏄綋鍓嶅儚绱犵鍍忕礌鎵灞炲尯鍩熷師鐐圭殑姘村鉤璺濈錛屾瘮濡傚浘2錛屽悇縐嶄笉鍚岀殑棰滆壊浠h〃涓涓尯鍩燂紝鍖哄煙鍘熺偣涓哄尯鍩熷乏涓婅鐨勫儚绱犮?</span></p> <p align=left> </p> <p align=left><span>δ R2 = Color Q22 −Color Q12 鈭?#916;col+Color Q12 鈭?56 (1) </span></p> <p align=left><span>δ R1 = Color Q21 −Color Q11 鈭?#916;col+Color Q11 鈭?56 (2) </span></p> <p align=left> </p> <p align=left><span>鍏朵腑錛?#916;col=(DestColNumber鈭?(SrcWidth鈮?)/DestWidth))&255錛?Color(X)琛ㄧず鐐筙鐨勯鑹詫紝鍏蜂綋綆楁硶浣跨敤鐨勬槸24浣嶇湡褰╄壊鏍煎紡銆?/span></p> <h2><span><span><span>Y</span><span>鏂瑰悜鐨勭嚎鎬ф彃鍊?/span></span></span></h2> <p align=left><span>鍋氬畬<span>X</span>鏂瑰悜鐨勬彃鍊煎悗鍐嶅仛<span>Y</span>鏂瑰悜鐨勬彃鍊鹼紝瀵逛簬涓鑸儏鍐碉紝鏈夛細</span></p> <p align=left><span><span><img alt="" src="mhtml:file://F:\c鐩榎鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣淺緗戦〉鎽樿\鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶 - 鏋礬 - CSDNBlog.mht!http://p.blog.csdn.net/images/p_blog_csdn_net/Breathomn/EntryImages/20090306/image011.gif">     </span>[</span><span>閫氱敤<span>3]</span></span></p> <p align=left><span><span>鑰屾垜浠殑鍏蜂綋綆楁硶涓紝Y鏂瑰悜鐨勭嚎鎬ф彃鍊兼柟娉曞(3)鎵紺恒?#916;row鏄綋鍓嶅儚绱犵鍍忕礌鎵灞炲尯鍩熷師鐐圭殑鍨傜洿璺濈錛屾瘮濡傚浘2錛屽悇縐嶄笉鍚岀殑棰滆壊浠h〃涓涓尯鍩燂紝鍖哄煙鍘熺偣涓哄尯鍩熷乏涓婅鐨勫儚绱犮?</span></span></p> <p align=left> </p> <p align=left><span><span>Color P = δ R2 鈭?56+ δ R2 −δ R1 鈭?#916;row 鈮?6 (3) </span></span></p> <p align=left> </p> <p align=left><span><span>鍏朵腑錛?#916;row=(DestRowNumber鈭?(SrcHeight鈮?)/DestHeight))&255錛岀敱浜庡墠闈負浜嗕究浜庤綆楀乏縐諱簡16浣嶏紝鍥犳鏈鍚庨渶瑕佸彸縐?6浣嶄繚鎸佸尮閰嶃?/span></span></p> <h2><span><span><span><span><span>綆楁硶鎻忚堪</span></span></span></span></span></h2> <p align=left><span><span><span><span><span><span><span>綾?C 浼爜濡備笅錛?/span></span></span></span></span></span></span></p> <h2></h2> <p align=left><span><span> <div nogutter?> <div> <div><a onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" href="file:///F:/c鐩?鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣?緗戦〉鎽樿/鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶%20-%20鏋礬%20-%20CSDNBlog.mht#">view plain</a><a onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" href="file:///F:/c鐩?鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣?緗戦〉鎽樿/鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶%20-%20鏋礬%20-%20CSDNBlog.mht#">copy to clipboard</a><a onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" href="file:///F:/c鐩?鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣?緗戦〉鎽樿/鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶%20-%20鏋礬%20-%20CSDNBlog.mht#">print</a><a onclick="dp.sh.Toolbar.Command('About',this);return false;" href="file:///F:/c鐩?鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣?緗戦〉鎽樿/鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶%20-%20鏋礬%20-%20CSDNBlog.mht#">?</a></div> </div> <ol> <li><span><span>for</span><span> (鐩爣鍥懼儚絎竴琛岀殑鍍忕礌++)      </span></span></li> <li><span>{      </span></li> <li><span>    </span><span>// 婧愬浘鍍忎笂Q12, Q22, Q11, Q21鐨勯夊彇瑙佷笅涓鑺?nbsp;   </span><span>  </span></span></li> <li><span>    鑾峰彇婧愬浘鍍廞12, Q22, Q11, Q21鐨勯鑹?      </span></li> <li><span>     </span></li> <li><span>    </span><span>// X 鏂瑰悜鐨勬彃鍊?nbsp;   </span><span>  </span></span></li> <li><span>    δ(R2) = (Color(Q22) - Color(Q12)) * δcol+ Color(Q12) * 256;      </span></li> <li><span>    δ(R1) = (Color(Q21) - Color(Q11)) * δcol+ Color(Q11) * 256;      </span></li> <li><span>     </span></li> <li><span>    </span><span>// 淇濆瓨 δ(R1)鍒頒竴涓復鏃舵暟緇勶紝鍥犱負涓嬩竴琛岀殑δ(R2)絳変簬榪欎竴琛岀殑δ(R1)    </span><span>  </span></span></li> <li><span>    temp[i++] = δ(R1);      </span></li> <li><span>     </span></li> <li><span>    </span><span>// Y 鏂瑰悜鐨勬彃鍊?nbsp;   </span><span>  </span></span></li> <li><span>    Color(P) = (δ(R2) * 256 + (δ(R2) - δ(R1)) *δrow) >> 16;      </span></li> <li><span>     </span></li> <li><span>    灝?nbsp;P 杈撳嚭鍒扮洰鏍囦綅鍥句腑銆?nbsp;     </span></li> <li><span>}      </span></li> <li><span>     </span></li> <li><span>for</span><span> (鐩爣鍥懼儚絎簩琛屽埌鏈鏈)      </span></span></li> <li><span>{      </span></li> <li><span>    </span><span>for</span><span> (琛屼笂鐨勫儚绱?+)      </span></span></li> <li><span>    {      </span></li> <li><span>        </span><span>// 婧愬浘鍍忎笂Q12, Q22, Q11, Q21鐨勯夊彇瑙佷笅涓鑺?nbsp;   </span><span>  </span></span></li> <li><span>        鑾峰彇婧愬浘鍍廞12, Q22, Q11, Q21鐨勯鑹?      </span></li> <li><span>     </span></li> <li><span>        </span><span>// X 鏂瑰悜鐨勬彃鍊?nbsp;   </span><span>  </span></span></li> <li><span>        δ(R2) = temp[i++]; </span><span>// 涓嬩竴琛岀殑δ(R2)絳変簬涓婁竴琛岀殑δ(R1)    </span><span>  </span></span></li> <li><span>        δ(R1) = (Color(Q21) - Color(Q11)) *δcol+ Color(Q11) * 256;      </span></li> <li><span>     </span></li> <li><span>        </span><span>// 淇濆瓨 δ(R1)鍒頒竴涓復鏃舵暟緇勶紝鍥犱負涓嬩竴琛岀殑δ(R2)絳変簬榪欎竴琛岀殑δ(R1)    </span><span>  </span></span></li> <li><span>        temp[i++] = δ(R1);      </span></li> <li><span>     </span></li> <li><span>        </span><span>// Y 鏂瑰悜鐨勬彃鍊?nbsp;   </span><span>  </span></span></li> <li><span>        Color(P) = (δ(R2) * 256 + (δ(R2) - δ(R1)) * δrow) >> 16;      </span></li> <li><span>     </span></li> <li><span>        灝?nbsp;P 杈撳嚭鍒扮洰鏍囦綅鍥句腑銆?nbsp;     </span></li> <li><span>    }      </span></li> <li><span>}    </span></li> </ol> </div> <p><textarea name=code rows=15 cols=50>for (鐩爣鍥懼儚絎竴琛岀殑鍍忕礌++) { // 婧愬浘鍍忎笂Q12, Q22, Q11, Q21鐨勯夊彇瑙佷笅涓鑺? 鑾峰彇婧愬浘鍍廞12, Q22, Q11, Q21鐨勯鑹? // X 鏂瑰悜鐨勬彃鍊? δ(R2) = (Color(Q22) - Color(Q12)) * δcol+ Color(Q12) * 256; δ(R1) = (Color(Q21) - Color(Q11)) * δcol+ Color(Q11) * 256; // 淇濆瓨 δ(R1)鍒頒竴涓復鏃舵暟緇勶紝鍥犱負涓嬩竴琛岀殑δ(R2)絳変簬榪欎竴琛岀殑δ(R1) temp[i++] = δ(R1); // Y 鏂瑰悜鐨勬彃鍊? Color(P) = (δ(R2) * 256 + (δ(R2) - δ(R1)) *δrow) >> 16; 灝?P 杈撳嚭鍒扮洰鏍囦綅鍥句腑銆? } for (鐩爣鍥懼儚絎簩琛屽埌鏈鏈) { for (琛屼笂鐨勫儚绱?+) { // 婧愬浘鍍忎笂Q12, Q22, Q11, Q21鐨勯夊彇瑙佷笅涓鑺? 鑾峰彇婧愬浘鍍廞12, Q22, Q11, Q21鐨勯鑹? // X 鏂瑰悜鐨勬彃鍊? δ(R2) = temp[i++]; // 涓嬩竴琛岀殑δ(R2)絳変簬涓婁竴琛岀殑δ(R1) δ(R1) = (Color(Q21) - Color(Q11)) *δcol+ Color(Q11) * 256; // 淇濆瓨 δ(R1)鍒頒竴涓復鏃舵暟緇勶紝鍥犱負涓嬩竴琛岀殑δ(R2)絳変簬榪欎竴琛岀殑δ(R1) temp[i++] = δ(R1); // Y 鏂瑰悜鐨勬彃鍊? Color(P) = (δ(R2) * 256 + (δ(R2) - δ(R1)) * δrow) >> 16; 灝?P 杈撳嚭鍒扮洰鏍囦綅鍥句腑銆? } } </textarea> </span></span></p> <p> </p> <p align=left> </p> <h2><span><span><span>綆楁硶涓?/span><span>Q12, Q22, Q11, Q21</span><span>鐨勯夊彇</span></span></span></h2> <p> </p> <p align=left><span>鎴戜滑浠ユ斁澶т袱鍊嶄負渚嬶紝璇存槑閫夊彇Q12, Q22, Q11, Q21鐨勮繃紼嬨傛簮鍥懼儚3*3鍖哄煙鏀懼ぇ涓虹洰鏍囧尯鍩?*6鍖哄煙銆傝浠ヤ笅涓虹洰鏍囧浘鍍忥細</span></p> <div> <table cellSpacing=0 cellPadding=0 border=1> <tbody> <tr> <td width=31> <p align=center><span><span>A</span></span></p> </td> <td width=31> <p align=center><span><span>A</span></span></p> </td> <td width=31> <p align=center><span><span>B</span></span></p> </td> <td width=31> <p align=center><span><span>B</span></span></p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span><span>A</span></span></p> </td> <td width=31> <p align=center><span><span>A</span></span></p> </td> <td width=31> <p align=center><span><span>B</span></span></p> </td> <td width=31> <p align=center><span><span>B</span></span></p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span><span>C</span></span></p> </td> <td width=31> <p align=center><span><span>C</span></span></p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span><span>C</span></span></p> </td> <td width=31> <p align=center><span><span>C</span></span></p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span><span>D</span></span></p> </td> <td width=31> <p align=center><span><span>D</span></span></p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span><span>D</span></span></p> </td> <td width=31> <p align=center><span><span>D</span></span></p> </td> </tr> </tbody> </table> </div> <div>鍥?</div> <p align=left><span>鐩爣鍥懼儚<span>A</span>鍍忕礌鍖哄煙瀵瑰簲鐨?span>Q21</span>錛?span>Q22</span>錛?span>Q11</span>錛?span>Q12</span>錛屼互綰㈣壊鍖哄煙涓哄師鐐瑰悜鍙充笅鏂規墿灞曠殑<span>2*2</span>鍖哄煙銆?/span></p> <div> <table cellSpacing=0 cellPadding=0 border=1> <tbody> <tr> <td width=35> <p align=center><span><span>Q21</span></span></p> </td> <td width=35> <p align=center><span><span>Q22</span></span></p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> <tr> <td width=35> <p align=center><span><span>Q11</span></span></p> </td> <td width=35> <p align=center><span><span>Q12</span></span></p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> <tr> <td width=35> <p align=center><span><span></span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> <td width=31> <p align=center><span></span> </p> </td> </tr> </tbody> </table> </div> <div>鍥?</div> <p align=left><span>鐩爣鍥懼儚<span>B</span>鍍忕礌鍖哄煙瀵瑰簲鐨?span>Q21</span>錛?span>Q22</span>錛?span>Q11</span>錛?span>Q12</span>錛屼互钃濊壊鍖哄煙涓哄師鐐瑰悜鍙充笅鏂規墿灞曠殑<span>2*2</span>鍖哄煙銆?/span></p> <div> <table cellSpacing=0 cellPadding=0 border=1> <tbody> <tr> <td width=31> <p><span></span> </p> </td> <td width=35> <p align=center><span><span>Q21</span></span></p> </td> <td width=35> <p align=center><span><span>Q22</span></span></p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span><span>Q11</span></span></p> </td> <td width=35> <p align=center><span><span>Q12</span></span></p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> </tr> </tbody> </table> </div> <div>鍥?</div> <p align=left><span>鐩爣鍥懼儚<span>C</span>鍍忕礌鍖哄煙瀵瑰簲鐨?span>Q21</span>錛?span>Q22</span>錛?span>Q11</span>錛?span>Q12</span>錛屼互緇胯壊鍖哄煙涓哄師鐐瑰悜鍙充笅鏂規墿灞曠殑<span>2*2</span>鍖哄煙銆?/span></p> <div> <table cellSpacing=0 cellPadding=0 border=1> <tbody> <tr> <td width=31> <p><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span><span>Q21</span></span></p> </td> <td width=35> <p align=center><span><span>Q22</span></span></p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span><span>Q11</span></span></p> </td> <td width=35> <p align=center><span><span>Q12</span></span></p> </td> </tr> </tbody> </table> </div> <div>鍥?</div> <p align=left><span>鐩爣鍥懼儚<span>D</span>鍍忕礌鍖哄煙瀵瑰簲鐨?span>Q21</span>錛?span>Q22</span>錛?span>Q11</span>錛?span>Q12</span>錛岀洰鏍囧浘鍍忓浜庢渶鍚庝袱琛岀殑杈圭晫鎯呭喌錛屽皢<span>Q21</span>錛?span>Q22</span>錛?span>Q11</span>錛?span>Q12</span>榪欏洓涓偣鐨勫艱涓轟竴鏍楓?/span></p> <div> <table cellSpacing=0 cellPadding=0 border=1> <tbody> <tr> <td width=31> <p><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> <td width=119> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> <td width=119> <p align=center><span></span> </p> </td> </tr> <tr> <td width=31> <p align=center><span></span> </p> </td> <td width=35> <p align=center><span></span> </p> </td> <td width=119> <p align=center><span><span>Q11=Q12=Q22=Q21</span></span></p> </td> </tr> </tbody> </table> </div> <div>鍥?</div> <p> <p> </p> <p align=left><span><img height=906 alt="" src="mhtml:file://F:\c鐩榎鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣淺緗戦〉鎽樿\鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶 - 鏋礬 - CSDNBlog.mht!http://p.blog.csdn.net/images/p_blog_csdn_net/Breathomn/EntryImages/20090306/flow1.jpg" width=532></span></p> <p align=left><span><img height=888 alt="" src="mhtml:file://F:\c鐩榎鐩墠鐨勫伐浣?--鍓嶉潰鏉垮埗浣淺緗戦〉鎽樿\鍙岀嚎鎬ф彃鍊煎浘鍍忔斁澶?緙╁皬綆楁硶 - 鏋礬 - CSDNBlog.mht!http://p.blog.csdn.net/images/p_blog_csdn_net/Breathomn/EntryImages/20090306/flow2.jpg" width=529></span></p> <p> </p> <h2><span><span><span>紼嬪簭嫻佺▼鍥?/span></span></span></h2> <p align=left><span>嫻佺▼鍥懼彸杈硅櫄綰挎涓負鐩稿叧榪囩▼鐨勬敞瑙c?/span></p> </font> <img src ="http://m.shnenglu.com/bestcln/aggbug/82861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bestcln/" target="_blank">鏋佸搧鍨冨溇</a> 2009-05-13 19:50 <a href="http://m.shnenglu.com/bestcln/articles/82861.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>甯哥敤鏁版嵁綾誨瀷浣跨敤杞崲璇﹁Вhttp://m.shnenglu.com/bestcln/articles/82729.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Tue, 12 May 2009 12:25:00 GMThttp://m.shnenglu.com/bestcln/articles/82729.htmlhttp://m.shnenglu.com/bestcln/comments/82729.htmlhttp://m.shnenglu.com/bestcln/articles/82729.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/82729.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/82729.html
鎴戜滑鍏堝畾涔変竴浜涘父瑙佺被鍨嬪彉閲忓熶互璇存槑

int i = 100;
long l = 2001;
float f=300.2;
double d=12345.119;
char username[]="紼嬩僵鍚?;
char temp[200];
char *buf;
CString str;
_variant_t v1;
_bstr_t v2;

涓銆佸叾瀹冩暟鎹被鍨嬭漿鎹負瀛楃涓?/strong>

  • 鐭暣鍨?int)
    itoa(i,temp,10);///灝唅杞崲涓哄瓧絎︿覆鏀懼叆temp涓?鏈鍚庝竴涓暟瀛楄〃紺哄崄榪涘埗
    itoa(i,temp,2); ///鎸変簩榪涘埗鏂瑰紡杞崲
  • 闀挎暣鍨?long)
    ltoa(l,temp,10);
  • 嫻偣鏁?float,double)
    鐢╢cvt鍙互瀹屾垚杞崲,榪欐槸MSDN涓殑渚嬪瓙:
    int decimal, sign;
    char *buffer;
    double source = 3.1415926535;
    buffer = _fcvt( source, 7, &decimal, &sign );
    榪愯緇撴灉:source: 3.1415926535 buffer: '31415927' decimal: 1 sign: 0
    decimal琛ㄧず灝忔暟鐐圭殑浣嶇疆,sign琛ㄧず絎﹀彿:0涓烘鏁幫紝1涓鴻礋鏁?
  • CString鍙橀噺
    str = "2008鍖椾含濂ヨ繍";
    buf = (LPSTR)(LPCTSTR)str;
  • BSTR鍙橀噺
    BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
    char * buf = _com_util::ConvertBSTRToString(bstrValue);
    SysFreeString(bstrValue);
    AfxMessageBox(buf);
    delete(buf);
  • CComBSTR鍙橀噺
    CComBSTR bstrVar("test");
    char *buf = _com_util::ConvertBSTRToString(bstrVar.m_str);
    AfxMessageBox(buf);
    delete(buf);
  • _bstr_t鍙橀噺
    _bstr_t綾誨瀷鏄BSTR鐨勫皝瑁咃紝鍥犱負宸茬粡閲嶈澆浜?鎿嶄綔絎︼紝鎵浠ュ緢瀹規槗浣跨敤
    _bstr_t bstrVar("test");
    const char *buf = bstrVar;///涓嶈淇敼buf涓殑鍐呭
    AfxMessageBox(buf);

  • 閫氱敤鏂規硶(閽堝闈濩OM鏁版嵁綾誨瀷)
    鐢╯printf瀹屾垚杞崲
    char  buffer[200];
        char  c = '1';
        int   i = 35;
        long  j = 1000;
        float f = 1.7320534f;
        sprintf( buffer, "%c",c);
        sprintf( buffer, "%d",i);
        sprintf( buffer, "%d",j);
        sprintf( buffer, "%f",f);
        

浜屻佸瓧絎︿覆杞崲涓哄叾瀹冩暟鎹被鍨?/font>
strcpy(temp,"123");

  • 鐭暣鍨?int)
    i = atoi(temp);
  • 闀挎暣鍨?long)
    l = atol(temp);
  • 嫻偣(double)
    d = atof(temp);
  • CString鍙橀噺
    CString name = temp;
  • BSTR鍙橀噺
    BSTR bstrValue = ::SysAllocString(L"紼嬪簭鍛?);
    ...///瀹屾垚瀵筨strValue鐨勪嬌鐢?br>SysFreeString(bstrValue);
  • CComBSTR鍙橀噺
    CComBSTR綾誨瀷鍙橀噺鍙互鐩存帴璧嬪?br>CComBSTR bstrVar1("test");
    CComBSTR bstrVar2(temp);
  • _bstr_t鍙橀噺
    _bstr_t綾誨瀷鐨勫彉閲忓彲浠ョ洿鎺ヨ祴鍊?br>_bstr_t bstrVar1("test");
    _bstr_t bstrVar2(temp);

涓夈佸叾瀹冩暟鎹被鍨嬭漿鎹㈠埌CString
浣跨敤CString鐨勬垚鍛樺嚱鏁癋ormat鏉ヨ漿鎹?渚嬪:

  • 鏁存暟(int)
    str.Format("%d",i);
  • 嫻偣鏁?float)
    str.Format("%f",i);
  • 瀛楃涓叉寚閽?char *)絳夊凡緇忚CString鏋勯犲嚱鏁版敮鎸佺殑鏁版嵁綾誨瀷鍙互鐩存帴璧嬪?br>str = username;
  • 瀵逛簬Format鎵涓嶆敮鎸佺殑鏁版嵁綾誨瀷錛屽彲浠ラ氳繃涓婇潰鎵璇寸殑鍏充簬鍏跺畠鏁版嵁綾誨瀷杞寲鍒癱har *鐨勬柟娉曞厛杞埌char *錛岀劧鍚庤祴鍊肩粰CString鍙橀噺銆?br>

鍥涖丅STR銆乢bstr_t涓嶤ComBSTR

  • CComBSTR 鏄疉TL瀵笲STR鐨勫皝瑁咃紝_bstr_t鏄疌++瀵笲STR鐨勫皝瑁?BSTR鏄?2浣嶆寚閽?浣嗗茍涓嶇洿鎺ユ寚鍚戝瓧涓茬殑緙撳啿鍖恒?br>char *杞崲鍒癇STR鍙互榪欐牱:
    BSTR b=_com_util::ConvertStringToBSTR("鏁版嵁");///浣跨敤鍓嶉渶瑕佸姞涓奵omutil.h鍜宑omsupp.lib
    SysFreeString(bstrValue);
    鍙嶄箣鍙互浣跨敤
    char *p=_com_util::ConvertBSTRToString(b);
    delete p;
    鍏蜂綋鍙互鍙傝冧竴錛屼簩孌佃惤閲岀殑鍏蜂綋璇存槑銆?br>
    CComBSTR涓巁bstr_t瀵瑰ぇ閲忕殑鎿嶄綔絎﹁繘琛屼簡閲嶈澆錛屽彲浠ョ洿鎺ヨ繘琛?,!=,==絳夋搷浣滐紝鎵浠ヤ嬌鐢ㄩ潪甯告柟渚褲?br>鐗瑰埆鏄痏bstr_t,寤鴻澶у浣跨敤瀹冦?br>

 

浜斻乂ARIANT 銆乢variant_t 涓?COleVariant

  • VARIANT鐨勭粨鏋勫彲浠ュ弬鑰冨ご鏂囦歡VC98\Include\OAIDL.H涓叧浜庣粨鏋勪綋tagVARIANT鐨勫畾涔夈?br>瀵逛簬VARIANT鍙橀噺鐨勮祴鍊鹼細棣栧厛緇檝t鎴愬憳璧嬪鹼紝鎸囨槑鏁版嵁綾誨瀷錛屽啀瀵硅仈鍚堢粨鏋勪腑鐩稿悓鏁版嵁綾誨瀷鐨勫彉閲忚祴鍊鹼紝涓句釜渚嬪瓙錛?br>VARIANT va;
    int a=2001;
    va.vt=VT_I4;///鎸囨槑鏁村瀷鏁版嵁
    va.lVal=a; ///璧嬪?br>
    瀵逛簬涓嶉┈涓婅祴鍊肩殑VARIANT錛屾渶濂藉厛鐢╒oid VariantInit(VARIANTARG FAR* pvarg);榪涜鍒濆鍖?鍏舵湰璐ㄦ槸灝唙t璁劇疆涓篤T_EMPTY,涓嬭〃鎴戜滑鍒椾婦vt涓庡父鐢ㄦ暟鎹殑瀵瑰簲鍏崇郴:

    Byte bVal; // VT_UI1.
    Short iVal; // VT_I2.
    long lVal; // VT_I4.
    float fltVal; // VT_R4.
    double dblVal; // VT_R8.
    VARIANT_BOOL boolVal; // VT_BOOL.
    SCODE scode; // VT_ERROR.
    CY cyVal; // VT_CY.
    DATE date; // VT_DATE.
    BSTR bstrVal; // VT_BSTR.
    DECIMAL FAR* pdecVal // VT_BYREF|VT_DECIMAL.
    IUnknown FAR* punkVal; // VT_UNKNOWN.
    IDispatch FAR* pdispVal; // VT_DISPATCH.
    SAFEARRAY FAR* parray; // VT_ARRAY|*.
    Byte FAR* pbVal; // VT_BYREF|VT_UI1.
    short FAR* piVal; // VT_BYREF|VT_I2.
    long FAR* plVal; // VT_BYREF|VT_I4.
    float FAR* pfltVal; // VT_BYREF|VT_R4.
    double FAR* pdblVal; // VT_BYREF|VT_R8.
    VARIANT_BOOL FAR* pboolVal; // VT_BYREF|VT_BOOL.
    SCODE FAR* pscode; // VT_BYREF|VT_ERROR.
    CY FAR* pcyVal; // VT_BYREF|VT_CY.
    DATE FAR* pdate; // VT_BYREF|VT_DATE.
    BSTR FAR* pbstrVal; // VT_BYREF|VT_BSTR.
    IUnknown FAR* FAR* ppunkVal; // VT_BYREF|VT_UNKNOWN.
    IDispatch FAR* FAR* ppdispVal; // VT_BYREF|VT_DISPATCH.
    SAFEARRAY FAR* FAR* pparray; // VT_ARRAY|*.
    VARIANT FAR* pvarVal; // VT_BYREF|VT_VARIANT.
    void FAR* byref; // Generic ByRef.
    char cVal; // VT_I1.
    unsigned short uiVal; // VT_UI2.
    unsigned long ulVal; // VT_UI4.
    int intVal; // VT_INT.
    unsigned int uintVal; // VT_UINT.
    char FAR * pcVal; // VT_BYREF|VT_I1.
    unsigned short FAR * puiVal; // VT_BYREF|VT_UI2.
    unsigned long FAR * pulVal; // VT_BYREF|VT_UI4.
    int FAR * pintVal; // VT_BYREF|VT_INT.
    unsigned int FAR * puintVal; //VT_BYREF|VT_UINT.

  • _variant_t鏄疺ARIANT鐨勫皝瑁呯被錛屽叾璧嬪煎彲浠ヤ嬌鐢ㄥ己鍒剁被鍨嬭漿鎹紝鍏舵瀯閫犲嚱鏁頒細鑷姩澶勭悊榪欎簺鏁版嵁綾誨瀷銆?br>浣跨敤鏃墮渶鍔犱笂#include <comdef.h>
    渚嬪錛?br>long l=222;
    ing i=100;
    _variant_t lVal(l);
    lVal = (long)i;

  • COleVariant鐨勪嬌鐢ㄤ笌_variant_t鐨勬柟娉曞熀鏈竴鏍鳳紝璇峰弬鑰冨涓嬩緥瀛愶細
    COleVariant v3 = "瀛楃涓?, v4 = (long)1999;
    CString str =(BSTR)v3.pbstrVal;
    long i = v4.lVal;

鍏佸叾瀹冧竴浜汣OM鏁版嵁綾誨瀷

  • 鏍規嵁ProgID寰楀埌CLSID
    HRESULT CLSIDFromProgID( LPCOLESTR lpszProgID,LPCLSID pclsid);
    CLSID clsid;
    CLSIDFromProgID( L"MAPI.Folder",&clsid);
  • 鏍規嵁CLSID寰楀埌ProgID
    WINOLEAPI ProgIDFromCLSID( REFCLSID clsid,LPOLESTR * lplpszProgID);
    渚嬪鎴戜滑宸茬粡瀹氫箟浜?CLSID_IApplication,涓嬮潰鐨勪唬鐮佸緱鍒癙rogID
    LPOLESTR pProgID = 0;
    ProgIDFromCLSID( CLSID_IApplication,&pProgID);
    ...///鍙互浣跨敤pProgID
    CoTaskMemFree(pProgID);//涓嶈蹇樿閲婃斁

涓冦丄NSI涓嶶nicode
Unicode縐頒負瀹藉瓧絎﹀瀷瀛椾覆,COM閲屼嬌鐢ㄧ殑閮芥槸Unicode瀛楃涓層?/p>

  • 灝咥NSI杞崲鍒癠nicode
    (1)閫氳繃L榪欎釜瀹忔潵瀹炵幇錛屼緥濡? CLSIDFromProgID( L"MAPI.Folder",&clsid);
    (2)閫氳繃MultiByteToWideChar鍑芥暟瀹炵幇杞崲,渚嬪:
    char *szProgID = "MAPI.Folder";
    WCHAR szWideProgID[128];
    CLSID clsid;
    long lLen = MultiByteToWideChar(CP_ACP,0,szProgID,strlen(szProgID),szWideProgID,sizeof(szWideProgID));
    szWideProgID[lLen] = '\0';
    (3)閫氳繃A2W瀹忔潵瀹炵幇,渚嬪:
    USES_CONVERSION;
    CLSIDFromProgID( A2W(szProgID),&clsid);
  • 灝哢nicode杞崲鍒癆NSI
    (1)浣跨敤WideCharToMultiByte,渚嬪:
    // 鍋囪宸茬粡鏈変簡涓涓猆nicode 涓?wszSomeString...
    char szANSIString [MAX_PATH];
    WideCharToMultiByte ( CP_ACP, WC_COMPOSITECHECK, wszSomeString, -1, szANSIString, sizeof(szANSIString), NULL, NULL );
    (2)浣跨敤W2A瀹忔潵瀹炵幇,渚嬪:
    USES_CONVERSION;
    pTemp=W2A(wszSomeString);

鍏佸叾瀹?/strong>

  • 瀵規秷鎭殑澶勭悊涓垜浠粡甯擱渶瑕佸皢WPARAM鎴朙PARAM絳?2浣嶆暟鎹紙DWORD)鍒嗚В鎴愪袱涓?6浣嶆暟鎹紙WORD),渚嬪錛?br>LPARAM lParam;
    WORD loValue = LOWORD(lParam);///鍙栦綆16浣?br>WORD hiValue = HIWORD(lParam);///鍙栭珮16浣?br>
  • 瀵逛簬16浣嶇殑鏁版嵁(WORD)鎴戜滑鍙互鐢ㄥ悓鏍風殑鏂規硶鍒嗚В鎴愰珮浣庝袱涓?浣嶆暟鎹?BYTE),渚嬪:
    WORD wValue;
    BYTE loValue = LOBYTE(wValue);///鍙栦綆8浣?br>BYTE hiValue = HIBYTE(wValue);///鍙栭珮8浣?br>
  • 涓や釜16浣嶆暟鎹紙WORD錛夊悎鎴?2浣嶆暟鎹?DWORD,LRESULT,LPARAM,鎴朩PARAM)
    LONG MAKELONG( WORD wLow, WORD wHigh );
    WPARAM MAKEWPARAM( WORD wLow, WORD wHigh );
    LPARAM MAKELPARAM( WORD wLow, WORD wHigh );
    LRESULT MAKELRESULT( WORD wLow, WORD wHigh );

  • 涓や釜8浣嶇殑鏁版嵁(BYTE)鍚堟垚16浣嶇殑鏁版嵁(WORD)
    WORD MAKEWORD( BYTE bLow, BYTE bHigh );

  • 浠嶳(red),G(green),B(blue)涓夎壊寰楀埌COLORREF綾誨瀷鐨勯鑹插?br>COLORREF RGB( BYTE byRed,BYTE byGreen,BYTE byBlue );
    渚嬪COLORREF bkcolor = RGB(0x22,0x98,0x34);

  • 浠嶤OLORREF綾誨瀷鐨勯鑹插煎緱鍒癛GB涓変釜棰滆壊鍊?br>BYTE Red = GetRValue(bkcolor); ///寰楀埌綰㈤鑹?br>BYTE Green = GetGValue(bkcolor); ///寰楀埌緇塊鑹?br>BYTE Blue = GetBValue(bkcolor); ///寰楀埌鍏伴鑹?br>

涔濄佹敞鎰忎簨欏?/strong>
鍋囧闇瑕佷嬌鐢ㄥ埌ConvertBSTRToString姝ょ被鍑芥暟,闇瑕佸姞涓婂ご鏂囦歡comutil.h,騫跺湪setting涓姞鍏omsupp.lib鎴栬呯洿鎺ュ姞涓?pragma comment( lib, "comsupp.lib" )



]]>
鍏充簬BSTR鏁版嵁綾誨瀷http://m.shnenglu.com/bestcln/articles/82712.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Tue, 12 May 2009 09:44:00 GMThttp://m.shnenglu.com/bestcln/articles/82712.htmlhttp://m.shnenglu.com/bestcln/comments/82712.htmlhttp://m.shnenglu.com/bestcln/articles/82712.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/82712.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/82712.html瀛楃涓茬殑闀垮害鍙兘浜掍笉鐩稿悓錛屽洜姝よ法COM杈圭晫浼犺緭鐗瑰畾鐨勫瓧絎︿覆鏃訛紝闇瑕佺‘瀹氬畠鐨勯暱搴︼紝鑰屼笖錛屽瓧絎︿覆鏈夋椂闇瑕?br>
鍒嗛厤鍐呭瓨銆?br>2.Unicode鍜孉NSI鏁版嵁綾誨瀷
3.OLECHAR,LPOLESTR,LPCOLESTR
COM鐨勫熀鏈瓧絎︽暟鎹被鍨嬫槸OLECHAR,涓庡鉤鍙版棤鍏崇殑瀛楃琛ㄧず娉曘傚湪鍒涘緩璇ュ瓧絎﹂泦鏃訛紝OLECHAR鐨勫熀鏈暟鎹被鍨嬮殢鎿?br>
浣滅郴緇熺殑涓嶅悓鑰屼笉鍚屻傚浠婃渶嫻佽鐨凜OM騫沖彴鏄熀浜嶹in32_API鐨勶紝鑰屼笖鍩轟簬姝わ紝OLECHAR灝辨槸wchar_t鐨則ypedef. 

w琛ㄧず瀹冩槸Unicode瀛楃銆侺POLESTR鏄疧LECHAR*鐨則ypedef錛孡PCOLESTR鏄悓涓縐嶆暟鎹被鍨嬬殑const澹版槑銆?br>4.澶勭悊LPOLESTR
濡傛灉浣犺瘯鍥懼皢瀛楃涓插艱祴緇橪POLESTR錛屽垯浼氭敹鍒扮紪璇戦敊璇紝渚嬪錛?br>OLECHAR *olechar="A String!";//緙栬瘧閿欒
鍙嶄箣錛屼綘搴斿湪榪欐牱鐨勫瓧絎︿覆鍓嶆坊鍔燣鍓嶇紑錛屽涓嬫墍紺猴細
LPOLESTR szMyString = L"This is a string!";
鍦ㄤ嬌鐢╬rintf()鎴朅TLTRACE()鏃訛紝榪欏挨鍏墮噸瑕侊紙浣嗛氬父琚仐蹇橈級
渚嬪錛?br>LPOLESTR szstr = L"Hello!";
ATLTRACE("string=%s",szstr);
緙栬瘧鍚庢墦鍗扮殑鏄?br>string=T
鏄劇劧鏄敊璇殑錛屽簲璇ユ坊鍔燣鍓嶇紑鎴朞LESTR()瀹忥紝搴旇濡備笅鍐欙細
ATLTRACE(L"string=%s",szstr);
鎴栬?br>ATRTRACE(OLESTR("string=%s",szstr);
涓嬮潰涓や釜鍑芥暟閫氬父鐢ㄦ潵澶嶅埗瀛楃涓層傜涓涓槸ANSI鍑芥暟wcscpy();
絎簩涓槸ATL鍑芥暟錛屽悕涓簅cscpy()
4.鏄惁鎵цUnicode緙栬瘧
瀹為檯涓婂湪榛樿鎯呭喌涓嬶紝ATL鍚戝鏃㈠垱寤轟簡ANSI閰嶇疆錛屽張鍒涘緩浜哢nicode閰嶇疆錛岃繖浣夸綘鑳藉涓縐嶆牸寮忔垨涓ょ鏍煎紡緙栬瘧

鍙婂彂甯冪粍浠舵湇鍔$▼搴忥紝浣犲彧闇鍧氭寔浣跨敤TCHAR鏁版嵁綾誨瀷錛屼互渚夸綘鐨勪唬鐮佸彲浠ュ吋瀹逛袱縐嶅瓧絎﹂泦銆?br>5.TCHAR
TCHAR鏄竴鑸殑瀛楃綾誨瀷銆俆CHAR鐨勫畾涔夊涓嬶細
#ifdef UNICODE
typedef WCHAR TCHAT
#else
typedef char TCHAR
#endif
榛樿鎯呭喌涓嬶紝C++瀛楃涓叉枃瀛椾負char*綾誨瀷錛岄氳繃鍦ㄥ瓧絎︿覆鍓嶄嬌鐢↙鍓嶇紑錛屽彲浠ュ皢浠栦滑鎸囧畾涓哄瀛楃銆?br>鍦═CHAR*鏁版嵁綾誨瀷錛屽簲璇ヤ嬌鐢╛T錛屼緥濡傦細
TCHAR *p_tchar = _T("this is string";
姝や唬鐮佸皢瀛楃涓茶祴緇橝NSI/UNICODE鍏煎鏍煎紡鐨勫瓧絎︿覆銆俖T鏄釜瀹忥紝鏍規嵁UNICODE鏉ュ埗瀹氬叿浣撳唴瀹廣?br>6.浣跨敤BSTR澶勭悊涓嶅悓澶у皬鐨勫瓧絎︿覆銆?br>鐢變簬瀛樺湪鍐呭瓨鏂歸潰鐨勯棶棰橈紝鍥犳浣跨敤BSTR鏁版嵁綾誨瀷錛孊STR灝辨槸鎸囧悜OLECHAR瀛楃涓茬殑鎸囬拡錛屽彲浠ュ埄鐢ㄥ瓧絎︿覆鐨勯暱

搴﹀尯鍒咮STR錛岃闀垮害涓嶅寘鎷渶鍚庣殑null緇撳熬絎︼紝鑰屼笖鍦ㄥ瓧絎︿覆鎸囬拡涔嬪墠鐨?涓瓧鑺傞噷鎸囧畾銆傜敱浜庡畠鏄疷nicode瀛楃

涓詫紝鎵浠ユ瘡涓瓧絎﹀崰鐢?涓瓧鑺傦紝涓嶭POLESTR緇撳熬鏂瑰紡涓鏍鳳紝BSTR涔熷繀欏諱互null緇撳熬銆侭STR閬垮厤浜哃POLESTR鐨勭己

闄鳳紝鍥犱負瀹冪殑闀垮害鏄樉紺烘寚瀹氱殑錛屾墍浠ull瀛楃涔熷彲宓屽叆鍒癇STR涓紝鎵浠STR鍙鐢ㄤ簬鍙戦佷簩榪涘埗鏁版嵁鍜岀畝鍗曞瓧

絎︿覆銆傜敱浜嶣STR鍏鋒湁鐗規畩緇撴瀯錛屽洜姝ゅ鍔犱簡涓浜涚壒孌婄殑API鍑芥暟鏉ュ鐞咮STR.鍒涘緩鍜岄攢姣丅STR鏃惰皟鐢ㄨ繖浜涘嚱鏁般?br>(BSTR灝辨槸LPOLESTR鎸囬拡錛屽茍涓斿湪鎸囬拡鐨勫墠闈㈠姞涓?涓瓧鑺傛潵琛ㄧず澶у皬)
7.澶勭悊BSTR鐨勫父鐢ˋPI鍑芥暟銆?br>搴旇浣跨敤SysAllocString()鍜孲ysFreeString()鏉ョ鐞咮STR綾誨瀷
澹版槑濡備笅錛?br>BSTR SysAllocString(const OLECHAR *szSource);
鍙嶄箣錛屼嬌鐢⊿ysAllocStringLen()鏉ユ寚瀹氱粨鏋淏STR鐨勯暱搴︺?br>鎵鏈夌殑BSTR閮藉繀欏諱嬌鐢⊿ysFreeString()閲婃斁銆傚惁鍒欎細閫犳垚鍐呭瓨娉勬紡銆?br>8.璺–OM杈圭晫鐨勫瓧絎︿覆鍐呭瓨綆$悊銆?br>BSTR娌℃湁寮曠敤璁℃暟鏈哄埗
錛?錛夊湪浼犻掑瓧絎︿覆鏃訛紝鏈嶅姟鍣ㄨ礋璐d粈涔堟搷浣溿?br>COM鏈嶅姟鍣ㄧ▼搴忎笉搴旇緇存姢璺–OM杈圭晫浼犻掔殑鍙橀噺鐨勫紩鐢紝鐩稿弽錛屽簲璇ヨ繘琛屽鍒躲?br>鍦ㄨ法COM杈圭晫浼犻払STR鏃訛紝鏈嶅姟鍣ㄧ▼搴忕殑綆$悊鍘熷垯鏄鎴風▼搴忚礋璐i噴鏀綛STR銆傛棤璁築STR鏄痆in]榪樻槸[out]鍙傛暟銆傞兘

灝嗗姝ゃ傚湪灝嗗瓧絎︿覆浼犻掔粰瀹㈡埛紼嬪簭鏃訛紝闇瑕佹湇鍔″櫒紼嬪簭閲婃斁璇ュ瓧絎︿覆鐨勫敮涓鏃跺欐槸涓篬in,out]鍙傛暟璧嬩俊鍊間箣鍓?br>
銆傛鏃訛紝瀹㈡埛紼嬪簭浼犻掕鍒嗛厤鐨勫瓧絎︿覆錛岃屾湇鍔″櫒紼嬪簭閲婃斁璇ュ瓧絎︿覆錛岀劧鍚庡埗璁竴涓寚閽堬紝浠栨寚鍚戞柊鍒嗛厤鐨勫瓧絎?br>
涓茬殑浣嶇疆錛岃屼笖璇ュ瓧絎︿覆灝嗙敱瀹㈡埛紼嬪簭閲婃斁錛屽浜庢湇鍔″櫒紼嬪簭鑰岃█錛岀鐞嗗師鍒欏緇堟槸鍒涘緩杈撳叆鍜岃緭鍑築STR鐨刢opy

錛岃屼笉鏄粰鐜版湁BSTR娣誨姞鍙︿竴涓紩鐢ㄣ?br>渚嬪錛?br>STDMETHOD CstrigTest::GetValue(BSTR *pResult)
{
*pResult = m_str;
return S_OK;
}
//榪欐槸涓嶅鐨勶紝铏界劧娌℃湁 璇硶閿欒錛屽ぇ榪濆弽浜咰OM鐨勭鐞嗚鍒欙紝搴旇濡備笅錛?br>鏂規硶涓錛?br>
STDMETHOD CstrigTest::GetValue(BSTR *pResult)
{
*pResult = SysAllocString(m_str);
return S_OK;
}
鏂規硶浜岋細
STDMETHOD CstrigTest::GetValue(BSTR *pResult)
{
*pResult = m_str;
m_str = NULL;
return S_OK;
}
杈撳叆鍙傛暟鏃跺師鍒欑浉鍚屻?br>涓嬮潰鏄鐞咮STR鐨勬寚瀵兼柟閽堬細
錛?錛塠in]鍙傛暟蹇呴』鐢眂lient鎷ユ湁錛屾墍浠ワ紝濡傛灉鏈嶅姟鍣ㄧ▼搴忓簲璇ュ垱寤篶opy錛屼笉搴旈噴鏀炬垨鏇存敼榪欎簺鍙傛暟銆?br>(2)[out]鍙傛暟鐢眂lient閲婃斁銆?br>錛?錛夊鎴風▼搴忓繀欏誨皢NULL鎴栭噴鏀劇殑BSTR浼犻掔粰鏈嶅姟鍣ㄧ▼搴忕殑[out]鍙傛暟涓?br>錛?錛夊湪鏈嶅姟鍣ㄧ▼搴忓湪琚祴浜堟柊鐨凚STR鍊間箣鍓嶏紝[in,out]鍙傛暟蹇呴』琚噴鏀俱?br>錛?錛夊緇堜嬌鐢⊿ysStringLen()鑾峰緱BSTR鐨勯暱搴︺?br>COM+鎻愪緵浜嗕袱涓被鍑芥暟瀵瑰瓧絎︿覆榪涜灝佽:CComBSTR 鍜宊bstr_t
9.瀛楃涓茶漿鎹㈠嚱鏁?br>ATL瀛楃涓茶漿鎹㈠畯錛堝湪浣跨敤浠諱綍瀹忎箣鍓嶏紝涓瀹氳鎸囧畾USER_CONVERSION瀹忥紝鍚﹀垯浼氶亣鍒板涓嬬紪璇戦敊璇細error c2065:'_lpw'undeclared 

identifier錛?br>A2BSTR A2COLE A2CW .......(寰堝)
渚嬪錛氾紙浣跨敤W2A瀹忥級
LPOLESTR szString=L"this is a string!";
char *str;
str = W2A(szString);
鎵鏈夎繖浜涘畯閮芥槸浠TL涓哄熀紜鐨勶紝鍦ˋTL涓嬌鐢ㄨ繖浜涘畯鏃訛紝欏圭洰蹇呴』鍖呮嫭atlconv.h銆?br>COM+榪樺畾涔変簡鍙﹀涓や釜杞崲鍑芥暟錛岃屼笖鏈?import鎸囦護鑷姩鍖呭惈錛岃繖涓や釜鍑芥暟閮戒綅浜巆omutil.h鏂囦歡涓紝騫朵粠灞炰簬_com_util鍚嶇О絀洪棿錛屼粬浠彲浠?br>
灝咥NSI瀛楃涓茶漿鎹㈡垚BSTR錛屾垨鑰呭弽鍚戙傚嚱鏁頒負錛?br>ConvertStringToBSTR()
ConvertBSTRToString()
10.CComBSTR(CComBSTR灝佽浜咮STR)
濡傛灉鍦˙STR瓚呭嚭浜嗗叾浣滅敤鍩熸椂娌℃湁璋冪敤SysFreeString()錛屽垯緋葷粺璋冪敤浼氶犳垚鍐呭瓨娉勬紡銆?br>CComBSTR鍦ˋTL鐨刟tlbase.h澶存枃浠朵腑瀹氫箟錛屽洜涓哄畠鍦ㄤ竴涓狝TL鏂囦歡涓畾涔夛紝鎵浠ComBSTR鍦ˋTL欏圭洰涓渶甯哥敤錛屼互浠嶤OM瀹㈡埛紼嬪簭涓潵鍥炰紶閫掑瓧絎?br>
涓層?br>CComBSTR鍙湁涓涓暟鎹垚鍛橈紝鍚嶄負m_str鐨勫叕鍏盉STR銆侰ComBSTR鐨勭敤閫旀槸灝佽BSTR鏁版嵁綾誨瀷錛屼互甯姪BSTR鐨勫唴瀛樼鐞嗐傝繕鏈塗oUpper(),ToLower(

)絳夊皢瀛楃涓茶漿鎹負鐗瑰畾鐨勫ぇ灝忓啓鏍煎紡銆?br>錛堝湪鏋勯犲嚱鏁扮鍒嗛厤鍐呭瓨錛屽湪鏋愭瀯鍑芥暟涓噴鏀懼唴瀛橈級銆?br>鍦ㄨ祴鍊鹼紝瀹炰緥鍖栵紝鍒犻櫎鏃跺唴瀛樼鐞嗛潪甯稿叧閿?br>Attach()杞Щ鎵鏈夋潈銆?br>蹇呴』鏄痬_str=NULL鏃舵墠鑳戒嬌鐢ˋttach()
Detach()鐢ㄤ簬閲婃斁鎵鏈夋潈錛?br>BSTR Detach()
{
BSTR s = m_str;
m_str = NULL;
return s;
}
Copy()鍑芥暟鐢ㄤ簬澶嶅埗瀛楃涓層?br>11._bstr_t
_bstr_t淇濇寔鍐呴儴鐨勫紩鐢ㄨ鏁?br>_bstr_t鏄敱#import鎸囦護鑷姩娣誨姞鐨勩備笌CComBSTR鐨勬渶澶у尯鍒槸淇濇寔浜嗕竴涓唴閮ㄥ紩鐢ㄣ傚彟涓涓尯鍒槸_bstr_t瑕佹眰寮傚父澶勭悊錛孉TL欏圭洰涓嶄細鍖呮嫭

寮傚父澶勭悊錛屽洜姝bstr_t鏇撮傚悎浜嶤OM瀹㈡埛紼嬪簭錛宊bstr_t鐨勫畾涔変笌瀹炵幇浣嶄簬comutil.h涓?br>涓涓氱敤鐨勫師鍒欐槸錛歘bstr_t綾誨簲鐢ㄤ簬COM瀹㈡埛紼嬪簭錛岃孋ComBSTR搴旂敤浜嶢TL鏈嶅姟鍣ㄧ▼搴忋?br>12.鍏跺畠鏁版嵁綾誨瀷
1.COM鏁版嵁綾誨瀷
COM name                   C++             size
Byte                      BYTE              8
Boolean                  VARIANT_BOOL       16
Double                   double              64
Float                     float             32
Integer                   int                  
Long                       long            32
Short                     short            16
String                     BSTR
Date                       DATE
Variant                    VARIANT           
Dispatch Interface          IDispatch*
Unknown Interface           IUnknown*
2.VARIANT緇撴瀯
3._variant_t
_variant_t鏄痬icsoft鐗規湁鐨勶紝瀹冩槸VARIANT鐨凜++灝佽鍣ㄧ被
4.浼犻掓暟緇?br>浼犻掓暟緇勭殑綾誨瀷涓猴細SAFEARRAY**銆?br>

]]>
_variant_t 鏄粈涔堟暟鎹被鍨嬶紵錛?/title><link>http://m.shnenglu.com/bestcln/articles/82711.html</link><dc:creator>鏋佸搧鍨冨溇</dc:creator><author>鏋佸搧鍨冨溇</author><pubDate>Tue, 12 May 2009 09:43:00 GMT</pubDate><guid>http://m.shnenglu.com/bestcln/articles/82711.html</guid><wfw:comment>http://m.shnenglu.com/bestcln/comments/82711.html</wfw:comment><comments>http://m.shnenglu.com/bestcln/articles/82711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/bestcln/comments/commentRss/82711.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/bestcln/services/trackbacks/82711.html</trackback:ping><description><![CDATA[榪欎釜闂鐨勭瓟妗堟瘮杈冨箍娉涳細   <br>  鎴戞墍鐭ラ亾甯哥敤鐨?  <br>  1銆傚湪鎵ц鐨凷QL璇彞涓鑸兘鏄痏bstr_t   <br>  2.Connection   涓殑RecordsAffected   涓篤ARIANT   <br>  3.浣跨敤get_Value()鑾峰緱鐨勮褰曠殑鍊間負   VAARIANT   <br>      絳夌瓑銆傘傘?  <br>  _bstr_t   涓褰曚簡瀛楃涓茬殑闀垮害錛?  <br>  _variant_t   璁板綍鏈夋暟鎹殑綾誨瀷鍜屾暟鎹殑鍊?  <br>      濡?  _variant_t   ttt;   <br>      ttt.vt=I4_VT;   琛ㄧず鏁版嵁綾誨瀷涓烘暣鏁?  <br>      ttt.lVal   涓烘暟鎹殑鍊? <img src ="http://m.shnenglu.com/bestcln/aggbug/82711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/bestcln/" target="_blank">鏋佸搧鍨冨溇</a> 2009-05-12 17:43 <a href="http://m.shnenglu.com/bestcln/articles/82711.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>vc瀹氫箟鍏ㄥ眬鍙橀噺http://m.shnenglu.com/bestcln/articles/82658.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Tue, 12 May 2009 01:53:00 GMThttp://m.shnenglu.com/bestcln/articles/82658.htmlhttp://m.shnenglu.com/bestcln/comments/82658.htmlhttp://m.shnenglu.com/bestcln/articles/82658.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/82658.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/82658.html鍏ㄥ眬鍙橀噺涓鑸繖鏍峰畾涔夛細
1銆傚湪涓綾葷殑.cpp涓畾涔?int myInt;
鐒跺悗鍐嶅湪瑕佺敤鍒扮殑鍦版柟鐨?cpp閲宔xtern int myInt錛涜繖鏍峰氨鍙互鐢ㄤ簡銆?/font>

2銆傚湪stdafx.cpp涓姞鍏?
int myInt;
鐒跺悗鍦╯tdafx.h涓姞鍏?
extern int myInt
榪欐牱瀹氫箟浠ュ悗鏃犺鍦ㄤ粈涔堟枃浠朵腑閮芥槸鍙鐨?

3銆傛瘮杈冭鑼冪殑鏄紝鍏堝畾涔変竴涓狦lbs.h錛屾妸鎵鏈夌殑鍏ㄥ眬鍙橀噺鍘熷瀹氫箟鏀捐繘鍘匯傜劧鍚庡畾涔変竴涓狤xterns.h錛屾妸浣犲厛鍓嶅畾涔夊湪Glbs.h涓殑鍙橀噺閮藉姞涓奺xtern銆傛敞鎰忥細濡傛灉浣犲湪Glbs.h涓緗簡鍒濆鹼紝閭d箞鍦‥xterns.h涓氨涓嶈鍔犲間簡銆傜劧鍚庤皟鐢ㄦ椂錛岀涓嬈¤皟鐢ㄧ殑錛僫 nclude <Glbs.h>錛屼互鍚庤皟鐢ㄧ殑錛僫 nclude <Externs.h>

鍙︼細

闂細濡備綍鍦╒C++涓嬌鐢ㄥ叏灞鍙橀噺錛屼互浣挎枃妗d腑鐨勬墍鏈夌被閮借兘璁塊棶銆?br>銆銆絳旓細鎶婅鍙橀噺鏀懼埌璇ュ簲鐢ㄧ▼搴忕被鐨勫ご鏂囦歡涓殑attribute澶勩傜劧鍚庯紝鍦ㄧ▼搴忕殑浠諱綍鍦版柟錛屼綘閮藉彲浠ョ敤涓嬮潰鐨勬柟娉曟潵璁塊棶璇ュ彉閲忥細
銆銆CMyApp *app=錛圕MyApp*錛堿fxGet-App錛堬級錛?br>銆銆app->MyGlobalVariable=…
銆銆鐢ㄨ繖涓柟娉曪紝涓嶄絾鍙互瀹氫箟鍏ㄥ眬鍙橀噺錛屼篃鍙互瀹氫箟鍏ㄥ眬瀵硅薄銆?br>銆銆渚嬪錛?br>銆銆MyClass MyObject錛?br>銆銆CMyApp*app=錛圕MyApp*錛堿fxGet-App錛堬級錛?br>銆銆app->MyObject.MyFunction錛堬級錛?/font>

 

VC涓嬌鐢ㄥ叏灞鍙橀噺鐨?縐嶅姙娉曞強闃查敊鎺柦

  
  1. 瀵逛簬鍏ㄥ眬鍙橀噺瀛樺湪鍜屽嚱鏁頒竴鏍風殑闂錛屼負浜嗗湪鍏朵粬CPP鏂囦歡涓兘澶熻闂繖浜涘彉閲忥紝蹇呴』鍦ㄤ富鏂囦歡鐨凥鏂囦歡涓姞涓奺xtern澹版槑錛屾牸寮忓涓嬶細
extern varibletype var; 錛堝0鏄庯級
鍦ㄤ富鏂囦歡鐨凜PP鏂囦歡涓畾涔?br>varibletype var; 錛堝畾涔夛級
渚嬪瓙:
AppWizard寤虹珛涓涓猅est宸ョ▼
閭d箞鍦═est.h涓0鏄巈xtern CString cs;
鍦═est.app瀹氫箟CString cs;

   濡傛灉瑕佸畾涔夋暣涓伐紼嬬殑鍏ㄥ眬鍙橀噺錛屽湪浠諱綍涓涓狢PP鏂囦歡涓繘琛屽畾涔夛紝鐒跺悗鍦ㄩ渶瑕佸紩鐢ㄨ繖涓彉閲忕殑鏂囦歡涓繘琛屽0鏄庛傚鍏ㄥ眬鍙橀噺寰堝鍙互閫夋嫨浣跨敤瀹氫箟鍏ㄥ眬鍙橀噺鐨勩俬鏂囦歡錛屽湪闇瑕佺殑鍦版柟鐩存帴include澶存枃浠跺嵆鍙紝涓嶉渶瑕佸啓閭d箞澶歟xtern浜嗐?br>2.搴旂敤紼嬪簭綾葷殑涓誨ご鏂囦歡澶勫畾涔夊彉閲弙aribletype var錛岀劧鍚庯紝鍦ㄧ▼搴忕殑浠諱綍鍦版柟錛岄兘鍙互鐢ㄤ笅闈㈢殑鏂規硶鏉ヨ闂鍙橀噺錛?nbsp;
銆銆CClassApp *app=(CClassApp*)AfxGetApp(); 
銆銆app->var=
銆綾諱技鐨勶紝浠ヤ笂鏂規硶涔熷彲浠ュ畾涔夊叏灞瀵硅薄
渚嬪瓙:
AppWizard寤虹珛涓涓猅est宸ョ▼
閭d箞鍦═est.h涓0鏄?CString cs;
浣跨敤鐨勬椂鍊機TestApp *app=(CTestApp*)AfxGetApp(); 
    app->cs="Global"
 
闃查敊鎺柦錛?br>鑻ュ畾涔夌殑鍑芥暟鍜屽叏灞鍙橀噺鍦ㄥ涓枃浠跺寘鍚笖閫犳垚宓屽鎴栧嬈¤皟鐢ㄧ殑璇濓紝榪欐牱灝嗗鑷磋繖涓ご鏂囦歡姣忚鍖呭惈渚濇錛屽嚱鏁版垨鍙橀噺灝辮閲嶆柊瀹氫箟涓嬈★紝鍦ㄩ摼鎺ョ紪璇戞椂浼氬鑷撮噸瀹氫箟閿欒銆備負姝ら渶瑕佷嬌鐢ㄤ竴縐嶈縐頒負Guard macro鐨勬妧鏈潵淇濊瘉涓嶅嚭閿欍傚湪涓涓ご鏂囦歡寮澶村姞涓?nbsp;
#ifndef   _MACRO_1_
#define   _MACRO_1_
鍦ㄦ枃浠舵湯灝懼鍔?nbsp;
#endif



]]>
VC 涓插彛璋冭瘯http://m.shnenglu.com/bestcln/articles/80270.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Fri, 17 Apr 2009 09:29:00 GMThttp://m.shnenglu.com/bestcln/articles/80270.htmlhttp://m.shnenglu.com/bestcln/comments/80270.htmlhttp://m.shnenglu.com/bestcln/articles/80270.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/80270.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/80270.html1.寤虹珛欏圭洰錛?/span>

鎵撳紑VC錛嬶紜6.0錛屽緩绔嬩竴涓熀浜庡璇濇鐨凪FC搴旂敤紼嬪簭SCommTest;

2.鍦ㄩ」鐩腑鎻掑叆MSComm鎺т歡  

閫夋嫨Project鑿滃崟涓婣dd To Project瀛愯彍鍗曚腑鐨?Components and Controls…閫夐」錛屽湪寮瑰嚭鐨勫璇濇涓弻鍑籖egistered ActiveX Controls欏癸紙紼嶇瓑涓浼氾紝榪欎釜榪囩▼杈冩參錛夛紝鍒欐墍鏈夋敞鍐岃繃鐨凙ctiveX鎺т歡鍑虹幇鍦ㄥ垪琛ㄦ涓?閫夋嫨Microsoft Communications Control, version 6.0錛岋紝鍗曞嚮Insert鎸夐挳灝嗗畠鎻掑叆鍒版垜浠殑Project涓潵錛屾帴鍙楃己鐪佺殑閫夐」銆傦紙濡傛灉浣犲湪鎺т歡鍒楄〃涓湅涓嶅埌Microsoft Communications Control, version 6.0錛岄偅鍙兘鏄綘鍦ㄥ畨瑁匳C6鏃舵病鏈夋妸ActiveX涓欏歸変笂錛岄噸鏂板畨瑁匳C6錛岄変笂ActiveX灝卞彲浠ヤ簡錛夛紝

榪欐椂鍦–lassView瑙嗙獥涓氨鍙互鐪嬪埌CMSComm綾諱簡錛岋紙娉ㄦ剰錛氭綾誨湪ClassWizard涓湅涓嶅埌錛岄噸鏋刢lw鏂囦歡涔熶竴鏍鳳級錛屽茍涓斿湪鎺т歡宸ュ叿鏍廋ontrols涓嚭鐜頒簡鐢佃瘽鍥炬爣錛堝鍥?鎵紺猴級錛岀幇鍦ㄨ鍋氱殑鏄敤榧犳爣灝嗘鍥炬爣鎷栧埌瀵硅瘽妗嗕腑錛岀▼搴忚繍琛屽悗錛岃繖涓浘鏍囨槸鐪嬩笉鍒扮殑銆?/span>

3.鍒╃敤ClassWizard瀹氫箟CMSComm綾繪帶鍒跺璞?/span>

鎵撳紑ClassWizard錛?gt;Member Viariables閫夐」鍗★紝閫夋嫨CSCommTestDlg綾伙紝涓篒DC_MSCOMM1娣誨姞鎺у埗鍙橀噺錛歮_ctrlComm錛岃繖鏃朵綘鍙互鐪嬩竴鐪嬶紝鍦ㄥ璇濇澶存枃浠朵腑鑷姩鍔犲叆浜?/{{AFX_INCLUDES() 錛僫 nclude "mscomm.h" //}}AFX_INCLUDES 銆?/span>

4.鍦ㄥ璇濇涓坊鍔犳帶浠?/span>
 
鍚戜富瀵硅瘽妗嗕腑娣誨姞涓や釜緙栬緫妗嗭紝涓涓敤浜庢帴鏀舵樉紺烘暟鎹甀D涓篒DC_EDIT_RXDATA錛屽彟涓涓敤浜庤緭鍏ュ彂閫佹暟鎹紝ID涓篒DC_EDIT_TXDATA錛屽啀娣誨姞涓涓寜閽紝鍔熻兘鏄寜涓嬈″氨鎶婂彂閫佺紪杈戞涓殑鍐呭鍙戦佷竴嬈★紝灝嗗叾ID璁句負IDC_BUTTON_MANUALSEND銆傚埆蹇樿浜嗗皢鎺ユ敹緙栬緫妗嗙殑Properties錛?gt;Styles涓妸Miltiline鍜孷ertical Scroll灞炴ч変笂錛屽彂閫佺紪杈戞鑻ヤ綘鎯寵緭鍏ュ琛屾枃瀛楋紝涔熷彲閫変笂Miltiline銆?/span>

鍐嶆墦寮ClassWizard錛?gt;Member Viariables閫夐」鍗★紝閫夋嫨CSCommTestDlg綾伙紝 涓篒DC_EDIT_RXDATA娣誨姞CString鍙橀噺m_strRXData錛?涓篒DC_EDIT_TXDATA娣誨姞CString鍙橀噺m_strTXData銆傝鏄庯細 m_strRXData鍜宮_strTXData鍒嗗埆鐢ㄦ潵鏀懼叆鎺ユ敹鍜屽彂閫佺殑瀛楃鏁版嵁銆?/span>

5.娣誨姞涓插彛浜嬩歡娑堟伅澶勭悊鍑芥暟OnComm()

鎵撳紑ClassWizard錛?gt;Message Maps錛岄夋嫨綾籆SCommTestDlg錛岄夋嫨IDC_MSCOMM1錛屽弻鍑繪秷鎭疧nComm錛屽皢寮瑰嚭鐨勫璇濇涓皢鍑芥暟鍚嶆敼涓篛nComm銆?/span>

榪欎釜鍑芥暟鏄敤鏉ュ鐞嗕覆鍙f秷鎭簨浠剁殑錛屽姣忓綋涓插彛鎺ユ敹鍒版暟鎹紝灝變細浜х敓涓涓覆鍙f帴鏀舵暟鎹紦鍐插尯涓湁瀛楃鐨勬秷鎭簨浠訛紝鎴戜滑鍒氭墠娣誨姞鐨勫嚱鏁板氨浼氭墽琛岋紝鎴戜滑鍦∣nComm()鍑芥暟鍔犲叆鐩稿簲鐨勫鐞嗕唬鐮佸氨鑳藉疄鐜拌嚜宸叉兂瑕佺殑鍔熻兘浜嗐傝浣犲湪鍑芥暟涓姞鍏ュ涓嬩唬鐮侊細

void CSCommTestDlg::OnComm()
{
    // TODO: Add your control notification handler code here
    VARIANT variant_inp;
    COleSafeArray safearray_inp;
    LONG len,k;
    BYTE rxdata[2048]; //璁劇疆BYTE鏁扮粍 An 8-bit integerthat is not signed.
    CString strtemp;
    if(m_ctrlComm.GetCommEvent()==2) //浜嬩歡鍊間負2琛ㄧず鎺ユ敹緙撳啿鍖哄唴鏈夊瓧絎?br>    {             ////////浠ヤ笅浣犲彲浠ユ牴鎹嚜宸辯殑閫氫俊鍗忚鍔犲叆澶勭悊浠g爜
        variant_inp=m_ctrlComm.GetInput(); //璇葷紦鍐插尯
        safearray_inp=variant_inp; //VARIANT鍨嬪彉閲忚漿鎹負ColeSafeArray鍨嬪彉閲?br>        len="safearray"_inp.GetOneDimSize(); //寰楀埌鏈夋晥鏁版嵁闀垮害
        for(k=0;k<len;k++)
            safearray_inp.GetElement(&k,rxdata+k);//杞崲涓築YTE鍨嬫暟緇?br>        for(k=0;k<len;k++) //灝嗘暟緇勮漿鎹負Cstring鍨嬪彉閲?br>        {
            BYTE bt=*(char*)(rxdata+k); //瀛楃鍨?br>            strtemp.Format("%c",bt); //灝嗗瓧絎﹂佸叆涓存椂鍙橀噺strtemp瀛樻斁
            m_strRXData+=strtemp; //鍔犲叆鎺ユ敹緙栬緫妗嗗搴斿瓧絎︿覆
        }
    }
    UpdateData(FALSE); //鏇存柊緙栬緫妗嗗唴瀹?br>
}

鍒扮洰鍓嶄負姝㈣繕涓嶈兘鍦ㄦ帴鏀剁紪杈戞涓湅鍒版暟鎹紝鍥犱負鎴戜滑榪樻病鏈夋墦寮涓插彛錛屼絾榪愯紼嬪簭涓嶅簲璇ユ湁浠諱綍閿欒錛屼笉鐒訛紝浣犺偗瀹氬摢鍎挎病鐪嬩粩緇嗭紝鍥犱負鎴戞槸鎵撳紑VC6瀵圭収鐫鍋氫竴姝ュ啓涓琛岀殑錛岃繍琛岃瘯璇曘傛病閿欏惂錛熼偅涔堝仛涓嬩竴姝ワ細

6.鎵撳紑涓插彛鍜岃緗覆鍙e弬鏁?/span>

浣犲彲浠ュ湪浣犻渶瑕佺殑鏃跺欐墦寮涓插彛錛屼緥濡傚湪紼嬪簭涓仛涓涓紑濮嬫寜閽紝鍦ㄨ鎸夐挳鐨勫鐞嗗嚱鏁頒腑鎵撳紑涓插彛銆傜幇鍦ㄦ垜浠湪涓誨璇濇鐨凜SCommTestDlg::OnInitDialog()鎵撳紑涓插彛錛屽姞鍏ュ涓嬩唬鐮侊細

// TODO: Add extra initialization here
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);

m_ctrlComm.SetCommPort(1); //閫夋嫨com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//鎵撳紑涓插彛
else
AfxMessageBox("cannot open serial port");

m_ctrlComm.SetSettings("9600,n,8,1"); //娉㈢壒鐜?600錛屾棤鏍¢獙錛?涓暟鎹綅錛?涓仠姝綅

m_ctrlComm.SetInputModel(1); //1錛氳〃紺轟互浜岃繘鍒舵柟寮忔鍙栨暟鎹?br>m_ctrlComm.SetRThreshold(1);
//鍙傛暟1琛ㄧず姣忓綋涓插彛鎺ユ敹緙撳啿鍖轟腑鏈夊浜庢垨絳変簬1涓瓧絎︽椂灝嗗紩鍙戜竴涓帴鏀舵暟鎹殑OnComm浜嬩歡
m_ctrlComm.SetInputLen(0); //璁劇疆褰撳墠鎺ユ敹鍖烘暟鎹暱搴︿負0
m_ctrlComm.GetInput();//鍏堥璇葷紦鍐插尯浠ユ竻闄ゆ畫鐣欐暟鎹?/span>

鐜板湪浣犲彲浠ヨ瘯璇曠▼搴忎簡錛屽皢涓插彛綰挎帴濂藉悗錛?span style="FONT-SIZE: 12pt; COLOR: #999999">涓嶄細鎺ワ紵鍘葷湅鐪嬫垜鍐欑殑涓插彛鎺ョ嚎鍩烘湰鏂規硶錛夛紝鎵撳紑涓插彛璋冭瘯鍔╂墜錛屽茍灝嗕覆鍙h鍦╟om2錛岄変笂鑷姩鍙戦侊紝涔熷彲浠ョ瓑浼氭墜鍔ㄥ彂閫併傚啀鎵ц浣犵紪鍐欑殑紼嬪簭錛屾帴鏀舵閲屽簲璇ユ湁鏁版嵁鏄劇ず浜嗐?/span>

7.鍙戦佹暟鎹?/span>

鍏堜負鍙戦佹寜閽坊鍔犱竴涓崟鍑繪秷鎭嵆BN_CLICKED澶勭悊鍑芥暟錛屾墦寮ClassWizard錛?gt;Message Maps錛岄夋嫨綾籆SCommTestDlg錛岄夋嫨IDC_BUTTON_MANUALSEND錛屽弻鍑籅N_CLICKED娣誨姞OnButtonManualsend()鍑芥暟錛屽茍鍦ㄥ嚱鏁頒腑娣誨姞濡備笅浠g爜錛?/span>

void CSCommTestDlg::OnButtonManualsend()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //璇誨彇緙栬緫妗嗗唴瀹?br>m_ctrlComm.SetOutput(COleVariant(m_strTXData));//鍙戦佹暟鎹?br>}

榪愯紼嬪簭錛屽湪鍙戦佺紪杈戞涓殢鎰忚緭鍏ョ偣浠涔堬紝鍗曞嚮鍙戦佹寜閽紝鍟婏紒鐪嬬湅錛屽湪鍙︿竴绔殑涓插彛璋冭瘯鍔╂墜錛堟垨鍒殑璋冭瘯宸ュ叿錛夋帴鏀舵閲屽嚭鐜頒簡浠涔堛?/span>

濡傛灉浣犵湡鏄垵嬈℃秹鐚庝覆鍙g紪紼嬶紝鍙堜竴嬈℃垚鍔燂紝閭h璇村0璋㈣阿鎴戜簡錛屽洜涓烘垜絎竴嬈″仛涓插彛紼嬪簭鏃跺彲璐瑰姴浜嗭紝閭f椂緗戜笂鐨勮祫鏂欎篃涓嶅ソ鎵俱傚紑寮鐜╃瑧錛岃阿璋綘鐨勬敮鎸侊紝鏈変粈涔堝ソ涓滆タ鍒繕浜嗙粰鎴戝瘎涓浠姐?/span>

璇存槑錛?/span>

鐢變簬鐢ㄥ埌VC鎺т歡錛屽湪娌℃湁瀹夎VC鐨勮綆楁満涓婅繍琛屾椂瑕佷粠VC涓妸mscomm32.ocx銆乵svcrt.dll銆乵fc42.dll鎷峰埌Windows鐩綍涓嬬殑System瀛愮洰褰曚腑錛坵in2000涓篠ystem32錛夊茍鍐嶈繘琛屾敞鍐岃緗?/span>



]]>
浣跨敤鏍囧噯C++鐨勭被鍨嬭漿鎹㈢錛歴tatic_cast銆乨ynamic_cast銆乺einterpret_cast銆佸拰const_cast銆?杞?http://m.shnenglu.com/bestcln/articles/76572.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Sat, 14 Mar 2009 05:20:00 GMThttp://m.shnenglu.com/bestcln/articles/76572.htmlhttp://m.shnenglu.com/bestcln/comments/76572.htmlhttp://m.shnenglu.com/bestcln/articles/76572.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/76572.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/76572.html浣跨敤鏍囧噯C++鐨勭被鍨嬭漿鎹㈢錛歴tatic_cast銆乨ynamic_cast銆乺einterpret_cast銆佸拰const_cast銆?/font>

3.1 static_cast
鐢ㄦ硶錛歴tatic_cast < type-id > ( expression )     
璇ヨ繍綆楃鎶奺xpression杞崲涓簍ype-id綾誨瀷錛屼絾娌℃湁榪愯鏃剁被鍨嬫鏌ユ潵淇濊瘉杞崲鐨勫畨鍏ㄦс傚畠涓昏鏈夊涓嬪嚑縐嶇敤娉曪細
鈶犵敤浜庣被灞傛緇撴瀯涓熀綾誨拰瀛愮被涔嬮棿鎸囬拡鎴栧紩鐢ㄧ殑杞崲銆?br>銆銆榪涜涓婅杞崲錛堟妸瀛愮被鐨勬寚閽堟垨寮曠敤杞崲鎴愬熀綾昏〃紺猴級鏄畨鍏ㄧ殑錛?br>銆銆榪涜涓嬭杞崲錛堟妸鍩虹被鎸囬拡鎴栧紩鐢ㄨ漿鎹㈡垚瀛愮被琛ㄧず錛夋椂錛岀敱浜庢病鏈夊姩鎬佺被鍨嬫鏌ワ紝鎵浠ユ槸涓嶅畨鍏ㄧ殑銆?br>鈶$敤浜庡熀鏈暟鎹被鍨嬩箣闂寸殑杞崲錛屽鎶奿nt杞崲鎴恈har錛屾妸int杞崲鎴恊num銆傝繖縐嶈漿鎹㈢殑瀹夊叏鎬т篃瑕佸紑鍙戜漢鍛樻潵淇濊瘉銆?br>鈶㈡妸絀烘寚閽堣漿鎹㈡垚鐩爣綾誨瀷鐨勭┖鎸囬拡銆?br>鈶f妸浠諱綍綾誨瀷鐨勮〃杈懼紡杞崲鎴恦oid綾誨瀷銆?/font>

娉ㄦ剰錛歴tatic_cast涓嶈兘杞崲鎺塭xpression鐨刢onst銆乿olitale銆佹垨鑰卂_unaligned灞炴с?/font>


3.2 dynamic_cast
鐢ㄦ硶錛歞ynamic_cast < type-id > ( expression )
璇ヨ繍綆楃鎶奺xpression杞崲鎴恡ype-id綾誨瀷鐨勫璞°俆ype-id蹇呴』鏄被鐨勬寚閽堛佺被鐨勫紩鐢ㄦ垨鑰卾oid *錛?br>濡傛灉type-id鏄被鎸囬拡綾誨瀷錛岄偅涔坋xpression涔熷繀欏繪槸涓涓寚閽堬紝濡傛灉type-id鏄竴涓紩鐢紝閭d箞expression涔熷繀欏繪槸涓涓紩鐢ㄣ?/font>

dynamic_cast涓昏鐢ㄤ簬綾誨眰嬈¢棿鐨勪笂琛岃漿鎹㈠拰涓嬭杞崲錛岃繕鍙互鐢ㄤ簬綾諱箣闂寸殑浜ゅ弶杞崲銆?br>鍦ㄧ被灞傛闂磋繘琛屼笂琛岃漿鎹㈡椂錛宒ynamic_cast鍜宻tatic_cast鐨勬晥鏋滄槸涓鏍風殑錛?br>鍦ㄨ繘琛屼笅琛岃漿鎹㈡椂錛宒ynamic_cast鍏鋒湁綾誨瀷媯鏌ョ殑鍔熻兘錛屾瘮static_cast鏇村畨鍏ㄣ?br>class B{
public:
       int m_iNum;
       virtual void foo();
};

class D:public B{
    public:
       char *m_szName[100];
};

void func(B *pb){
    D *pd1 = static_cast<D *>(pb);
    D *pd2 = dynamic_cast<D *>(pb);
}

鍦ㄤ笂闈㈢殑浠g爜孌典腑錛屽鏋減b鎸囧悜涓涓狣綾誨瀷鐨勫璞★紝pd1鍜宲d2鏄竴鏍風殑錛屽茍涓斿榪欎袱涓寚閽堟墽琛孌綾誨瀷鐨勪換浣曟搷浣滈兘鏄畨鍏ㄧ殑錛?br>浣嗘槸錛屽鏋減b鎸囧悜鐨勬槸涓涓狟綾誨瀷鐨勫璞★紝閭d箞pd1灝嗘槸涓涓寚鍚戣瀵硅薄鐨勬寚閽堬紝瀵瑰畠榪涜D綾誨瀷鐨勬搷浣滃皢鏄笉瀹夊叏鐨勶紙濡傝闂甿_szName錛夛紝
鑰宲d2灝嗘槸涓涓┖鎸囬拡銆?/font>

鍙﹀瑕佹敞鎰忥細B瑕佹湁铏氬嚱鏁幫紝鍚﹀垯浼氱紪璇戝嚭閿欙紱static_cast鍒欐病鏈夎繖涓檺鍒躲?br>榪欐槸鐢變簬榪愯鏃剁被鍨嬫鏌ラ渶瑕佽繍琛屾椂綾誨瀷淇℃伅錛岃岃繖涓俊鎭瓨鍌ㄥ湪綾葷殑铏氬嚱鏁拌〃錛?br>鍏充簬铏氬嚱鏁拌〃鐨勬蹇碉紝璇︾粏鍙<Inside c++ object model>錛変腑錛屽彧鏈夊畾涔変簡铏氬嚱鏁扮殑綾繪墠鏈夎櫄鍑芥暟琛紝
娌℃湁瀹氫箟铏氬嚱鏁扮殑綾繪槸娌℃湁铏氬嚱鏁拌〃鐨勩?/font>

鍙﹀錛宒ynamic_cast榪樻敮鎸佷氦鍙夎漿鎹紙cross cast錛夈傚涓嬩唬鐮佹墍紺恒?br>class A{
public:
        int m_iNum;
        virtual void f(){}
};

class B:public A{
};

class D:public A{
};

void foo(){
    B *pb = new B;
    pb->m_iNum = 100;

    D *pd1 = static_cast<D *>(pb);    //compile error
    D *pd2 = dynamic_cast<D *>(pb);  //pd2 is NULL
    delete pb;
}

鍦ㄥ嚱鏁癴oo涓紝浣跨敤static_cast榪涜杞崲鏄笉琚厑璁哥殑錛屽皢鍦ㄧ紪璇戞椂鍑洪敊錛涜屼嬌鐢?dynamic_cast鐨勮漿鎹㈠垯鏄厑璁哥殑錛岀粨鏋滄槸絀烘寚閽堛?/font>


3.3 reinpreter_cast
鐢ㄦ硶錛歳einpreter_cast<type-id> (expression)
type-id蹇呴』鏄竴涓寚閽堛佸紩鐢ㄣ佺畻鏈被鍨嬨佸嚱鏁版寚閽堟垨鑰呮垚鍛樻寚閽堛?br>瀹冨彲浠ユ妸涓涓寚閽堣漿鎹㈡垚涓涓暣鏁幫紝涔熷彲浠ユ妸涓涓暣鏁拌漿鎹㈡垚涓涓寚閽堬紙鍏堟妸涓涓寚閽堣漿鎹㈡垚涓涓暣鏁幫紝
鍦ㄦ妸璇ユ暣鏁拌漿鎹㈡垚鍘熺被鍨嬬殑鎸囬拡錛岃繕鍙互寰楀埌鍘熷厛鐨勬寚閽堝鹼級銆?/font>

璇ヨ繍綆楃鐨勭敤娉曟瘮杈冨銆?/font>

3.4 const_cast
鐢ㄦ硶錛歝onst_cast<type_id> (expression)
璇ヨ繍綆楃鐢ㄦ潵淇敼綾誨瀷鐨刢onst鎴杤olatile灞炴с傞櫎浜哻onst 鎴杤olatile淇グ涔嬪錛?type_id鍜宔xpression鐨勭被鍨嬫槸涓鏍風殑銆?br>甯擱噺鎸囬拡琚漿鍖栨垚闈炲父閲忔寚閽堬紝騫朵笖浠嶇劧鎸囧悜鍘熸潵鐨勫璞★紱
甯擱噺寮曠敤琚漿鎹㈡垚闈炲父閲忓紩鐢紝騫朵笖浠嶇劧鎸囧悜鍘熸潵鐨勫璞★紱甯擱噺瀵硅薄琚漿鎹㈡垚闈炲父閲忓璞°?/font>

Voiatile鍜宑onst綾昏瘯銆備婦濡備笅涓渚嬶細
class B{
public:
     int m_iNum;
}
void foo(){
 const B b1;
 b1.m_iNum = 100;            //comile error
 B b2 = const_cast<B>(b1);
 b2. m_iNum = 200;           //fine
}
涓婇潰鐨勪唬鐮佺紪璇戞椂浼氭姤閿欙紝鍥犱負b1鏄竴涓父閲忓璞★紝涓嶈兘瀵瑰畠榪涜鏀瑰彉錛?br>浣跨敤const_cast鎶婂畠杞崲鎴愪竴涓父閲忓璞★紝灝卞彲浠ュ瀹冪殑鏁版嵁鎴愬憳浠繪剰鏀瑰彉銆傛敞鎰忥細b1鍜宐2鏄袱涓笉鍚岀殑瀵硅薄銆?br>



]]>
VC++鐨勫伐紼嬫枃浠惰鏄庯細http://m.shnenglu.com/bestcln/articles/66767.html鏋佸搧鍨冨溇鏋佸搧鍨冨溇Wed, 12 Nov 2008 14:18:00 GMThttp://m.shnenglu.com/bestcln/articles/66767.htmlhttp://m.shnenglu.com/bestcln/comments/66767.htmlhttp://m.shnenglu.com/bestcln/articles/66767.html#Feedback0http://m.shnenglu.com/bestcln/comments/commentRss/66767.htmlhttp://m.shnenglu.com/bestcln/services/trackbacks/66767.htmlVC++鐨勫伐紼嬫枃浠惰鏄庯細

VC欏圭洰鏂囦歡璇存槑
.dsp   (developer studio project) 鏄疺C++鐨勯」鐩枃浠?鏂囨湰鏍煎紡銆傞」鐩弬鏁伴厤緗枃浠訛紝榪欎釜鏂囦歡澶噸瑕侊紝閲嶇偣淇濇姢瀵硅薄銆?nbsp;   
.dsw (developer studio worksapce )宸ヤ綔鍖烘枃浠訛紝閲嶈鎬т竴鑸紝鍥犱負瀹冧俊鎭笉鎴戯紝瀹規槗鎭㈠銆傚畠鍙互鎸囧悜涓涓垨澶氫釜.dsp鏂囦歡
.c錛氭簮浠g爜鏂囦歡錛屾寜C璇█鐢ㄦ硶緙栬瘧澶勭悊銆?br>.cpp錛氭簮浠g爜鏂囦歡錛屾寜C++璇硶緙栬瘧澶勭悊銆?br>.rc錛氳祫婧愭枃浠躲?br>      
浠ヤ笅鏂囦歡鍦ㄩ」鐩腑鏄彲涓㈠純鐨勶紝鏈変簺鏂囦歡鍒犻櫎鍚庯紝VC浼氳嚜鍔ㄧ敓鎴愮殑銆?br>.clw ClassWizard淇℃伅鏂囦歡,瀹為檯涓婃槸INI鏂囦歡鐨勬牸寮?鏈夊叴瓚e彲浠ョ爺絀朵竴涓?鏈夋椂鍊機lassWizard鍑洪棶棰?鎵嬪伐淇敼CLW鏂囦歡鍙互瑙e喅.濡傛灉姝ゆ枃浠朵笉瀛樺湪鐨勮瘽,姣忔鐢–lassWizard鐨勬椂鍊欑粯鎻愮ず浣犳槸鍚﹂噸寤?
.ncb 鏃犵紪璇戞祻瑙堟枃浠?no compile browser)銆傚綋鑷姩瀹屾垚鍔熻兘鍑洪棶棰樻椂鍙互鍒犻櫎姝ゆ枃浠躲俠uild鍚庝細鑷姩鐢熸垚銆?br>.opt 宸ョ▼鍏充簬寮鍙戠幆澧冪殑鍙傛暟鏂囦歡銆傚宸ュ叿鏉′綅緗瓑淇℃伅錛?鍙涪寮?     
.aps (AppStudio File),璧勬簮杈呭姪鏂囦歡,浜岃繘鍒舵牸寮?涓鑸笉鐢ㄥ幓綆′粬.
.plg 鏄紪璇戜俊鎭枃浠?緙栬瘧鏃剁殑error鍜寃arning淇℃伅鏂囦歡錛堝疄闄呬笂鏄竴涓猦tml鏂囦歡錛?涓鑸敤澶勪笉澶?鍦═ools->Options閲岄潰鏈変釜閫夐」鍙互鎺у埗榪欎釜鏂囦歡鐨勭敓鎴? (寤虹珛鏃ュ織鏂囦歡)
.hpj (Help Project)鏄敓鎴愬府鍔╂枃浠剁殑宸ョ▼,鐢╩icrosfot Help Compiler鍙互澶勭悊.
.mdp (Microsoft DevStudio Project)鏄棫鐗堟湰鐨勯」鐩枃浠?濡傛灉瑕佹墦寮姝ゆ枃浠剁殑璇?浼氭彁紺轟綘鏄惁杞崲鎴愭柊鐨凞SP鏍煎紡.
.bsc 鏄敤浜庢祻瑙堥」鐩俊鎭殑,濡傛灉鐢⊿ource Brower鐨勮瘽灝卞繀欏繪湁榪欎釜鏂囦歡.濡傛灉涓嶇敤榪欎釜鍔熻兘鐨勮瘽,鍙互鍦≒roject Options閲岄潰鍘繪帀Generate Browse Info File,鍙互鍔犲揩緙栬瘧閫熷害.
.map 鏄墽琛屾枃浠剁殑鏄犲儚淇℃伅綰綍鏂囦歡,闄ら潪瀵圭郴緇熷簳灞傞潪甯哥啛鎮?榪欎釜鏂囦歡涓鑸敤涓嶇潃.
.pch (Pre-Compiled File)鏄緙栬瘧鏂囦歡,鍙互鍔犲揩緙栬瘧閫熷害,浣嗘槸鏂囦歡闈炲父澶?
.pdb (Program Database)璁板綍浜嗙▼搴忔湁鍏崇殑涓浜涙暟鎹拰璋冭瘯淇℃伅,鍦ㄨ皟璇曠殑鏃跺欏彲鑳芥湁鐢?
.exp 鍙湁鍦ㄧ紪璇慏LL鐨勬椂鍊欐墠浼氱敓鎴?璁板綍浜咲LL鏂囦歡涓殑涓浜涗俊鎭?涓鑸篃娌′粈涔堢敤. 



]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲综合电影一区二区三区| 久久裸体视频| 久久精品女人| 久久久久国产精品一区| 久久免费视频在线观看| 久久久福利视频| 麻豆免费精品视频| 欧美黄色免费| 99视频精品全国免费| 亚洲午夜激情在线| 久久精品视频免费播放| 免费在线成人| 欧美日韩在线视频首页| 国产一区二区三区奇米久涩| 亚洲国产精品成人久久综合一区| 亚洲精选国产| 久久福利一区| 亚洲欧洲一级| 欧美一区二区三区视频| 麻豆freexxxx性91精品| 欧美午夜不卡视频| 国外视频精品毛片| 中文在线资源观看网站视频免费不卡 | 在线综合亚洲| 小处雏高清一区二区三区| 久久一二三区| 国产精品爽黄69| 日韩视频中文字幕| 久久久在线视频| 妖精成人www高清在线观看| 亚洲欧美日韩另类精品一区二区三区 | 国产私拍一区| 国产资源精品在线观看| 99精品国产一区二区青青牛奶 | 国产精品无码专区在线观看| 狠狠色狠色综合曰曰| 99re热这里只有精品视频| 久久青草福利网站| 一区二区三区四区国产| 免播放器亚洲| 国内精品久久久久久久果冻传媒| 一区二区三区高清视频在线观看| 久久精品99久久香蕉国产色戒| 日韩视频一区二区在线观看| 猫咪成人在线观看| 国产一区二区精品丝袜| 欧美一区二区高清在线观看| 亚洲作爱视频| 欧美精品尤物在线| 亚洲日本电影| 亚洲福利专区| 久久香蕉国产线看观看av| 国产一区二区精品久久| 久久se精品一区精品二区| 亚洲免费一区二区| 国产精品白丝黑袜喷水久久久 | 欧美成人一二三| 久久久久国产精品厨房| 韩国三级在线一区| 久久久亚洲欧洲日产国码αv| 亚洲男女自偷自拍图片另类| 国产精品久久影院| 性色一区二区| 欧美一级视频一区二区| 黄色成人免费观看| 免费一区视频| 欧美成人久久| 在线一区亚洲| 一本色道久久综合亚洲精品婷婷| 欧美日本精品一区二区三区| 妖精视频成人观看www| 亚洲蜜桃精久久久久久久| 欧美日韩国产成人| 亚洲欧美色婷婷| 欧美一区1区三区3区公司| 激情欧美丁香| 亚洲黑丝一区二区| 欧美午夜精品理论片a级大开眼界| 亚洲自拍偷拍福利| 欧美一区二区成人| 亚洲国产精品悠悠久久琪琪| 亚洲丰满在线| 国产精品国产三级国产aⅴ入口| 性色一区二区三区| 噜噜噜91成人网| 一本色道久久综合亚洲精品小说 | 国产精品视频网址| 国产精品亚洲第一区在线暖暖韩国| 亚洲天堂黄色| 欧美在线在线| 99精品视频免费观看| 亚洲一区二区免费看| 一区二区三区自拍| 亚洲美女视频在线免费观看| 国产欧美日韩专区发布| 欧美激情第一页xxx| 国产精品久久9| 欧美www视频在线观看| 国产精品爱啪在线线免费观看| 久久午夜电影| 国产精品扒开腿爽爽爽视频| 免费短视频成人日韩| 欧美特黄一区| 亚洲福利视频一区二区| 国产精品系列在线| 亚洲欧洲日夜超级视频| 国产一区导航| 一区二区日韩免费看| 亚洲国产小视频在线观看| 亚洲一区二区三区影院| 亚洲欧洲日本mm| 欧美在线观看天堂一区二区三区| 99视频在线观看一区三区| 久久精品伊人| 久久精品国产精品亚洲综合| 欧美日韩高清在线播放| 欧美黄色一级视频| 国产综合色产| 亚洲一区免费看| 一本色道久久综合| 欧美一区二区成人6969| 亚洲欧美激情一区| 欧美视频一二三区| 亚洲欧洲一区二区在线播放| 一区二区视频免费完整版观看| 亚洲欧美国产精品专区久久| 在线亚洲一区| 欧美日韩免费看| 欧美激情视频给我| 国内精品视频在线观看| 亚洲男女自偷自拍图片另类| 亚洲午夜国产一区99re久久| 欧美韩日精品| 91久久精品国产91性色tv| 亚洲人成亚洲人成在线观看图片| 久久成人精品| 久久三级福利| 狠狠综合久久av一区二区老牛| 亚洲小说欧美另类婷婷| 亚洲宅男天堂在线观看无病毒| 欧美国产一区视频在线观看 | 亚洲一卡二卡三卡四卡五卡| 一个色综合av| 欧美不卡三区| 91久久午夜| 亚洲色在线视频| 欧美先锋影音| 国产精品99久久不卡二区| 亚洲一区二区三区四区中文| 欧美午夜视频在线| 999亚洲国产精| 这里是久久伊人| 国产精品久久久久久久app| 在线视频精品| 国产一区二区三区无遮挡| 久久爱91午夜羞羞| 免费成人av资源网| 亚洲毛片视频| 国产精品v欧美精品v日韩| 午夜精品国产更新| 男男成人高潮片免费网站| 亚洲美女av电影| 国产精品久久久久久久久久尿| 亚洲影视九九影院在线观看| 久久久久五月天| 日韩小视频在线观看专区| 国产精品久久久久9999| 久久精品系列| 99国内精品| 欧美激情国产精品| 亚洲欧美日韩精品在线| 你懂的一区二区| 亚洲一区二区三区视频播放| 亚洲永久精品国产| 国产亚洲欧美一区| 欧美日韩成人一区二区| 欧美一区日韩一区| 亚洲精品一区二区网址| 久久三级福利| 亚洲免费网址| 亚洲免费观看在线视频| 国产在线观看一区| 欧美色播在线播放| 久久这里只有| 欧美一级专区| 亚洲一区尤物| 亚洲精品欧美在线| 欧美国产日韩精品| 久久久久九九视频| 亚洲欧美欧美一区二区三区| 亚洲激情国产精品| 国产在线观看精品一区二区三区| 欧美日本国产精品| 狼人天天伊人久久| 午夜精品久久久久久99热软件| 亚洲日本aⅴ片在线观看香蕉| 久久香蕉精品| 久久久精品网| 久久精品观看| 久久精品国产第一区二区三区最新章节|