锘??xml version="1.0" encoding="utf-8" standalone="yes"?>免费亚洲一区二区,亚洲欧洲在线一区,9久草视频在线视频精品http://m.shnenglu.com/colys/category/3604.htmlLIFE AS CODEzh-cnTue, 20 May 2008 19:07:25 GMTTue, 20 May 2008 19:07:25 GMT60鎻掕姳闂鐨勨滃姩鎬佽鍒掓硶鈥濈畻娉昜杞琞http://m.shnenglu.com/colys/articles/33753.htmlcolyscolysMon, 08 Oct 2007 05:40:00 GMThttp://m.shnenglu.com/colys/articles/33753.htmlhttp://m.shnenglu.com/colys/comments/33753.htmlhttp://m.shnenglu.com/colys/articles/33753.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/33753.htmlhttp://m.shnenglu.com/colys/services/trackbacks/33753.html/*
 浣滆咃細鎴愭檽鏃?br> 鏃墮棿錛?001騫?0鏈?1鏃?11:35:38-12:35:00)
 鍐呭錛氬畬鎴愭彃鑺遍棶棰樼殑“鍔ㄦ佽鍒掓硶”綆楁硶鍙婃敞瑙?br>*/
#include "stdafx.h"
#include "string.h"
#define MAX(A,B) ((A) > (B) ? (A):(B))
//--------------------椴滆姳闂--------------------
#define F 100
#define V 100
/*
 鎻掕姳闂鎻忚堪:
   灝唂鏉熼矞鑺辨彃鍏涓姳鐡朵腑,浣胯揪鍒版渶寰嶇殑瑙嗚鏁堟灉,
  闂鐩稿叧綰﹀畾鍙婃彃鑺辮姹?
   椴滆姳琚紪鍙蜂負1--f,鑺辯摱琚紪鍙蜂負1--v,鑺辯摱鎸変粠灝忓埌
  澶ч『搴忔帓鍒?涓鍙姳鐡跺彧鑳芥彃涓鏀姳,椴滆姳i鎻掑叆鑺辯摱j涓殑
  瑙嗚鏁堟灉鏁堟灉鍊煎凡鐭?緙栧彿灝忕殑椴滆姳鎵鏀懼叆鐨勮姳鐡剁紪鍙蜂篃灝?nbsp;
 闂姹傝В鎬濊礬:
   鑺辯摱j(1<=j<=v)涓彃鍏ラ矞鑺辯殑鍙兘緙栧彿涓篬1..j](緙栧彿
  灝忕殑椴滆姳鎵鏀懼叆鐨勮姳鐡剁紪鍙蜂篃灝?;
   璁炬暟緇刾[i][j]琛ㄧず椴滆姳i鎻掑叆鑺辯摱j鐨勫ソ鐪嬬▼搴?鏁扮粍
  q[i][j]琛ㄧず[1..i]鏉熼矞鑺辨彃鍏1..j]涓姳鐡舵墍鑳藉緱鍒扮殑鏈澶?br>  濂界湅紼嬪害,鍒濆鍖杚[0][0] = 0;q[0][j]=0(1<=j<=v),鍒檘[f][v]
  鏄棶棰樼殑瑙?
   鐗瑰埆鍦?j鏉熼矞鑺辨彃鍏ュ埌鍓嶉潰鐨刯鍙姳鐡朵腑,鎵寰楀埌鐨勫ソ鐪?br>  紼嬪害鏄痲[j][j] = p[1][1]+p[2][2]+...+[j][j].鐜板皢鎻掕姳榪?br>  紼嬫寜鑺辯摱鎺掑垪欏哄簭鍒掑垎鎴愪笉鍚岄樁孌?鍒欏湪絎琷闃舵,絎琲鏉熼矞鑺?br>  鑻ユ斁鍏ョj鍙瘋姳鐡?鏈澶уソ鐪嬬▼搴︽槸q[i-1][j-1]+p[i][j];絎琲鏉熼矞
  鑺辮嫢鏀懼叆鍓峧-1涓姳鐡朵腑鐨勬煇涓涓?鎵寰楃殑濂界湅紼嬪害鏄痲[i][j-1],
  閭d箞鍦ㄧj闃舵,鎻掑叆絎琲鏉熼矞鑺辨墍鑳藉緱鍒扮殑鏈澶уソ鐪嬬▼搴︿負:
  q[i][j] = MAX(q[i-1][j-1]+p[i][j],q[i][j-1]),瑕佷嬌q[i][j]
  鏈澶?搴斾嬌q[i-1][j-1]鍜宷[i][j-1]涔熸渶澶?br>*/
//鍒濆鍖栧嚱鏁?br>void Initialize(int *f,int *v,int p[][V])
{
 int i,j;
 printf("杈撳叆椴滆姳鏁伴噺鍙婅姳鐡朵釜鏁?");
 scanf("%d%d",f,v);
 printf("欏哄簭杈撳叆鍚勯矞鑺辨彃鍏ュ悇鑺辯摱鐨勫ソ鐪嬬▼搴?\n");
 for(i=1;i<=*f;i++)
  for(j=1;j<=*v;j++)
   p[i][j] = i+j;
   //scanf("%d",&p[i][j]);
}
//椴滆姳闂澶勭悊鍑芥暟
int Sove(int p[][V],int f,int v,int *way)
{
 int i,j,newv,q[F][V];
 q[0][0] = 0;
 /*璁劇疆v涓姳鐡跺垎鍒鎻掑叆v鏉熼矞鑺辨椂鍚勫彿鑺辯摱瀵瑰簲鐨?鍒濆)鏈澶уソ鐪嬬▼搴?/
 for(j=1;j<=v;j++)
 {
  q[0][j] = 0;
  /*璁劇疆絎琷鏉熼矞鑺辨斁鍏ョj鍙瘋姳鐡朵腑鐨勬渶澶уソ鐪嬬▼搴?/
  q[j][j] = q[j-1][j-1]+p[j][j];
 }
 for(j=1;j<=v;j++)
  for(i=1;i<j;i++)
   q[i][j] = MAX(q[i-1][j-1]+p[i][j],q[i][j-1]);
 newv = v;
 for(i=f;i>0;i--)
 {
  while(q[i-1][newv-1]+p[i][newv] < q[i][newv])
   newv--;
  //紜畾椴滆姳i鎻掑湪鑺辯摱newv涓?騫跺噯澶囪冭檻鍓嶄竴鍙姳鐡躲
  way[i] = newv--;
 }
 return(q[f][v]);
}
//--------------------椴滆姳闂--------------------
//--------------------鏈闀垮瓙涓查棶棰?-------------------
#define N 100
char a[N],b[N],str[N];
//璁$畻涓や釜搴忓垪鏈闀垮叕鍏卞瓙搴忓垪鐨勯暱搴?br>int Get_LongSubStr_Len(char *a,char *b,int c[][N])
{
 int m=strlen(a),n=strlen(b),//涓や釜搴忓垪鐨勯暱搴?br>  i,j;//寰幆鍙橀噺
 for(i=0;i<=m;i++) c[i][0] = 0;
 for(i=1;i<=n;i++) c[0][i] = 0;
 for(i=1;i<=m;i++)
  for(j=1;j<=n;j++)
   if(a[i-1]==b[j-1])
    c[i][j] = c[i-1][j-1]+1;
   else
    c[i][j] = MAX(c[i-1][j],c[i][j-1]);
   /*
    if(c[i-1][j]>=c[i][j-1])
     c[i][j] = c[i-1][j];
    else
     c[i][j] = c[i][j-1];
     */
 return(c[m][n]);
}
//鏋勯犳渶闀垮叕鍏卞瓙搴忓垪
char *Build_LongSubStr(char s[],char *a,char *b)
{
 int i=strlen(a),j=strlen(b),
  k,c[N][N];
 k = Get_LongSubStr_Len(a,b,c);
 s[k] = '\0';
 while(k>0)
 {
  if(c[i][j]==c[i-1][j])
   i--;
  else
  {
   if(c[i][j]==c[i][j-1])
    j--;
   else
   {
    s[--k]=a[i-1];
    i--;
    j--;
   }
  }
 }
 return(s);
}
//--------------------鏈闀垮瓙涓查棶棰?-------------------
int main(int argc, char* argv[])
{
 int i,f,v,p[F][V],way[F];
 //-----------------------------------
 /*
 Initialize(&f,&v,p);
 printf("鏈澶уソ鐪嬬▼搴︿負%d\n",Sove(p,f,v,way));
 printf("鎻掓湁椴滆姳鐨勮姳鐡舵槸:\n");
 for(i=1;i<=f;i++)
  printf("%4d",way[i]);
 */
 //-----------------------------------
 printf("杈撳叆涓や釜瀛楃涓?闀垮害<%d):\n",N);
 scanf("%s%s",a,b);
 printf("涓や釜涓茬殑鏈闀垮叕鍏卞瓙搴忓垪鏄?%s\n",Build_LongSubStr(str,a,b));
 //-----------------------------------
 printf("\n\n搴旂敤紼嬪簭姝e湪榪愯......\n");
 return 0;
}


colys 2007-10-08 13:40 鍙戣〃璇勮
]]>
[杞琞ini鏂囦歡綰疌++璇誨啓浠g爜http://m.shnenglu.com/colys/articles/28387.htmlcolyscolysThu, 19 Jul 2007 14:21:00 GMThttp://m.shnenglu.com/colys/articles/28387.htmlhttp://m.shnenglu.com/colys/comments/28387.htmlhttp://m.shnenglu.com/colys/articles/28387.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/28387.htmlhttp://m.shnenglu.com/colys/services/trackbacks/28387.html闃呰鍏ㄦ枃

colys 2007-07-19 22:21 鍙戣〃璇勮
]]>
鎴愬憳鍑芥暟鎸囬拡涓庨珮鎬ц兘鐨凜++濮旀墭(涓?http://m.shnenglu.com/colys/articles/25793.htmlcolyscolysThu, 07 Jun 2007 16:18:00 GMThttp://m.shnenglu.com/colys/articles/25793.htmlhttp://m.shnenglu.com/colys/comments/25793.htmlhttp://m.shnenglu.com/colys/articles/25793.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/25793.htmlhttp://m.shnenglu.com/colys/services/trackbacks/25793.html銆銆
銆銆鍜屾垚鍛樺嚱鏁版寚閽堜笉鍚岋紝浣犱笉闅懼彂鐜板鎵樼殑鐢ㄥ銆傛渶閲嶈鐨勶紝浣跨敤濮旀墭鍙互寰堝鏄撳湴瀹炵幇涓涓?Subject/Observer璁捐妯″紡鐨勬敼榪涚増[GoF, p. 293]銆侽bserver錛堣瀵熻咃級妯″紡鏄劇劧鍦℅UI涓湁寰堝鐨勫簲鐢紝浣嗘垜鍙戠幇瀹冨搴旂敤紼嬪簭鏍稿績鐨勮璁′篃鏈夊緢澶х殑浣滅敤銆傚鎵樹篃鍙敤鏉ュ疄鐜扮瓥鐣ワ紙Strategy錛塠GoF, p. 315]鍜岀姸鎬侊紙State錛塠GoF, p. 305]妯″紡銆?br>銆銆
銆銆鐜板湪錛屾垜鏉ヨ鏄庝竴涓簨瀹烇紝濮旀墭鍜屾垚鍛樺嚱鏁版寚閽堢浉姣斿茍涓嶄粎浠呮槸濂界敤錛岃屼笖姣旀垚鍛樺嚱鏁版寚閽堢畝鍗曞緱澶氾紒鏃㈢劧鎵鏈夌殑.NET璇█閮藉疄鐜頒簡濮旀墭錛屼綘鍙兘浼氱寽鎯沖姝ら珮灞傜殑姒傚康鍦ㄦ眹緙栦唬鐮佷腑騫朵笉濂藉疄鐜般備絾浜嬪疄騫朵笉鏄繖鏍鳳細濮旀墭鐨勫疄鐜扮‘瀹炴槸涓涓簳灞傜殑姒傚康錛岃屼笖灝卞儚鏅氱殑鍑芥暟璋冪敤涓鏍風畝鍗曪紙騫朵笖寰堥珮鏁堬級銆備竴涓狢++濮旀墭鍙渶瑕佸寘鍚竴涓猼his 鎸囬拡鍜屼竴涓畝鍗曠殑鍑芥暟鎸囬拡灝卞浜嗐傚綋浣犲緩绔嬩竴涓鎵樻椂錛屼綘鎻愪緵榪欎釜濮旀墭涓涓猼his鎸囬拡錛屽茍鍚戝畠鎸囨槑闇瑕佽皟鐢ㄥ摢涓涓嚱鏁般傜紪璇戝櫒鍙互鍦ㄥ緩绔嬪鎵樻椂璁$畻鍑鴻皟鏁磘his鎸囬拡闇瑕佺殑鍋忕Щ閲忋傝繖鏍峰湪浣跨敤濮旀墭鐨勬椂鍊欙紝緙栬瘧鍣ㄥ氨浠涔堜簨鎯呴兘涓嶇敤鍋氫簡銆傝繖涓鐐規洿濂界殑鏄紝緙栬瘧鍣ㄥ彲浠ュ湪緙栬瘧鏃跺氨鍙互瀹屾垚鍏ㄩ儴榪欎簺宸ヤ綔錛岃繖鏍風殑璇濓紝濮旀墭鐨勫鐞嗗緙栬瘧鍣ㄦ潵璇村彲浠ヨ鏄井涓嶈凍閬撶殑宸ヤ綔浜嗐傚湪x86緋葷粺涓嬪皢濮旀墭澶勭悊鎴愮殑姹囩紪浠g爜灝卞簲璇ユ槸榪欎箞綆鍗曪細
銆銆
銆銆mov ecx, [this]
銆銆
銆銆call [pfunc]
銆銆
銆銆浣嗘槸錛屽湪鏍囧噯C++涓嵈涓嶈兘鐢熸垚濡傛楂樻晥鐨勪唬鐮併?Borland涓轟簡瑙e喅濮旀墭鐨勯棶棰樺湪瀹冪殑C++緙栬瘧鍣ㄤ腑鍔犲叆浜嗕竴涓柊鐨勫叧閿瓧錛坃_closure錛?鐢ㄦ潵閫氳繃綆媧佺殑璇硶鐢熸垚浼樺寲鐨勪唬鐮併侴NU緙栬瘧鍣ㄤ篃瀵硅璦榪涜浜嗘墿灞曪紝浣嗗拰Borland鐨勭紪璇戝櫒涓嶅吋瀹廣傚鏋滀綘浣跨敤浜嗚繖涓ょ璇█鎵╁睍涓殑涓縐嶏紝浣犲氨浼氶檺鍒惰嚜宸卞彧浣跨敤涓涓巶瀹剁殑緙栬瘧鍣ㄣ傝屽鏋滀綘浠嶇劧閬靛驚鏍囧噯C++鐨勮鍒欙紝浣犱粛鐒跺彲浠ュ疄鐜板鎵橈紝浣嗗疄鐜扮殑濮旀墭灝變笉浼氭槸閭d箞楂樻晥浜嗐?br>銆銆
銆銆鏈夎叮鐨勬槸錛屽湪C#鍜屽叾浠?NET璇█涓紝鎵ц涓涓鎵樼殑鏃墮棿瑕佹瘮涓涓嚱鏁拌皟鐢ㄦ參8鍊嶏紙鍙傝http://msdn.microsoft.com/library/en- us/dndotnet/html/fastmanagedcode.asp錛夈傛垜鐚滄祴榪欏彲鑳芥槸鍨冨溇鏀墮泦鍜?NET瀹夊叏媯鏌ョ殑闇瑕併傛渶榪戯紝寰蔣灝?#8220;緇熶竴浜嬩歡妯″瀷錛坲nified event model錛?#8221;鍔犲叆鍒癡isual C++涓紝闅忕潃榪欎釜妯″瀷鐨勫姞鍏ワ紝澧炲姞浜哶_event銆?__raise銆乢_hook銆乢_unhook銆乪vent_source鍜宔vent_receiver絳変竴浜涘叧閿瓧銆傚潶鐧藉湴璇達紝鎴戝鍔犲叆鐨勮繖浜涚壒鎬у緢鍙嶆劅錛屽洜涓鴻繖鏄畬鍏ㄤ笉絎﹀悎鏍囧噯鐨勶紝榪欎簺璇硶鏄笐闄嬬殑錛屽洜涓哄畠浠嬌榪欑C++涓嶅儚C++錛屽茍涓斾細鐢熸垚涓鍫嗘墽琛屾晥鐜囨瀬浣庣殑浠g爜銆?br>銆銆
銆銆瑙e喅榪欎釜闂鐨勬帹鍔ㄥ姏錛氬楂樻晥濮旀墭錛坒ast delegate錛夌殑榪垏闇姹?br>銆銆
銆銆浣跨敤鏍囧噯C++瀹炵幇濮旀墭鏈変竴涓繃搴﹁噧鑲跨殑鐥囩姸銆傚ぇ澶氭暟鐨勫疄鐜版柟娉曚嬌鐢ㄧ殑鏄悓涓縐嶆濊礬銆傝繖浜涙柟娉曠殑鍩烘湰瑙傜偣鏄皢鎴愬憳鍑芥暟鎸囬拡鐪嬫垚濮旀墭錕斤拷浣嗚繖鏍風殑鎸囬拡鍙兘琚竴涓崟鐙殑綾諱嬌鐢ㄣ備負浜嗛伩鍏嶈繖縐嶅眬闄愶紝浣犻渶瑕侀棿鎺ュ湴浣跨敤鍙︿竴縐嶆濊礬錛氫綘鍙互浣跨敤妯$増涓烘瘡涓涓被寤虹珛涓涓?#8220;鎴愬憳鍑芥暟璋冪敤鍣紙member function invoker錛?#8221;銆傚鎵樺寘鍚簡this鎸囬拡鍜屼竴涓寚鍚戣皟鐢ㄥ櫒錛坕nvoker錛夌殑鎸囬拡錛屽茍涓旈渶瑕佸湪鍫嗕笂涓烘垚鍛樺嚱鏁拌皟鐢ㄥ櫒鍒嗛厤絀洪棿銆?br>銆銆
銆銆瀵逛簬榪欑鏂規宸茬粡鏈夊緢澶氱瀹炵幇錛屽寘鎷湪CodeProject涓婄殑瀹炵幇鏂規銆傚悇縐嶅疄鐜板湪澶嶆潅鎬т笂銆佽娉曪紙姣斿錛屾湁鐨勫拰C#鐨勮娉曞緢鎺ヨ繎錛変笂銆佷竴鑸т笂鏈夋墍涓嶅悓銆傛渶鍏鋒潈濞佺殑涓涓疄鐜版槸boost::function銆傛渶榪戯紝瀹冨凡緇忚閲囩敤浣滀負涓嬩竴涓彂甯冪殑C++鏍囧噯鐗堟湰涓殑涓閮ㄥ垎[Sutter1]銆傚笇鏈涘畠鑳藉琚箍娉涘湴浣跨敤銆?br>銆銆
銆銆灝卞儚浼犵粺鐨勫鎵樺疄鐜版柟娉曚竴鏍鳳紝鎴戝悓鏍峰彂瑙夎繖縐嶆柟娉曞茍涓嶅崄鍒嗗彟浜烘弧鎰忋傝櫧鐒跺畠鎻愪緵浜嗗ぇ瀹舵墍鏈熸湜鐨勫姛鑳斤紝浣嗘槸浼氭販娣嗕竴涓綔鍦ㄧ殑闂錛氫漢浠己涔忓涓涓璦鐨勫簳灞傜殑鏋勯犮?“鎴愬憳鍑芥暟璋冪敤鍣?#8221;鐨勪唬鐮佸鍑犱箮鎵鏈夌殑綾婚兘鏄竴鏍風殑錛屽湪鎵鏈夊鉤鍙頒笂閮藉嚭鐜拌繖縐嶆儏鍐墊槸浠や漢娌撫鐨勩傛瘯绔燂紝鍫嗚鐢ㄤ笂浜嗐備絾鍦ㄤ竴浜涘簲鐢ㄥ満鍚堜笅錛岃繖縐嶆柊鐨勬柟娉曚粛鐒舵棤娉曡鎺ュ彈銆?br>銆銆
銆銆鎴戝仛鐨勪竴涓」鐩槸紱繪暎浜嬩歡妯℃嫙鍣紝瀹冪殑鏍稿績鏄竴涓簨浠惰皟搴︾▼搴忥紝鐢ㄦ潵璋冪敤琚ā鎷熺殑瀵硅薄鐨勬垚鍛樺嚱鏁般傚ぇ澶氭暟鎴愬憳鍑芥暟闈炲父綆鍗曪細瀹冧滑鍙敼鍙樺璞$殑鍐呴儴鐘舵侊紝鏈夋椂鍦ㄤ簨浠墮槦鍒楋紙event queue錛変腑娣誨姞灝嗘潵瑕佸彂鐢熺殑浜嬩歡錛屽湪榪欑鎯呭喌涓嬫渶閫傚悎浣跨敤濮旀墭銆備絾鏄紝姣忎竴涓鎵樺彧琚皟鐢紙invoked錛変竴嬈°備竴寮濮嬶紝鎴戜嬌鐢ㄤ簡boost:: function錛屼絾鎴戝彂鐜扮▼搴忚繍琛屾椂錛岀粰濮旀墭鎵鍒嗛厤鐨勫唴瀛樼┖闂村崰鐢ㄤ簡鏁翠釜紼嬪簭絀洪棿鐨勪笁鍒嗕箣涓榪樿澶氾紒“鎴戣鐪熸鐨勫鎵橈紒”鎴戝湪鍐呭績鍛煎枈鐫錛?#8220;鐪熸鐨勫鎵樺彧闇瑕佷粎浠呬袱琛屾眹緙栨寚浠ゅ晩錛?#8221;
銆銆
銆銆鎴戝茍涓嶈兘鎬繪槸鑳藉寰楀埌鎴戞兂瑕佺殑錛屼絾鍚庢潵鎴戝緢騫歌繍銆傛垜鍦ㄨ繖鍎垮睍紺虹殑浠g爜錛堜唬鐮佷笅杞介摼鎺ヨ璇戣呮敞錛夊嚑涔庡湪鎵鏈夌紪璇戠幆澧冧腑閮戒駭鐢熶簡浼樺寲鐨勬眹緙栦唬鐮併傛渶閲嶈鐨勬槸錛岃皟鐢ㄤ竴涓惈鏈夊崟涓洰鏍囩殑濮旀墭錛坰ingle-target delegate錛夌殑閫熷害鍑犱箮鍚岃皟鐢ㄤ竴涓櫘閫氬嚱鏁頒竴鏍峰揩銆傚疄鐜拌繖鏍風殑浠g爜騫舵病鏈夌敤鍒頒粈涔堥珮娣辯殑涓滆タ錛屽敮涓鐨勯仐鎲懼氨鏄紝涓轟簡瀹炵幇鐩爣錛屾垜鐨勪唬鐮佸拰鏍囧噯C++ 鐨勮鍒欐湁浜涘亸紱匯傛垜浣跨敤浜嗕竴浜涙湁鍏蟲垚鍛樺嚱鏁版寚閽堢殑鏈叕寮鐭ヨ瘑鎵嶄嬌瀹冭兘澶熻繖鏍峰伐浣溿傚鏋滀綘寰堢粏蹇冿紝鑰屼笖涓嶅湪鎰忓湪灝戞暟鎯呭喌涓嬬殑涓浜涚紪璇戝櫒鐩稿叧錛坈ompiler-specific錛夌殑浠g爜錛岄偅涔堥珮鎬ц兘鐨勫鎵樻満鍒跺湪浠諱綍C++緙栬瘧鍣ㄤ笅閮芥槸鍙鐨勩?br>銆銆
銆銆璇紿嶏細灝嗕換浣曠被鍨嬬殑鎴愬憳鍑芥暟鎸囬拡杞寲涓轟竴涓爣鍑嗙殑褰㈠紡
銆銆
銆銆鎴戠殑浠g爜鐨勬牳蹇冩槸涓涓兘澶熷皢浠諱綍綾葷殑鎸囬拡鍜屼換浣曟垚鍛樺嚱鏁版寚閽堝垎鍒漿鎹負涓涓氱敤綾葷殑鎸囬拡鍜屼竴涓氱敤鎴愬憳鍑芥暟鐨勬寚閽堢殑綾匯傜敱浜嶤++娌℃湁“閫氱敤鎴愬憳鍑芥暟錛坓eneic member function錛?#8221;鐨勭被鍨嬶紝鎵浠ユ垜鎶婃墍鏈夌被鍨嬬殑鎴愬憳鍑芥暟閮借漿鍖栦負涓涓湪浠g爜涓湭瀹氫箟鐨凜GenericClass綾葷殑鎴愬憳鍑芥暟銆?br>銆銆
銆銆澶у鏁扮紪璇戝櫒瀵規墍鏈夌殑鎴愬憳鍑芥暟鎸囬拡騫崇瓑鍦板寰咃紝涓嶇浠栦滑灞炰簬鍝釜綾匯傛墍浠ュ榪欎簺緙栬瘧鍣ㄦ潵璇達紝鍙互浣跨敤reinterpret_cast灝嗕竴涓壒瀹氱殑鎴愬憳鍑芥暟鎸囬拡杞寲涓轟竴涓氱敤鎴愬憳鍑芥暟鎸囬拡銆備簨瀹炰笂錛屽亣濡傜紪璇戝櫒涓嶅彲浠ワ紝閭d箞榪欎釜緙栬瘧鍣ㄦ槸涓嶇鍚堟爣鍑嗙殑銆傚浜庝竴浜涙帴榪戞爣鍑嗭紙almost-compliant錛夌殑緙栬瘧鍣紝姣斿Digital Mars錛屾垚鍛樺嚱鏁版寚閽堢殑reinterpret_cast杞崲涓鑸細娑夊強鍒頒竴浜涢澶栫殑鐗規畩浠g爜錛屽綋榪涜杞寲鐨勬垚鍛樺嚱鏁扮殑綾諱箣闂存病鏈変換浣曞叧鑱旀椂錛岀紪璇戝櫒浼氬嚭閿欍傚榪欎簺緙栬瘧鍣紝鎴戜滑浣跨敤涓涓悕涓篽orrible_cast鐨勫唴鑱斿嚱鏁幫紙鍦ㄥ嚱鏁頒腑浣跨敤浜嗕竴涓猽nion鏉ラ伩鍏岰++鐨勭被鍨嬫鏌ワ級銆備嬌鐢ㄨ繖縐嶆柟娉曠湅鏉ユ槸涓嶅彲閬垮厤鐨勶拷錕絙oost::function涔熺敤鍒頒簡榪欑鏂規硶銆?br>銆銆
銆銆瀵逛簬鍏朵粬鐨勪竴浜涚紪璇戝櫒錛堝Visual C++, Intel C++鍜孊orland C++錛夛紝鎴戜滑蹇呴』灝嗗閲嶏紙multiple-錛夌戶鎵垮拰铏氭嫙錛坴irtual-錛夌戶鎵跨被鐨勬垚鍛樺嚱鏁版寚閽堣漿鍖栦負鍗曚竴錛坰ingle-錛夌戶鎵跨被鐨勫嚱鏁版寚閽堛備負浜嗗疄鐜拌繖涓洰鐨勶紝鎴戝閥濡欏湴浣跨敤浜嗘ā鏉垮茍鍒╃敤浜嗕竴涓濡欑殑鎴忔硶銆傛敞鎰忥紝榪欎釜鎴忔硶鐨勪嬌鐢ㄦ槸鍥犱負榪欎簺緙栬瘧鍣ㄥ茍涓嶆槸瀹屽叏絎﹀悎鏍囧噯鐨勶紝浣嗘槸浣跨敤榪欎釜鎴忔硶寰楀埌浜嗗洖鎶ワ細瀹冧嬌榪欎簺緙栬瘧鍣ㄤ駭鐢熶簡浼樺寲鐨勪唬鐮併?br>銆銆
銆銆鏃㈢劧鎴戜滑鐭ラ亾緙栬瘧鍣ㄦ槸鎬庢牱鍦ㄥ唴閮ㄥ瓨鍌ㄦ垚鍛樺嚱鏁版寚閽堢殑錛屽茍涓旀垜浠煡閬撳湪闂涓簲璇ユ庢牱涓烘垚鍛樺嚱鏁版寚閽堣皟鏁磘his鎸囬拡錛屾垜浠殑浠g爜鍦ㄨ緗鎵樻椂鍙互鑷繁璋冩暣this鎸囬拡銆傚鍗曚竴緇ф壙綾葷殑鍑芥暟鎸囬拡錛屽垯涓嶉渶瑕佽繘琛岃皟鏁達紱瀵瑰閲嶇戶鎵匡紝鍒欏彧闇瑕佷竴嬈″姞娉曞氨鍙畬鎴愯皟鏁達紱瀵硅櫄鎷熺戶鎵?..灝辨湁浜涢夯鐑︿簡銆備絾鏄繖鏍峰仛鏄鐢ㄧ殑錛屽茍涓斿湪澶у鏁版儏鍐典笅錛屾墍鏈夌殑宸ヤ綔閮藉湪緙栬瘧鏃跺畬鎴愶紒
銆銆
銆銆榪欐槸鏈鍚庝竴涓瘈紿嶃傛垜浠庢牱鍖哄垎涓嶅悓鐨勭戶鎵跨被鍨嬶紵騫舵病鏈夊畼鏂圭殑鏂規硶鏉ヨ鎴戜滑鍖哄垎涓涓被鏄閲嶇戶鎵跨殑榪樻槸鍏朵粬綾誨瀷鐨勭戶鎵褲備絾鏄湁涓縐嶅閥濡欑殑鏂規硶錛屼綘鍙互鏌ョ湅鎴戝湪鍓嶉潰緇欏嚭浜嗕竴涓垪琛紙瑙佷腑綃囷級鈥斺斿MSVC錛屾瘡縐嶇戶鎵挎柟寮忎駭鐢熺殑鎴愬憳鍑芥暟鎸囬拡鐨勫ぇ灝忔槸涓嶅悓鐨勩傛墍浠ワ紝鎴戜滑鍙互鍩轟簬鎴愬憳鍑芥暟鎸囬拡鐨勫ぇ灝忎嬌鐢ㄦā鐗堬紒姣斿瀵瑰閲嶇戶鎵跨被鍨嬫潵璇達紝榪欏彧鏄釜綆鍗曠殑璁$畻銆傝屽湪紜畾unknown_inheritance錛?6瀛楄妭錛夌被鍨嬬殑鏃跺欙紝涔熶細閲囩敤綾諱技鐨勮綆楁柟娉曘?br>銆銆
銆銆瀵逛簬寰蔣鍜岃嫳鐗瑰皵鐨勭紪璇戝櫒涓噰鐢ㄤ笉鏍囧噯12瀛楄妭鐨勮櫄鎷熺戶鎵跨被鍨嬬殑鎸囬拡鐨勬儏鍐碉紝鎴戝紩鍙戜簡涓涓紪璇戞椂閿欒錛坈ompile-time error錛夛紝鍥犱負闇瑕佷竴涓壒瀹氱殑榪愯鐜錛坵orkaround錛夈傚鏋滀綘鍦∕SVC涓嬌鐢ㄨ櫄鎷熺戶鎵匡紝瑕佸湪澹版槑綾諱箣鍓嶄嬌鐢?FASTDELEGATEDECLARE瀹忋傝岃繖涓被蹇呴』浣跨敤unknown_inheritance錛堟湭鐭ョ戶鎵跨被鍨嬶級鎸囬拡錛堣繖鐩稿綋浜庝竴涓亣瀹氱殑 __unknown_inheritance鍏抽敭瀛楋級銆備緥濡傦細
銆銆
FASTDELEGATEDECLARE(CDerivedClass)
銆銆
銆銆
class CDerivedClass : virtual public CBaseClass1, virtual public CBaseClass2 {
銆銆
銆銆
// : (etc)
銆銆
銆銆};

銆銆
銆銆榪欎釜瀹忓拰涓浜涘父鏁扮殑澹版槑鏄湪涓涓殣钘忕殑鍛藉悕絀洪棿涓疄鐜扮殑錛岃繖鏍峰湪鍏朵粬緙栬瘧鍣ㄤ腑浣跨敤鏃朵篃鏄畨鍏ㄧ殑銆侻SVC錛?.0鎴栨洿鏂扮増鏈級鐨勫彟涓縐嶆柟娉曟槸鍦ㄥ伐紼嬩腑浣跨敤/vmg緙栬瘧鍣ㄩ夐」銆傝孖nter鐨勭紪璇戝櫒瀵?vmg緙栬瘧鍣ㄩ夐」涓嶈搗浣滅敤錛屾墍浠ヤ綘蹇呴』鍦ㄨ櫄鎷熺戶鎵跨被涓嬌鐢ㄥ畯銆傛垜鐨勮繖涓唬鐮佹槸鍥犱負緙栬瘧鍣ㄧ殑bug鎵嶅彲浠ユ紜繍琛岋紝浣犲彲浠ユ煡鐪嬩唬鐮佹潵浜嗚В鏇村緇嗚妭銆傝屽湪閬典粠鏍囧噯鐨勭紪璇戝櫒涓笉闇瑕佹敞鎰忚繖涔堝錛屽喌涓斿湪浠諱綍鎯呭喌涓嬮兘涓嶄細濡ㄧFASTDELEGATEDECLARE瀹忕殑浣跨敤銆?br>銆銆
銆銆涓鏃︿綘灝嗙被鐨勫璞℃寚閽堝拰鎴愬憳鍑芥暟鎸囬拡杞寲涓烘爣鍑嗗艦寮忥紝瀹炵幇鍗曚竴鐩爣鐨勫鎵橈紙single-target delegate錛夊氨姣旇緝瀹規槗浜嗭紙铏界劧鍋氳搗鏉ユ劅瑙夊啑闀夸箯鍛籌級銆備綘鍙涓烘瘡涓縐嶅叿鏈変笉鍚屽弬鏁扮殑鍑芥暟鍒朵綔鐩稿簲鐨勬ā鏉跨被灝辮浜嗐傚疄鐜板叾浠栫被鍨嬬殑濮旀墭鐨勪唬鐮佷篃澶ч兘涓庢鐩鎬技錛屽彧鏄鍙傛暟紼嶅仛淇敼緗簡銆?br>銆銆
銆銆榪欑鐢ㄩ潪鏍囧噯鏂瑰紡杞崲瀹炵幇鐨勫鎵樿繕鏈変竴涓ソ澶勶紝灝辨槸濮旀墭瀵硅薄涔嬮棿鍙互鐢ㄧ瓑寮忔瘮杈冦傜洰鍓嶅疄鐜扮殑澶у鏁板鎵樻棤娉曞仛鍒拌繖涓鐐癸紝榪欎嬌榪欎簺濮旀墭涓嶈兘鑳滀換涓浜涚壒瀹氱殑浠誨姟錛屾瘮濡傚疄鐜板鎾鎵橈紙multi-cast delegates錛?[Sutter3]銆?br>銆銆
銆銆闈欐佸嚱鏁頒綔涓哄鎵樼洰鏍囷紙delegate target錛?br>銆銆
銆銆鐞嗚涓婏紝涓涓畝鍗曠殑闈炴垚鍛樺嚱鏁幫紙non-member function錛夛紝鎴栬呬竴涓潤鎬佹垚鍛樺嚱鏁幫紙static member function錛夊彲浠ヨ浣滀負濮旀墭鐩爣錛坉elegate target錛夈傝繖鍙互閫氳繃灝嗛潤鎬佸嚱鏁拌漿鎹負涓涓垚鍛樺嚱鏁版潵瀹炵幇銆傛垜鏈変袱縐嶆柟娉曞疄鐜拌繖涓鐐癸紝涓ょ鏂規硶閮芥槸閫氳繃浣垮鎵樻寚鍚戣皟鐢ㄨ繖涓潤鎬佸嚱鏁扮殑“璋冪敤鍣紙invoker錛?#8221;鐨勬垚鍛樺嚱鏁扮殑鏂規硶鏉ュ疄鐜扮殑銆?br>

colys 2007-06-08 00:18 鍙戣〃璇勮
]]>
鎴愬憳鍑芥暟鎸囬拡涓庨珮鎬ц兘鐨凜++濮旀墭(涓?http://m.shnenglu.com/colys/articles/25790.htmlcolyscolysThu, 07 Jun 2007 16:17:00 GMThttp://m.shnenglu.com/colys/articles/25790.htmlhttp://m.shnenglu.com/colys/comments/25790.htmlhttp://m.shnenglu.com/colys/articles/25790.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/25790.htmlhttp://m.shnenglu.com/colys/services/trackbacks/25790.html
寮曞瓙

鏍囧噯C++涓病鏈夌湡姝g殑闈㈠悜瀵硅薄鐨勫嚱鏁版寚閽堛傝繖涓鐐瑰C++鏉ヨ鏄笉騫哥殑錛屽洜涓洪潰鍚戝璞$殑鎸囬拡錛堜篃鍙仛“闂寘錛坈losure錛?#8221;鎴?#8220;濮旀墭錛坉elegate錛?#8221;錛夊湪涓浜涜璦涓凡緇忚瘉鏄庝簡瀹冨疂璐電殑浠峰箋傚湪Delphi (Object Pascal)涓紝闈㈠悜瀵硅薄鐨勫嚱鏁版寚閽堟槸Borland鍙鍖栫粍寤哄簱錛圴CL錛孷isual Component Library錛夌殑鍩虹銆傝屽湪鐩墠錛孋#浣?#8220;濮旀墭”鐨勬蹇墊棩瓚嬫祦琛岋紝榪欎篃姝f樉紺哄嚭C#榪欑璇█鐨勬垚鍔熴傚湪寰堝搴旂敤紼嬪簭涓紝“濮旀墭”綆鍖栦簡鏉捐﹀悎瀵硅薄鐨勮璁℃ā寮廩GoF]銆傝繖縐嶇壒鎬ф棤鐤戝湪鏍囧噯C++涓篃浼氫駭鐢熷緢澶х殑浣滅敤銆?br>
寰堥仐鎲撅紝C++涓病鏈?#8220;濮旀墭”錛屽畠鍙彁渚涗簡鎴愬憳鍑芥暟鎸囬拡錛坢ember function pointers錛夈傚緢澶氱▼搴忓憳浠庢病鏈夌敤榪囧嚱鏁版寚閽堬紝榪欐槸鏈夌壒瀹氱殑鍘熷洜鐨勩傚洜涓哄嚱鏁版寚閽堣嚜韜湁寰堝濂囨殑璇硶瑙勫垯錛堟瘮濡?#8220;->*”鍜?#8220;.*”鎿嶄綔絎︼級錛岃屼笖寰堥毦鎵懼埌瀹冧滑鐨勫噯紜惈涔夛紝騫朵笖浣犱細鎵懼埌鏇村ソ鐨勫姙娉曚互閬垮厤浣跨敤鍑芥暟鎸囬拡銆傛洿鍏鋒湁璁藉埡鎰忓懗鐨勬槸錛氫簨瀹炰笂錛岀紪璇戝櫒鐨勭紪鍐欒呭鏋滃疄鐜?#8220;濮旀墭”鐨勮瘽浼氭瘮浠栬垂鍔插湴瀹炵幇鎴愬憳鍑芥暟鎸囬拡瑕佸鏄撳湴澶氾紒

鍦ㄨ繖綃囨枃绔犱腑錛屾垜瑕佹彮寮鎴愬憳鍑芥暟鎸囬拡閭?#8220;紲炵鐨勭洊瀛?#8221;銆傚湪鎵艱鍦伴噸榪版垚鍛樺嚱鏁版寚閽堢殑璇硶鍜岀壒鎬т箣鍚庯紝鎴戜細鍚戣鑰呰В閲婃垚鍛樺嚱鏁版寚閽堝湪涓浜涘父鐢ㄧ殑緙栬瘧鍣ㄤ腑鏄庢牱瀹炵幇鐨勶紝鐒跺悗鎴戜細鍚戝ぇ瀹跺睍紺虹紪璇戝櫒鎬庢牱鏈夋晥鍦板疄鐜?#8220;濮旀墭”銆傛渶鍚庢垜浼氬埄鐢ㄨ繖浜涚簿娣辯殑鐭ヨ瘑鍚戜綘灞曠ず鍦–++緙栬瘧鍣ㄤ笂瀹炵幇浼樺寲鑰屽彲闈犵殑“濮旀墭”鐨勬妧鏈傛瘮濡傦紝鍦╒isual C++(6.0, .NET, and .NET 2003)涓鍗曚竴鐩爣濮旀墭錛坰ingle-target delegate錛夌殑璋冪敤錛岀紪璇戝櫒浠呬粎鐢熸垚涓よ姹囩紪浠g爜錛?br>
鍑芥暟鎸囬拡

涓嬮潰鎴戜滑澶嶄範涓涓嬪嚱鏁版寚閽堛傚湪C鍜孋++璇█涓紝涓涓懡鍚嶄負my_func_ptr鐨勫嚱鏁版寚閽堟寚鍚戜竴涓互涓涓猧nt鍜屼竴涓猚har*涓哄弬鏁扮殑鍑芥暟錛岃繖涓嚱鏁拌繑鍥炰竴涓誕鐐瑰鹼紝澹版槑濡備笅錛?br>
float (*my_func_ptr)(intchar *);


//涓轟簡渚夸簬鐞嗚В錛屾垜寮虹儓鎺ㄨ崘浣犱嬌鐢╰ypedef鍏抽敭瀛椼?br>
//濡傛灉涓嶈繖鏍風殑璇濓紝褰撳嚱鏁版寚閽堜綔涓轟竴涓嚱鏁扮殑鍙傛暟浼犻掔殑鏃跺欙紝

// 紼嬪簭浼氬彉寰楁櫐娑╅毦鎳傘?br>
// 榪欐牱鐨勮瘽錛屽0鏄庡簲濡備笅鎵紺猴細

typedef float (*MyFuncPtrType)(intchar *);

MyFuncPtrType my_func_ptr;


搴旀敞鎰忥紝瀵規瘡涓涓嚱鏁扮殑鍙傛暟緇勫悎錛屽嚱鏁版寚閽堢殑綾誨瀷搴旇鏄笉鍚岀殑銆傚湪Microsoft Visual C++錛堜互涓嬬ОMSVC錛変腑錛屽涓夌涓嶅悓鐨勮皟鐢ㄦ柟寮忔湁涓嶅悓鐨勭被鍨嬶細__cdecl, __stdcall, 鍜宊_fastcall銆傚鏋滀綘鐨勫嚱鏁版寚閽堟寚鍚戜竴涓瀷濡俧loat some_func(int, char *)鐨勫嚱鏁幫紝榪欐牱鍋氬氨鍙互浜嗭細
my_func_ptr = some_func;

//褰撲綘鎯寵皟鐢ㄥ畠鎵鎸囧悜鐨勫嚱鏁版椂錛屼綘鍙互榪欐牱鍐欙細

(
*my_func_ptr)(7"Arbitrary String");


浣犲彲浠ュ皢涓縐嶇被鍨嬬殑鍑芥暟鎸囬拡杞崲鎴愬彟涓縐嶅嚱鏁版寚閽堢被鍨嬶紝浣嗕綘涓嶅彲浠ュ皢涓涓嚱鏁版寚閽堟寚鍚戜竴涓獀oid *鍨嬬殑鏁版嵁鎸囬拡銆傚叾浠栫殑杞崲鎿嶄綔灝變笉鐢ㄨ鍙欎簡銆備竴涓嚱鏁版寚閽堝彲浠ヨ璁劇疆涓?鏉ヨ〃鏄庡畠鏄竴涓┖鎸囬拡銆傛墍鏈夌殑姣旇緝榪愮畻絎︼紙==, !=, <, >, <=, >=錛夐兘鍙互浣跨敤錛屽彲浠ヤ嬌鐢?#8220;==0”鎴栭氳繃涓涓樉寮忕殑甯冨皵杞崲鏉ユ祴璇曟寚閽堟槸鍚︿負絀猴紙null錛夈?br>
鍦–璇█涓紝鍑芥暟鎸囬拡閫氬父鐢ㄦ潵鍍弎sort涓鏍峰皢鍑芥暟浣滀負鍙傛暟錛屾垨鑰呬綔涓篧indows緋葷粺鍑芥暟鐨勫洖璋冨嚱鏁扮瓑絳夈傚嚱鏁版寚閽堣繕鏈夊緢澶氬叾浠栫殑搴旂敤銆傚嚱鏁版寚閽堢殑瀹炵幇寰堢畝鍗曪細瀹冧滑鍙槸“浠g爜鎸囬拡錛坈ode pointer錛?#8221;錛屽畠浠綋鐜板湪姹囩紪璇█涓槸鐢ㄦ潵淇濆瓨瀛愮▼搴忎唬鐮佺殑棣栧湴鍧銆傝岃繖縐嶅嚱鏁版寚閽堢殑瀛樺湪鍙槸涓轟簡淇濊瘉浣跨敤浜嗘紜殑璋冪敤瑙勮寖銆?br>
鎴愬憳鍑芥暟鎸囬拡

鍦–++紼嬪簭涓紝寰堝鍑芥暟鏄垚鍛樺嚱鏁幫紝鍗寵繖浜涘嚱鏁版槸鏌愪釜綾諱腑鐨勪竴閮ㄥ垎銆備綘涓嶅彲浠ュ儚涓涓櫘閫氱殑鍑芥暟鎸囬拡閭f牱鎸囧悜涓涓垚鍛樺嚱鏁幫紝姝g‘鐨勫仛娉曞簲璇ユ槸錛屼綘蹇呴』浣跨敤涓涓垚鍛樺嚱鏁版寚閽堛備竴涓垚鍛樺嚱鏁扮殑鎸囬拡鎸囧悜綾諱腑鐨勪竴涓垚鍛樺嚱鏁幫紝騫跺拰浠ュ墠鏈夌浉鍚岀殑鍙傛暟錛屽0鏄庡涓嬶細

float (SomeClass::*my_memfunc_ptr)(intchar *);

//瀵逛簬浣跨敤const鍏抽敭瀛椾慨楗扮殑鎴愬憳鍑芥暟錛屽0鏄庡涓嬶細

float (SomeClass::*my_const_memfunc_ptr)(intchar *const;


娉ㄦ剰浣跨敤浜嗙壒孌婄殑榪愮畻絎︼紙::*錛夛紝鑰?#8220;SomeClass”鏄0鏄庝腑鐨勪竴閮ㄥ垎銆傛垚鍛樺嚱鏁版寚閽堟湁涓涓彲鎬曠殑闄愬埗錛氬畠浠彧鑳芥寚鍚戜竴涓壒瀹氱殑綾諱腑鐨勬垚鍛樺嚱鏁般傚姣忎竴縐嶅弬鏁扮殑緇勫悎錛岄渶瑕佹湁涓嶅悓鐨勬垚鍛樺嚱鏁版寚閽堢被鍨嬶紝鑰屼笖瀵規瘡縐嶄嬌鐢╟onst淇グ鐨勫嚱鏁板拰涓嶅悓綾諱腑鐨勫嚱鏁幫紝涔熻鏈変笉鍚岀殑鍑芥暟鎸囬拡綾誨瀷銆傚湪MSVC涓紝瀵逛笅闈㈣繖鍥涚璋冪敤鏂瑰紡閮芥湁涓縐嶄笉鍚岀殑璋冪敤綾誨瀷錛歘_cdecl, __stdcall, __fastcall, 鍜?__thiscall銆傦紙__thiscall鏄己鐪佺殑鏂瑰紡錛屾湁瓚g殑鏄紝鍦ㄤ換浣曞畼鏂規枃妗d腑浠庢病鏈夊__thiscall鍏抽敭瀛楃殑璇︾粏鎻忚堪錛屼絾鏄畠緇忓父鍦ㄩ敊璇俊鎭腑鍑虹幇銆傚鏋滀綘鏄懼紡鍦頒嬌鐢ㄥ畠錛屼綘浼氱湅鍒?#8220;瀹冭淇濈暀浣滀負浠ュ悗浣跨敤錛坕t is reserved for future use錛?#8221;鐨勯敊璇彁紺恒傦級濡傛灉浣犱嬌鐢ㄤ簡鎴愬憳鍑芥暟鎸囬拡錛屼綘鏈濂戒嬌鐢╰ypedef浠ラ槻姝㈡販娣嗐?br>
灝嗗嚱鏁版寚閽堟寚鍚戝瀷濡俧loat SomeClass::some_member_func(int, char *)鐨勫嚱鏁幫紝浣犲彲浠ヨ繖鏍峰啓錛?br>
my_memfunc_ptr = &SomeClass::some_member_func;


寰堝緙栬瘧鍣紙姣斿MSVC錛変細璁╀綘鍘繪帀“&”錛岃屽叾浠栦竴浜涚紪璇戝櫒錛堟瘮濡侴NU G++錛夊垯闇瑕佹坊鍔?#8220;&”錛屾墍浠ュ湪鎵嬪啓紼嬪簭鐨勬椂鍊欐垜寤鴻鎶婂畠娣諱笂銆傝嫢瑕佽皟鐢ㄦ垚鍛樺嚱鏁版寚閽堬紝浣犻渶瑕佸厛寤虹珛SomeClass鐨勪竴涓疄渚嬶紝騫朵嬌鐢ㄧ壒孌婃搷浣滅“->*”錛岃繖涓搷浣滅鐨勪紭鍏堢駭杈冧綆錛屼綘闇瑕佸皢鍏墮傚綋鍦版斁鍏ュ渾鎷彿鍐呫?br>
SomeClass *= new SomeClass;

(x
->*my_memfunc_ptr)(6"Another Arbitrary Parameter");

//濡傛灉綾誨湪鏍堜笂錛屼綘涔熷彲浠ヤ嬌鐢?#8220;.*”榪愮畻絎︺?/span>

SomeClass y;

(y.
*my_memfunc_ptr)(15"Different parameters this time");


涓嶈鎬垜浣跨敤濡傛濂囨殑璇硶鈥斺旂湅璧鋒潵C++鐨勮璁¤呭鏍囩偣絎﹀彿鏈夌潃鐢辮》鐨勬劅鎯咃紒C++鐩稿浜嶤澧炲姞浜嗕笁縐嶇壒孌婅繍綆楃鏉ユ敮鎸佹垚鍛樻寚閽堛?#8220;::*”鐢ㄤ簬鎸囬拡鐨勫0鏄庯紝鑰?#8220;->*”鍜?#8220;.*”鐢ㄦ潵璋冪敤鎸囬拡鎸囧悜鐨勫嚱鏁般傝繖鏍風湅璧鋒潵瀵逛竴涓璦妯$硦鑰屽張寰堝皯浣跨敤鐨勯儴鍒嗙殑榪囧垎鍏蟲敞鏄浣欑殑銆傦紙浣犲綋鐒跺彲浠ラ噸杞?#8220;->*”榪欎簺榪愮畻絎︼紝浣嗚繖涓嶆槸鏈枃鎵瑕佹秹鍙婄殑鑼冨洿銆傦級

涓涓垚鍛樺嚱鏁版寚閽堝彲浠ヨ璁劇疆鎴?錛屽茍鍙互浣跨敤“==”鍜?#8220;!=”姣旇緝榪愮畻絎︼紝浣嗗彧鑳介檺瀹氬湪鍚屼竴涓被涓殑鎴愬憳鍑芥暟鐨勬寚閽堜箣闂磋繘琛岃繖鏍風殑姣旇緝銆備換浣曟垚鍛樺嚱鏁版寚閽堥兘鍙互鍜?鍋氭瘮杈冧互鍒ゆ柇瀹冩槸鍚︿負絀恒備笌鍑芥暟鎸囬拡涓嶅悓錛屼笉絳夎繍綆楃錛?lt;, >, <=, >=錛夊鎴愬憳鍑芥暟鎸囬拡鏄笉鍙敤鐨勩?br>
鎴愬憳鍑芥暟鎸囬拡鐨勬紓涔嬪

鎴愬憳鍑芥暟鎸囬拡鏈夋椂琛ㄧ幇寰楀緢濂囨傞鍏堬紝浣犱笉鍙互鐢ㄤ竴涓垚鍛樺嚱鏁版寚閽堟寚鍚戜竴涓潤鎬佹垚鍛樺嚱鏁幫紝浣犲繀欏諱嬌鐢ㄦ櫘閫氱殑鍑芥暟鎸囬拡鎵嶈錛堝湪榪欓噷“鎴愬憳鍑芥暟鎸囬拡”浼氫駭鐢熻瑙o紝瀹冨疄闄呬笂搴旇鏄?#8220;闈為潤鎬佹垚鍛樺嚱鏁版寚閽?#8221;鎵嶅錛夈傚叾嬈★紝褰撲嬌鐢ㄧ被鐨勭戶鎵挎椂錛屼細鍑虹幇涓浜涙瘮杈冨鎬殑鎯呭喌銆傛瘮濡傦紝涓嬮潰鐨勪唬鐮佸湪MSVC涓嬩細緙栬瘧鎴愬姛錛堟敞鎰忎唬鐮佹敞閲婏級錛?br>
錛僫 nclude “stdio.h”

class SomeClass {

public:

virtual void some_member_func(int x, char *p) {

printf(
"In SomeClass"); };

};

class DerivedClass : public SomeClass {

public:

// 濡傛灉浣犳妸涓嬩竴琛岀殑娉ㄩ噴閿鎺夛紝甯︽湁 line (*)鐨勯偅涓琛屼細鍑虹幇閿欒

// virtual void some_member_func(int x, char *p) { printf("In DerivedClass"); };

};

int main() {

//澹版槑SomeClass鐨勬垚鍛樺嚱鏁版寚閽?/span>

typedef 
void (SomeClass::*SomeClassMFP)(intchar *);

SomeClassMFP my_memfunc_ptr;

my_memfunc_ptr 
= &DerivedClass::some_member_func; // ---- line (*)

return 0;

}


濂囨殑鏄紝&DerivedClass::some_member_func鏄竴涓猄omeClass綾葷殑鎴愬憳鍑芥暟鎸囬拡錛岃屼笉鏄疍erivedClass綾葷殑鎴愬憳鍑芥暟鎸囬拡錛侊紙涓浜涚紪璇戝櫒紼嶅井鏈変簺涓嶅悓錛氭瘮濡傦紝瀵逛簬Digital Mars C++錛屽湪涓婇潰鐨勪緥瀛愪腑錛?amp;DerivedClass::some_member_func浼氳璁や負娌℃湁瀹氫箟銆傦級浣嗘槸錛屽鏋滃湪DerivedClass綾諱腑閲嶅啓錛坥verride錛変簡some_member_func鍑芥暟錛屼唬鐮佸氨鏃犳硶閫氳繃緙栬瘧錛屽洜涓虹幇鍦ㄧ殑&DerivedClass::some_member_func宸叉垚涓篋erivedClass綾諱腑鐨勬垚鍛樺嚱鏁版寚閽堬紒

鎴愬憳鍑芥暟鎸囬拡涔嬮棿鐨勭被鍨嬭漿鎹㈡槸涓涓璁鴻搗鏉ラ潪甯告ā緋婄殑璇濋銆傚湪C++鐨勬爣鍑嗗寲鐨勮繃紼嬩腑錛屽湪娑夊強緇ф壙鐨勭被鐨勬垚鍛樺嚱鏁版寚閽堟椂錛屽浜庡皢鎴愬憳鍑芥暟鎸囬拡杞寲涓哄熀綾葷殑鎴愬憳鍑芥暟鎸囬拡榪樻槸杞寲涓哄瓙綾繪垚鍛樺嚱鏁版寚閽堢殑闂鍜屾槸鍚﹀彲浠ュ皢涓涓被鐨勬垚鍛樺嚱鏁版寚閽堣漿鍖栦負鍙︿竴涓笉鐩稿叧鐨勭被鐨勬垚鍛樺嚱鏁版寚閽堢殑闂錛屼漢浠浘鏈夎繃寰堟縺鐑堢殑浜夎銆傜劧鑰屼笉騫哥殑鏄紝鍦ㄦ爣鍑嗗鍛樹細鍋氬嚭鍐沖畾涔嬪墠錛屼笉鍚岀殑緙栬瘧鍣ㄧ敓浜у晢宸茬粡鏍規嵁鑷繁瀵硅繖浜涢棶棰樼殑涓嶅悓鐨勫洖絳斿疄鐜頒簡鑷繁鐨勭紪璇戝櫒銆傛牴鎹爣鍑嗭紙絎?.2.10/9鑺傦級錛屼綘鍙互浣跨敤reinterpret_cast鍦ㄤ竴涓垚鍛樺嚱鏁版寚閽堜腑淇濆瓨涓涓笌鏈潵鐨勭被涓嶇浉鍏崇殑綾葷殑鎴愬憳鍑芥暟銆傛湁鍏蟲垚鍛樺嚱鏁版寚閽堣漿鎹㈢殑闂鐨勬渶緇堢粨鏋滀篃娌℃湁紜畾涓嬫潵銆備綘鐜板湪鎵鑳藉仛鐨勮繕鏄儚浠ュ墠閭f牱鈥斺斿皢鎴愬憳鍑芥暟鎸囬拡杞寲涓烘湰綾葷殑鎴愬憳鍑芥暟鐨勬寚閽堛傚湪鏂囩珷鐨勫悗闈㈡垜浼氱戶緇璁鴻繖涓棶棰橈紝鍥犱負榪欐鏄悇涓紪璇戝櫒瀵硅繖鏍蜂竴涓爣鍑嗘病鏈夎揪鎴愬叡璇嗙殑涓涓瘽棰樸?br>
鍦ㄤ竴浜涚紪璇戝櫒涓紝鍦ㄥ熀綾誨拰瀛愮被鐨勬垚鍛樺嚱鏁版寚閽堜箣闂寸殑杞崲鏃跺父鏈夋簨鍙戠敓銆傚綋娑夊強鍒板閲嶇戶鎵挎椂錛屼嬌鐢╮einterpret_cast灝嗗瓙綾昏漿鎹㈡垚鍩虹被鏃訛紝瀵規煇涓鐗瑰畾緙栬瘧鍣ㄦ潵璇存湁鍙兘閫氳繃緙栬瘧錛岃屼篃鏈夊彲鑳介氫笉榪囩紪璇戯紝榪欏彇鍐充簬鍦ㄥ瓙綾葷殑鍩虹被鍒楄〃涓殑鍩虹被鐨勯『搴忥紒涓嬮潰灝辨槸涓涓緥瀛愶細

class Derived: public Base1, public Base2 // 鎯呭喌 (a)

class Derived2: public Base2, public Base1 // 鎯呭喌 (b)

typedef 
void (Derived::* Derived_mfp)();

typedef 
void (Derived2::* Derived2_mfp)();

typedef 
void (Base1::* Base1mfp) ();

typedef 
void (Base2::* Base2mfp) ();

Derived_mfp x;


瀵逛簬鎯呭喌(a)錛宻tatic_cast<Base1mfp> (x) 鏄悎娉曠殑錛岃宻tatic_cast<Base2mfp> (x) 鍒欐槸閿欒鐨勩傜劧鑰屾儏鍐?b)鍗翠笌涔嬬浉鍙嶃備綘鍙彲浠ュ畨鍏ㄥ湴灝嗗瓙綾葷殑鎴愬憳鍑芥暟鎸囬拡杞寲涓虹涓涓熀綾葷殑鎴愬憳鍑芥暟鎸囬拡錛佸鏋滀綘瑕佸疄楠屼竴涓嬶紝MSVC浼氬彂鍑篊4407鍙瘋鍛婏紝鑰孌igital Mars C++浼氬嚭鐜扮紪璇戦敊璇傚鏋滅敤reinterpret_cast浠f浛static_cast錛岃繖涓や釜緙栬瘧鍣ㄩ兘浼氬彂鐢熼敊璇紝浣嗘槸涓ょ緙栬瘧鍣ㄥ姝ゆ湁鐫涓嶅悓鐨勫師鍥犮備絾鏄竴浜涚紪璇戝櫒瀵規緇嗚妭緗箣涓嶇悊錛屽ぇ瀹跺彲瑕佸皬蹇冧簡錛?br>
鏍囧噯C++涓彟涓鏉℃湁瓚g殑瑙勫垯鏄細浣犲彲浠ュ湪綾誨畾涔変箣鍓嶅0鏄庡畠鐨勬垚鍛樺嚱鏁版寚閽堛傝繖瀵逛竴浜涚紪璇戝櫒浼氭湁涓浜涙棤娉曢鏂欑殑鍓綔鐢ㄣ傛垜寰呬細璁ㄨ榪欎釜闂錛岀幇鍦ㄤ綘鍙鐭ラ亾瑕佸敖鍙兘寰楅伩鍏嶈繖縐嶆儏鍐靛氨鏄簡銆?br>
闇瑕佸煎緱娉ㄦ剰鐨勬槸錛屽氨鍍忔垚鍛樺嚱鏁版寚閽堬紝鏍囧噯C++涓悓鏍鋒彁渚涗簡鎴愬憳鏁版嵁鎸囬拡錛坢ember data pointer錛夈傚畠浠叿鏈夌浉鍚岀殑鎿嶄綔絎︼紝鑰屼笖鏈変竴浜涘疄鐜板師鍒欎篃鏄浉鍚岀殑銆傚畠浠敤鍦╯tl::stable_sort鐨勪竴浜涘疄鐜版柟妗堜腑錛岃屽姝ゅ緢澶氬叾浠栫殑搴旂敤鎴戝氨涓嶅啀鎻愬強浜嗐?br>
鎴愬憳鍑芥暟鎸囬拡鐨勪嬌鐢?br>
鐜板湪浣犲彲鑳戒細瑙夊緱鎴愬憳鍑芥暟鎸囬拡鏄湁浜涘寮傘備絾瀹冨彲浠ョ敤鏉ュ仛浠涔堝憿錛熷姝ゆ垜鍦ㄧ綉涓婂仛浜嗛潪甯稿箍娉涚殑璋冩煡銆傛渶鍚庢垜鎬葷粨鍑轟嬌鐢ㄦ垚鍛樺嚱鏁版寚閽堢殑涓ょ偣鍘熷洜錛?br>
    * 鐢ㄦ潵鍋氫緥瀛愮粰
    * C++鍒濆鑰呯湅錛屽府鍔╁畠浠涔犺娉曪紱鎴栬?涓轟簡瀹炵幇“濮旀墭錛?br>      delegate錛?#8221;錛?

鎴愬憳鍑芥暟鎸囬拡鍦⊿TL鍜孊oost搴撶殑鍗曡鍑芥暟閫傞厤鍣紙one-line function adaptor錛変腑鐨勪嬌鐢ㄦ槸寰笉瓚抽亾鐨勶紝鑰屼笖鍏佽浣犲皢鎴愬憳鍑芥暟鍜屾爣鍑嗙畻娉曟販鍚堜嬌鐢ㄣ備絾鏄畠浠渶閲嶈鐨勫簲鐢ㄦ槸鍦ㄤ笉鍚岀被鍨嬬殑搴旂敤紼嬪簭妗嗘灦涓紝姣斿瀹冧滑褰㈡垚浜哅FC娑堟伅緋葷粺鐨勬牳蹇冦?br>
褰撲綘浣跨敤MFC鐨勬秷鎭槧灝勫畯錛堟瘮濡侽N_COMMAND錛夋椂錛屼綘浼氱粍瑁呬竴涓寘鍚秷鎭疘D鍜屾垚鍛樺嚱鏁版寚閽堬紙鍨嬪錛欳CmdTarget::*鎴愬憳鍑芥暟鎸囬拡錛夌殑搴忓垪銆傝繖鏄疢FC綾誨繀欏葷戶鎵緾CmdTarget鎵嶅彲浠ュ鐞嗘秷鎭殑鍘熷洜涔嬩竴銆備絾鏄紝鍚勭涓嶅悓鐨勬秷鎭鐞嗗嚱鏁板叿鏈変笉鍚岀殑鍙傛暟鍒楄〃錛堟瘮濡侽nDraw澶勭悊鍑芥暟鐨勭涓涓弬鏁扮殑綾誨瀷涓篊DC *錛夛紝鎵浠ュ簭鍒椾腑蹇呴』鍖呭惈鍚勭涓嶅悓綾誨瀷鐨勬垚鍛樺嚱鏁版寚閽堛侻FC鏄庢牱鍋氬埌榪欎竴鐐圭殑鍛紵MFC鍒╃敤浜嗕竴涓彲鎬曠殑緙栬瘧鍣ㄦ紡媧烇紙hack錛夛紝瀹冨皢鎵鏈夊彲鑳藉嚭鐜扮殑鎴愬憳鍑芥暟鎸囬拡鏀懼埌涓涓簽澶х殑鑱斿悎錛坲nion錛変腑錛屼粠鑰岄伩鍏嶄簡閫氬父闇瑕佽繘琛岀殑C++綾誨瀷鍖歸厤媯鏌ャ傦紙鐪嬩竴涓媋fximpl.h鍜宑mdtarg.cpp涓悕涓篗essageMapFunctions鐨剈nion錛屼綘灝變細鍙戠幇榪欎竴鎭愭栫殑浜嬪疄銆傦級鍥犱負MFC鏈夊姝ら噸瑕佺殑涓閮ㄥ垎浠g爜錛屾墍浠ヤ簨瀹炴槸錛屾墍鏈夌殑緙栬瘧鍣ㄩ兘涓鴻繖涓紡媧炲紑浜嗙豢鐏傦紙浣嗘槸錛屽湪鍚庨潰鎴戜滑浼氱湅鍒幫紝濡傛灉涓浜涚被鐢ㄥ埌浜嗗閲嶇戶鎵匡紝榪欎釜婕忔礊鍦∕SVC涓氨涓嶄細璧蜂綔鐢紝榪欐鏄湪浣跨敤MFC鏃跺彧鑳藉繀欏諱嬌鐢ㄥ崟涓緇ф壙鐨勫師鍥犮傦級

鍦╞oost::function涓湁綾諱技鐨勬紡媧烇紙浣嗕笉鏄お涓ラ噸錛夈傜湅璧鋒潵濡傛灉浣犳兂鍋氫換浣曟湁鍏蟲垚鍛樺嚱鏁版寚閽堢殑姣旇緝鏈夎叮鐨勪簨錛屼綘灝卞繀欏誨仛濂戒笌榪欎釜璇█鐨勬紡媧炶繘琛屾寫鎴樼殑鍑嗗銆傝鏄綘鎯沖惁瀹欳++鐨勬垚鍛樺嚱鏁版寚閽堣璁℃湁緙洪櫡鐨勮鐐癸紝鐪嬫潵鏄緢闅劇殑銆?br>
鍦ㄥ啓榪欑瘒鏂囩珷涓紝鎴戞湁涓鐐歸渶瑕佹寚鏄庯細“鍏佽鎴愬憳鍑芥暟鎸囬拡涔嬮棿榪涜杞崲錛坈ast錛夛紝鑰屼笉鍏佽鍦ㄨ漿鎹㈠畬鎴愬悗璋冪敤鍏朵腑鐨勫嚱鏁?#8221;錛屾妸榪欎釜瑙勫垯綰沖叆C++鐨勬爣鍑嗕腑鏄彲絎戠殑銆傞鍏堬紝寰堝嫻佽鐨勭紪璇戝櫒瀵硅繖縐嶈漿鎹笉鏀寔錛堟墍浠ワ紝杞崲鏄爣鍑嗚姹傜殑錛屼絾涓嶆槸鍙Щ妞嶇殑錛夈傚叾嬈★紝鎵鏈夌殑緙栬瘧鍣紝濡傛灉杞崲鎴愬姛錛岃皟鐢ㄨ漿鎹㈠悗鐨勬垚鍛樺嚱鏁版寚閽堟椂浠嶇劧鍙互瀹炵幇浣犻鏈熺殑鍔熻兘錛氶偅緙栬瘧鍣ㄥ氨娌℃湁鎵璋撶殑“undefined behavior錛堟湭瀹氫箟鐨勮涓猴級”榪欑被閿欒鍑虹幇鐨勫繀瑕佷簡錛堣皟鐢紙Invocation錛夋槸鍙鐨勶紝浣嗚繖涓嶆槸鏍囧噯錛侊級銆傜涓夛紝鍏佽杞崲鑰屼笉鍏佽璋冪敤鏄畬鍏ㄦ病鏈夌敤澶勭殑錛屽彧鏈夎漿鎹㈠拰璋冪敤閮藉彲琛岋紝鎵嶈兘鏂逛究鑰屾湁鏁堝湴瀹炵幇濮旀墭錛屼粠鑰屼嬌榪欑璇█鍙楃泭銆?br>
涓轟簡璁╀綘紜俊榪欎竴鍏鋒湁浜夎鐨勮鏂紝鑰冭檻涓涓嬪湪涓涓枃浠朵腑鍙湁涓嬮潰鐨勪竴孌典唬鐮侊紝榪欐浠g爜鏄悎娉曠殑錛?br>
class SomeClass;

typedef 
void (SomeClass::* SomeClassFunction)(void);

void Invoke(SomeClass *pClass, SomeClassFunction funcptr)
{
      (pClass
->*funcptr)();
};


娉ㄦ剰鍒扮紪璇戝櫒蹇呴』鐢熸垚姹囩紪浠g爜鏉ヨ皟鐢ㄦ垚鍛樺嚱鏁版寚閽堬紝鍏跺疄緙栬瘧鍣ㄥSomeClass綾諱竴鏃犳墍鐭ャ傛樉鐒訛紝闄ら潪閾炬帴鍣ㄨ繘琛屼簡涓浜涙瀬绔簿緇嗙殑浼樺寲鎺柦錛屽惁鍒欎唬鐮佷細蹇借綾葷殑瀹為檯瀹氫箟鑰岃兘澶熸紜湴榪愯銆傝岃繖閫犳垚鐨勭洿鎺ュ悗鏋滄槸錛屼綘鍙互“瀹夊叏鍦?#8221;璋冪敤浠庡畬鍏ㄤ笉鍚岀殑鍏朵粬綾諱腑杞崲榪囨潵鐨勬垚鍛樺嚱鏁版寚閽堛?br>
涓鴻В閲婃垜鐨勬柇璦鐨勫彟涓鍗娾斺旇漿 鎹㈠茍涓嶈兘鎸夌収鏍囧噯鎵璇寸殑鏂瑰紡榪涜錛屾垜闇瑕佸湪緇嗚妭涓婅璁虹紪璇戝櫒鏄庢牱瀹炵幇鎴愬憳鍑芥暟鎸囬拡鐨勩傛垜鍚屾椂浼氳В閲婁負浠涔堜嬌鐢ㄦ垚鍛樺嚱鏁版寚閽堢殑瑙勫垯鍏鋒湁濡傛涓ユ牸鐨勯檺鍒躲傝幏 寰楄緇嗚榪版垚鍛樺嚱鏁版寚閽堢殑鏂囨。涓嶆槸澶鏄擄紝騫朵笖澶у瀵歸敊璇殑璦璁哄凡緇忎範浠ヤ負甯鎬簡錛屾墍浠ワ紝鎴戜粩緇嗘鏌ヤ簡涓緋誨垪緙栬瘧鍣ㄧ敓鎴愮殑姹囩紪浠g爜……



colys 2007-06-08 00:17 鍙戣〃璇勮
]]>
C++鎴愬憳鍑芥暟鎸囬拡鐨勫簲鐢?/title><link>http://m.shnenglu.com/colys/articles/25785.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Thu, 07 Jun 2007 15:33:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/25785.html</guid><wfw:comment>http://m.shnenglu.com/colys/comments/25785.html</wfw:comment><comments>http://m.shnenglu.com/colys/articles/25785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colys/comments/commentRss/25785.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colys/services/trackbacks/25785.html</trackback:ping><description><![CDATA[<font size="3"> C++涓紝鎴愬憳鎸囬拡鏄渶涓哄鏉傜殑璇硶緇撴瀯銆備絾鍦ㄤ簨浠墮┍鍔ㄥ拰澶氱嚎紼嬪簲鐢ㄤ腑琚箍娉涚敤浜庤皟鐢ㄥ洖鍙嚱鏁般傚湪澶氱嚎紼嬪簲鐢ㄤ腑錛屾瘡涓嚎紼嬮兘閫氳繃鎸囧悜鎴愬憳鍑芥暟鐨勬寚閽堟潵璋冪敤璇ュ嚱鏁般傚湪榪欐牱鐨勫簲鐢ㄤ腑錛屽鏋滀笉鐢ㄦ垚鍛樻寚閽堬紝緙栫▼鏄潪甯稿洶闅劇殑銆?<br><br>銆銆鍒氶亣鍒拌繖縐嶈娉曟椂涔熻浼氳浣犳姝ヤ笉鍓嶃備絾浣犱細鍙戠幇錛屼嬌鐢ㄦ伆褰撶殑綾誨瀷瀹氫箟涔嬪悗錛屽鏉傜殑璇硶鏄彲浠ョ畝鍖栫殑銆傛湰鏂囧紩瀵間綘浜嗚В鎴愬憳鍑芥暟鎸囬拡鐨勫0鏄庯紝璧嬪煎拰璋冪敤鍥炲彨鍑芥暟銆?<br><br>銆銆<strong>鎴愬憳鍑芥暟鎸囬拡鐨勫0鏄?/strong> <br><br>銆銆涓涓垚鍛樺嚱鏁版寚閽堝寘鎷垚鍛樺嚱鏁扮殑榪斿洖綾誨瀷錛屽悗闅?:鎿嶄綔絎︾被鍚嶏紝鎸囬拡鍚嶅拰鍑芥暟鐨勫弬鏁般傚垵鐪嬩笂鍘伙紝璇硶鏈夌偣澶嶆潅銆傚叾瀹炲彲浠ユ妸瀹冪悊瑙d負涓涓寚鍚戝師鍑芥暟鐨勬寚閽堬紝鏍煎紡鏄細鍑芥暟榪斿洖綾誨瀷錛岀被鍚嶏紝::鎿嶄綔絎︼紝鎸囬拡鏄熷彿錛屾寚閽堝悕錛屽嚱鏁板弬鏁般?<br><br>銆銆涓涓寚鍚戝閮ㄥ嚱鏁扮殑鎸囬拡澹版槑涓猴細 <br><br>銆銆void (*pf)(char *, const char *); <br><br>銆銆void strcpy(char * dest, const char * source); <br><br>銆銆pf=strcpy; <br><br>銆銆涓涓寚鍚戠被A鎴愬憳鍑芥暟鐨勬寚閽堝0鏄庝負錛?<br><br>銆銆void (A::*pmf)(char *, const char *); <br><br>銆銆澹版槑鐨勮В閲婃槸錛歱mf鏄竴涓寚鍚慉鎴愬憳鍑芥暟鐨勬寚閽堬紝榪斿洖鏃犵被鍨嬪鹼紝鍑芥暟甯︽湁浜屼釜鍙傛暟錛屽弬鏁扮殑綾誨瀷鍒嗗埆鏄痗har * 鍜?const char *銆傞櫎浜嗗湪鏄熷彿鍓嶅鍔燗:: 錛屼笌澹版槑澶栭儴鍑芥暟鎸囬拡鐨勬柟娉曚竴鏍楓?<br><br>銆銆<strong>璧嬪?/strong> <br><br>銆銆緇欐垚鍛樻寚閽堣祴鍊肩殑鏂規硶鏄皢鍑芥暟鍚嶉氳繃鎸囬拡絎﹀彿&璧嬩簣鎸囬拡鍚嶃傚涓嬫墍紺猴細 <br><br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;"><font>class</font></span><span style="color: #000000;"><font> A<br>{<br><br>銆銆</font></span><span style="color: #0000ff;"><font>public</font></span><span style="color: #000000;"><font>:<br><br>銆銆銆</font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> strcpy(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>);<br><br>銆銆銆</font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> strcat(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>);<br><br>};<br>pmf </font></span><span style="color: #000000;"><font>=</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>&</font></span><span style="color: #000000;"><font>A::strcpy; </font></span></div> <br><br>銆銆鏈変簺鑰佺殑緙栬瘧鍣ㄥ彲浠ラ氳繃娌℃湁&鍙風殑璧嬪兼柟寮忥紝浣嗘爣鍑咰++寮哄埗瑕佹眰鍔犱笂&鍙楓?<br><br>銆銆<strong>浣跨敤綾誨瀷瀹氫箟</strong> <br><br>銆銆鍙互鐢ㄧ被鍨嬪畾涔夋潵闅愯棌澶嶆潅鐨勬垚鍛樻寚閽堣娉曘備緥濡傦紝涓嬮潰鐨勮鍙ュ畾涔変簡PMA鏄竴涓寚鍚慉鎴愬憳鍑芥暟鐨勬寚閽堬紝鍑芥暟榪斿洖鏃犵被鍨嬪鹼紝鍑芥暟鍙傛暟綾誨瀷涓篶har * 鍜?const char *錛?<br><br>銆銆typedef void(A::*PMA)(char *, const char *); <br><br>銆銆PMA pmf= &A::strcat; // pmf鏄疨MF綾誨瀷(綾籄鎴愬憳鎸囬拡)鐨勫彉閲?<br><br>銆銆涓嬫枃浼氱湅鍒頒嬌鐢ㄧ被鍨嬪畾涔夌壒鍒湁鍒╀簬澹版槑鎴愬憳鎸囬拡鏁扮粍銆?<br><br>銆銆<strong>閫氳繃鎴愬憳鎸囬拡璋冪敤鎴愬憳鍑芥暟</strong> <br><br> 鍙互鍦ㄤ笉蹇呯煡閬撳嚱鏁板悕鐨勬儏鍐典笅錛岄氳繃鎴愬憳鎸囬拡璋冪敤瀵硅薄鐨勬垚鍛樺嚱鏁般備緥濡傦紝鍑芥暟dispatcher鏈変竴涓彉閲弍mf錛岄氳繃瀹冭皟鐢ㄧ被鎴愬憳鍑芥暟錛屼笉綆″畠璋冪敤 鐨勬槸strcpy()鍑芥暟榪樻槸strcat()鍑芥暟銆傛寚鍚戝閮ㄥ師鍑芥暟鐨勬寚閽堝拰鎸囧悜綾繪垚鍛樺嚱鏁扮殑鎸囬拡鏄湁寰堝ぇ鍖哄埆鐨勩傚悗鑰呭繀欏繪寚鍚戣璋冨嚱鏁扮殑瀹夸富瀵硅薄銆傚洜 姝わ紝闄や簡瑕佹湁鎴愬憳鎸囬拡澶栵紝榪樿鏈夊悎娉曞璞℃垨瀵硅薄鎸囬拡銆?<br><br>銆銆鐜頒婦渚嬪仛榪涗竴姝ヨ鏄庛傚亣璁続鏈変簩涓疄渚嬶紝鎴愬憳鍑芥暟鎸囬拡鏀寔澶氭佹с傝繖鏍峰湪鎴愬憳鎸囬拡璋冪敤铏氭垚鍛樺嚱鏁版椂鏄姩鎬佸鐞嗙殑(鍗蟲墍璋撳悗鑱旂紪 - 璇戞敞)銆傛敞鎰忥紝涓嶅彲璋冪敤鏋勯犲拰鏋愭瀯鍑芥暟銆傜ず渚嬪涓嬶細 <br><br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"><font>    A a1, a2;<br><br>銆銆A </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>p</font></span><span style="color: #000000;"><font>=</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>&</font></span><span style="color: #000000;"><font>a1; </font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>鍒涘緩鎸囧悜A鐨勬寚閽?br><br>銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>鍒涘緩鎸囧悜鎴愬憳鐨勬寚閽堝茍鍒濆鍖?/font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆</font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> (A::</font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>pmf)(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>) </font></span><span style="color: #000000;"><font>=</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>&</font></span><span style="color: #000000;"><font>A::strcpy;<br><br>銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>瑕佸皢鎴愬憳鍑芥暟緇戝畾鍒皃mf錛屽繀欏誨畾涔夊懠鍙殑瀵硅薄銆?br><br>銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>鍙互鐢?鍙峰紩瀵鹼細</font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆</font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> dispatcher(A a, </font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> (A::</font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>pmf)(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>))<br><br>銆銆{<br><br>銆銆銆</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> str[</font></span><span style="color: #000000;"><font>4</font></span><span style="color: #000000;"><font>];<br><br>銆銆銆(a.</font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>pmf)(str, “abc”); </font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>灝嗘垚鍛樺嚱鏁扮粦瀹氬埌pmf</font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆}<br><br>銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>鎴栫敤A鐨勬寚閽堣〃杈炬柟寮忔寚鍚戞垚鍛樻寚閽堬細</font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆</font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> dispatcher(A </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font> p, </font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> (A::</font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>pmf)(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>))<br><br>銆銆{<br><br>銆銆銆</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> str[</font></span><span style="color: #000000;"><font>4</font></span><span style="color: #000000;"><font>]; (p</font></span><span style="color: #000000;"><font>->*</font></span><span style="color: #000000;"><font>pmf)(str, “abc”);<br><br>銆銆}<br><br>銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>鍑芥暟鐨勮皟鐢ㄦ柟娉曚負錛?/font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆dispatcher(a, pmf); </font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font> .* 鏂瑰紡</font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆dispatcher(</font></span><span style="color: #000000;"><font>&</font></span><span style="color: #000000;"><font>a, pmf); </font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font> ->* 鏂瑰紡 </font></span></div> <br>楂樼駭浣跨敤鎶宸?<br><br>銆銆浠ヤ笂鏄垚鍛樺嚱鏁扮殑鍩烘湰鐭ヨ瘑銆傜幇鍦ㄤ粙緇嶅畠鐨勯珮綰т嬌鐢ㄦ妧宸с?<br><br>銆銆<strong>鎴愬憳鎸囬拡鏁扮粍</strong> <br><br>銆銆鍦ㄤ笅渚嬶紝澹版槑浜嗕竴涓惈鏈変簩涓垚鍛樻寚閽堢殑鏁扮粍錛屽茍鍒嗛厤綾葷殑鎴愬憳鍑芥暟鍦板潃緇欐垚鍛樻寚閽堬細 <br><br>銆銆PMA pmf[2]= {&A::strcpy, &A::strcat}; <br>涔熷氨鏄?br>      void (A::*PMA[2])(char *, const char *)= {&A::strcpy, &A::strcat}; <br><br>銆銆榪欐牱鐨勬暟緇勫湪鑿滃崟椹卞姩搴旂敤涓緢鏈夌敤銆傞夋嫨鑿滃崟欏瑰悗錛屽簲鐢ㄥ皢璋冪敤鐩稿簲鐨勫洖鍙嚱鏁幫紝濡備笅鎵紺猴細 <br><br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;"><font>    enum</font></span><span style="color: #000000;"><font> MENU_OPTIONS { COPY, CONCAT };<br><br>銆銆</font></span><span style="color: #0000ff;"><font>int</font></span><span style="color: #000000;"><font> main()<br>銆銆{<br>銆銆銆MENU_OPTIONS option; </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> str[</font></span><span style="color: #000000;"><font>4</font></span><span style="color: #000000;"><font>];<br>銆銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>浠庡閮ㄨ祫婧愯鍙栭夐」</font></span><span style="color: #008000;"></span><span style="color: #000000;"><font><br>銆銆銆</font></span><span style="color: #0000ff;"><font>switch</font></span><span style="color: #000000;"><font> (option)<br>銆銆銆{<br>銆銆銆銆</font></span><span style="color: #0000ff;"><font>case</font></span><span style="color: #000000;"><font> COPY:<br><br>銆銆銆銆銆(pa</font></span><span style="color: #000000;"><font>->*</font></span><span style="color: #000000;"><font>pmf[COPY])(str, “abc”);<br><br>銆銆銆銆銆</font></span><span style="color: #0000ff;"><font>break</font></span><span style="color: #000000;"><font>;<br><br>銆銆銆銆</font></span><span style="color: #0000ff;"><font>case</font></span><span style="color: #000000;"><font> CONCAT:<br><br>銆銆銆銆銆(pa</font></span><span style="color: #000000;"><font>->*</font></span><span style="color: #000000;"><font>pmf[CONCAT])(str, “abc”);<br><br>銆銆銆銆銆</font></span><span style="color: #0000ff;"><font>break</font></span><span style="color: #000000;"><font>;<br><br>銆銆銆銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>…</font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆銆}<br>銆銆} </font></span></div> <br><br>銆銆<strong>Const 綾誨瀷鐨勬垚鍛樺嚱鏁?/strong> <br><br>銆銆鎴愬憳鎸囬拡鐨勭被鍨嬪簲璇ヤ笌鎴愬憳鍑芥暟綾誨瀷涓鑷淬備笂闈緥瀛愪腑鐨刾mf 鍙互鎸囧悜A鐨勪換鎰忓嚱鏁幫紝鍙璇ュ嚱鏁頒笉鏄痗onst綾誨瀷銆傚涓嬫墍紺猴紝濡傛灉灝唗ouppercase()鐨勫湴鍧鍒嗛厤緇檖mf錛屽皢瀵艱嚧緙栬瘧鍑洪敊錛屽洜涓簍ouppercase() 鐨勭被鍨嬫槸const銆?<br><br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"><font>   Class A<br>銆 {<br><br>銆銆</font></span><span style="color: #0000ff;"><font> public</font></span><span style="color: #000000;"><font>:<br><br>銆銆銆  </font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> strpcy(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>);<br><br>銆銆銆</font></span><span style="color: #0000ff;"><font>  void</font></span><span style="color: #000000;"><font> strcat(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>);<br><br>銆銆銆</font></span><span style="color: #0000ff;"><font>  void</font></span><span style="color: #000000;"><font> touppercase(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>) </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font>;<br><br>銆銆};<br><br>銆銆pmf</font></span><span style="color: #000000;"><font>=&</font></span><span style="color: #000000;"><font>A::touppercase; </font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>鍑洪敊錛岀被鍨嬩笉鍖歸厤<br><br>銆銆</font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font>瑙e喅鐨勬柟娉曟槸澹版槑涓涓猚onst綾誨瀷鐨勬垚鍛樻寚閽堬細</font></span><span style="color: #008000;"><font><br></font></span><span style="color: #000000;"><font><br>銆銆</font></span><span style="color: #0000ff;"><font>void</font></span><span style="color: #000000;"><font> (A::pcmf)(</font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>, </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font> </font></span><span style="color: #0000ff;"><font>char</font></span><span style="color: #000000;"><font> </font></span><span style="color: #000000;"><font>*</font></span><span style="color: #000000;"><font>) </font></span><span style="color: #0000ff;"><font>const</font></span><span style="color: #000000;"><font>;<br><br>銆銆pcmf</font></span><span style="color: #000000;"><font>=&</font></span><span style="color: #000000;"><font>A::touppercase; </font></span><span style="color: #008000;"><font>//</font></span><span style="color: #008000;"><font> 鐜板湪鍙互浜?nbsp;</font></span></div> <br><br>銆銆鏈変簺宸姴鐨勭紪璇戝櫒鍏佽涓涓潪const綾誨瀷鐨勬垚鍛樻寚閽堟寚鍚慶onst綾誨瀷鐨勬垚鍛樺嚱鏁般傝繖鍦ㄦ爣鍑咰++鏄笉鍏佽鐨勩?</font><img src ="http://m.shnenglu.com/colys/aggbug/25785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-06-07 23:33 <a href="http://m.shnenglu.com/colys/articles/25785.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>c++ typedef 鍑芥暟鎸囬拡http://m.shnenglu.com/colys/articles/25381.htmlcolyscolysSun, 03 Jun 2007 07:07:00 GMThttp://m.shnenglu.com/colys/articles/25381.htmlhttp://m.shnenglu.com/colys/comments/25381.htmlhttp://m.shnenglu.com/colys/articles/25381.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/25381.htmlhttp://m.shnenglu.com/colys/services/trackbacks/25381.html鍑芥暟鎸囬拡

銆銆銆銆銆銆涓涓嚱鏁板湪緙栬瘧鏃惰鍒嗛厤涓涓叆鍙e湴鍧錛屽皢榪欎釜鍏ュ彛鍦板潃縐頒負鍑芥暟鐨勬寚閽堬紝鍙?span lang="EN-US">

銆銆銆銆銆銆浠ョ敤涓涓寚閽堝彉閲忔寚鍚戣鍑芥暟鎸囬拡錛岀劧鍚庨氳繃璇ュ彉閲忔潵璋冪敤鍑芥暟銆?span lang="EN-US">

銆銆銆銆銆銆鏈夊叧璇存槑錛?span lang="EN-US">

銆銆銆銆銆銆1銆佸嚱鏁版寚閽堢殑澹版槑鏍煎紡錛?span lang="EN-US">

銆銆銆銆銆銆銆 鍑芥暟榪斿洖鍊肩被鍨嬶紙錛婃寚閽堝彉閲忓悕錛夛紙鍙傛暟綾誨瀷鍒楄〃錛?span lang="EN-US">

銆銆銆銆銆銆   鎴栬呮槸錛?span lang="EN-US">

銆銆銆銆銆銆   typedef銆鍑芥暟榪斿洖鍊肩被鍨嬨錛堬紛鎸囬拡鍙橀噺鍚嶏級錛堝弬鏁扮被鍨嬪垪琛級

            2銆佷竴涓嚱鏁版寚閽堝彧鑳芥寚鍚戜竴縐嶇被鍨嬬殑鍑芥暟錛屽嵆鍏鋒湁鐩稿悓鐨勮繑鍥炲煎拰鐩稿悓鐨勫弬銆銆銆銆銆銆銆銆銆銆銆銆

銆銆銆銆銆銆銆 鏁扮殑鍑芥暟

銆銆銆銆銆銆錛撱佸叧浜庡嚱鏁版寚閽堢殑鍔犲噺榪愮畻娌℃湁鎰忎箟

銆銆銆銆銆銆 鍑芥暟鎸囬拡鏁扮粍瀹氫箟錛?span lang="EN-US">

             鍑芥暟瀹氫箟錛?span lang="EN-US">

             void fun1(void *p);

             void fun2(void *p);

             void fun3(void *p);

銆銆銆銆銆銆 鍑芥暟鎸囬拡鏁扮粍瀹氫箟錛?span lang="EN-US">

銆銆銆銆銆銆 void(*fun[3])(void*);//typedef void(*pfun)(void*);pfun fun[3];

銆銆銆銆銆銆 鎸囬拡璧嬪鹼細

             fun[0] = fun1;

             fun[1] = fun2;

             fun[2] = fun3;

             鍑芥暟璋冪敤錛?span lang="EN-US">

銆銆銆銆銆銆 fun[0](&a);         //int a;

             fun[1](&b);         //int b;

             fun[3](&c);         //int c;

          澹版槑涓涓寚鍚戞垚鍛樺嚱鏁扮殑鎸囬拡

涓涓寚鍚戞垚鍛樺嚱鏁扮殑鎸囬拡鍖呮嫭鎴愬憳鍑芥暟鐨勮繑鍥炵被鍨嬶紝甯?em>::絎﹀彿鐨勭被鍚嶇О錛屽嚱鏁板弬鏁拌〃銆傝櫧鐒惰繖涓璇硶鐪嬩技澶嶆潅錛屽叾瀹炲畠鍜屾櫘閫氱殑鎸囬拡鏄竴鏍風殑銆傛寚鍚戝閮ㄥ嚱鏁扮殑鎸囬拡鍙涓嬪0鏄庯細

void (*pf)(char *, const char *);
void strcpy(char * dest, const char * source);
pf=strcpy;

鐩稿簲鎸囧悜綾?span lang="EN-US">A鐨勬垚鍛樺嚱鏁扮殑鎸囬拡濡備笅琛ㄧず錛?span lang="EN-US">

void (A::*pmf)(char *, const char *);

浠ヤ笂pmf鏄寚鍚戠被A鐨勪竴涓垚鍛樺嚱鏁扮殑鎸囬拡錛屼紶閫掍袱涓彉閲?em>char *鍜?const char *錛屾病鏈夎繑鍥炲箋傛敞鎰忔槦鍙峰墠闈㈢殑A::絎﹀彿錛岃繖鍜屽墠闈㈢殑澹版槑鏄竴鑷寸殑銆?span lang="EN-US">

璧嬪?span lang="EN-US">
涓轟簡緇欎竴涓寚鍚戞垚鍛樺嚱鏁扮殑鎸囬拡璧嬪鹼紝鍙互閲囩敤鎴愬憳鍑芥暟鍚嶅茍鍐嶅叾鍓嶉潰鍔犱竴涓?span lang="EN-US">&鐨勬柟寮?/span>
浣跨敤typedef

浣犲彲浠ヤ嬌鐢?span lang="EN-US">typedef鏉ラ殣钘忎竴浜涙寚鍚戞垚鍛樺嚱鏁扮殑澶嶆潅鎸囬拡銆備緥濡傦紝涓嬮潰鐨勪唬鐮佸畾涔変簡涓涓被A涓殑鎴愬憳鍑芥暟鐨勬寚閽?em>PMA錛屽茍浼犻?em>char *鍜?em>const char *鍙傛暟銆?span lang="EN-US">

typedef void(A::*PMA)(char *, const char *);
PMA pmf= &A::strcat; // use a typedef to define a pointer to member

浣跨敤typedef鐗瑰埆鏈夌敤錛屽挨鍏舵槸瀵逛簬鎸囧悜鎴愬憳鍑芥暟鐨勬暟緇勬寚閽堛?span lang="EN-US">

鈻?/font>       void綾誨瀷鐨勬寚閽?span lang="EN-US">

void鍚箟錛?span lang="EN-US">

void鏄?#8220;鏃犵被鍨?#8221;錛?span lang="EN-US">void*鍒欎負鏃犵被鍨嬫寚閽堬紝void*鍙互鎸囧悜浠諱綍綾誨瀷鐨勬暟鎹?span lang="EN-US">

void a錛?span lang="EN-US">//姝ゅ彉閲忔病鏈変換浣曞疄闄呮剰涔夛紝鏃犳硶緙栬瘧閫氳繃“illegal use of type

void 鐨勪綔鐢細

     1銆佸紼嬪簭榪斿洖鐨勯檺瀹?span lang="EN-US">

     2銆佸鍑芥暟鍙傛暟鐨勯檺瀹?span lang="EN-US">

鎴戜滑鐭ラ亾錛屽浣曟寚閽?span lang="EN-US">p1鍜?span lang="EN-US">p2鐨勭被鍨嬬浉鍚岋紝閭d箞鎴戜滑鍙互鐩存帴鍦?span lang="EN-US">p1鍜?span lang="EN-US">p2闂磋祴鍊鹼紝濡傛灉涓嶅悓錛屽繀欏諱嬌鐢ㄥ己鍒剁被鍨嬭漿鎹€?span lang="EN-US">

濡傦細float *p1;   int *p2;

鑻ワ細p1 = p2; 緙栬瘧鍑洪敊錛?#8220;can not covert from int* to float*

蹇呴』涓猴細p1 = (float*)p2;

            鑰?span lang="EN-US">void*涓嶅悓錛屼換浣曠被鍨嬬殑鎸囬拡閮藉彲浠ョ洿鎺ヨ祴涓哄畠錛屼笉闇瑕佸己鍒剁被鍨嬭漿鎹細

            濡傦細void *p1;   int *p2;

                鍙綔錛?span lang="EN-US">p1 =p2;

                鏃犵被鍨嬪彲浠ュ寘瀹規湁綾誨瀷錛屾湁綾誨瀷涓嶈兘鍖呭鏃犵被鍨嬶細

                蹇呴』涓猴細p2 = (int*)p1;

            viod 鍜?span lang="EN-US"> void*浣跨敤瑙勫垯鎬葷粨錛?span lang="EN-US">

鈼?/font>     濡傛灉鍑芥暟娌℃湁榪斿洖鍊鹼紝閭d箞搴斿0鏄庝負void綾誨瀷

鍦?/span>C璇█涓紝鍑′笉鍔犺繑鍥炲肩被鍨嬮檺瀹氱殑鍑芥暟錛屽氨浼氳緙栬瘧鍣ㄤ綔涓鴻繑鍥炴暣鍨嬪煎鐞嗐備絾鏄澶氱▼搴忓憳鍗磋浠ヤ負鍏朵負void綾誨瀷. 鏋楅攼鍗氬+銆婇珮璐ㄩ噺C/C++緙栫▼銆嬩腑鎻愬埌錛?/span>“C++璇█鏈夊緢涓ユ牸鐨勭被鍨嬪畨鍏ㄦ鏌ワ紝涓嶅厑璁鎬笂榪版儏鍐碉紙鎸囧嚱鏁頒笉鍔犵被鍨嬪0鏄庯級鍙戠敓銆傚彲鏄紪璇戝櫒騫朵笉涓瀹氳繖涔堣瀹氾紝璀鍦?/span>Visual C++6.0涓笂榪?/span>add鍑芥暟鐨勭紪璇戞棤閿欎篃鏃犺鍛婁笖榪愯姝g‘錛屾墍浠ヤ笉鑳藉瘎甯屾湜浜庣紪璇戝櫒浼氬仛涓ユ牸鐨勭被鍨嬫鏌ャ?/span>

鍥犳錛屼負浜嗛伩鍏嶆販涔憋紝鎴戜滑鍦ㄧ紪鍐?/span>C/C++紼嬪簭鏃訛紝瀵逛簬浠諱綍鍑芥暟閮藉繀欏諱竴涓笉婕忓湴鎸囧畾鍏剁被鍨嬨傚鏋滃嚱鏁版病鏈夎繑鍥炲鹼紝涓瀹氳澹版槑涓?/span>void綾誨瀷銆傝繖鏃㈡槸紼嬪簭鑹ソ鍙鎬х殑闇瑕侊紝涔熸槸緙栫▼瑙勮寖鎬х殑瑕佹眰銆傚彟澶栵紝鍔犱笂void綾誨瀷澹版槑鍚庯紝涔熷彲浠ュ彂鎸ヤ唬鐮佺殑鑷敞閲?/span>浣滅敤銆備唬鐮佺殑鑷敞閲?/span>鍗充唬鐮佽兘鑷繁娉ㄩ噴鑷繁銆?/span>

             鈼?/span> 濡傛灉鍑芥暟鏃犲弬鏁幫紝閭d箞搴斿0鏄庡叾鍙傛暟涓?/span>void

             鈼?/span> 灝忓績浣跨敤void鎸囬拡綾誨瀷

                鎸夌収ANSI鐨勬爣鍑嗭紝涓嶈兘瀵?/span>void鎸囬拡榪涜綆楁硶鎿嶄綔錛屽嵆涓嬪垪鎿嶄綔鏄笉鍚堟硶鐨勶細

                void *pvoid;

                pvoid ++;         //ansi閿欒

                pvoid += 1;        //ansi 閿欒

                ansi鏍囧噯涔嬫墍浠ヨ繖鏍瘋瀹氾紝鏄洜涓哄畠鍧氭寔錛岃繘琛岀畻娉曟搷浣滅殑鎸囬拡蹇呴』鏄‘瀹氱煡閬撳叾鎸囧悜鏁版嵁綾誨瀷鐨勫ぇ灝忕殑銆?/span>

                浣?/span>GUN錛?/span>GUNs  Not  Unix錛夊垯涓嶈繖涔堣涓猴紝瀹冩寚瀹?/span>void*鐨勭畻娉曟搷浣滀笌char*涓鑷淬傚洜姝ゅ湪GUN緙栬瘧鍣ㄤ腑涓婅堪璇彞鏄紜殑銆?/span>

                鍦ㄥ疄闄呯殑紼嬪簭涓紝涓轟簡榪庡悎ansi鏍囧噯錛屽茍鎻愰珮紼嬪簭鐨勫彲縐繪鎬э紝鎴戜滑鍙互榪欐牱瀹炵幇鍚屾牱鍔熻兘鐨勪唬鐮侊細

                void *pvoid;

                (char*)pvoid++;

                (char*)pvoid += 1;

             鈼?濡傛灉鍑芥暟鐨勫弬鏁板彲浠ユ槸浠繪剰綾誨瀷鎸囬拡錛岄偅涔堝簲澹版槑鍏跺弬鏁頒負void *

                鍏稿瀷鐨勫鍐呭瓨鎿嶄綔鍑芥暟memcpy鍜?/span>memset鐨勫嚱鏁板師鍨嬪垎鍒負錛?/span>

                void* memcpy(void *dest, const void *src, size_t len);

                void* memset(void *buffer,int c, size_t num);

                榪欐牱錛屼換浣曠被鍨嬬殑鎸囬拡閮藉彲浠ヤ紶鍏?/span>memcpy鍜?/span>memset涓紝榪欎篃鐪熷疄鍦頒綋鐜頒簡鍐呭瓨鎿嶄綔鍑芥暟鐨勬剰涔夛紝鍥犱負瀹冩搷浣滅殑瀵硅薄浠呬粎鏄竴鐗囧唴瀛橈紝鑰屼笉璁哄唴瀛樻槸浠綾誨瀷銆?/span>

             鈼?void涓嶈兘浠h〃涓涓湡瀹炵殑鍙橀噺

                void a; //閿欒

                function(void a); //閿欒

鈻?/font>       this鎸囬拡

銆婃繁鍏ユ祬鍑?span lang="EN-US">MFC銆嬩腑瑙i噴錛?span lang="EN-US">

 瀹氫箟綾?span lang="EN-US">CRect錛屽畾涔変袱涓璞?span lang="EN-US">rect1銆?span lang="EN-US">rect2錛屽悇鏈夎嚜宸辯殑m_color鎴愬憳鍙橀噺錛屼絾rect1.setcolor鍜?span lang="EN-US">rect2.setcolor鍗撮兘鏄氬線鍞竴鐨?span lang="EN-US">CRect::setcolor鎴愬憳鍑芥暟錛岄偅涔?span lang="EN-US">CRect::setcolor濡備綍澶勭悊涓嶅悓瀵硅薄鐨?span lang="EN-US">m_color錛熺瓟妗堟槸鐢變竴涓殣钘忓弬鏁幫紝鍚嶄負this鎸囬拡銆傚綋浣犺皟鐢細

rect1.setcolro(2);

rect2.setcolor(3);

鏃訛紝緙栬瘧鍣ㄥ疄闄呬笂涓轟綘鍋氬嚭鏉ヤ竴涓嬬殑浠g爜錛?span lang="EN-US">

CRect::setcolor(2,(CRect*)&rect1);

CRect::setcolor(3,(CRect*)&rect2);

澶氬嚭鏉ョ殑鍙傛暟錛屽氨鏄墍璋撶殑this鎸囬拡銆?span lang="EN-US">

class CRect

{

……

public:

  void setcolor(int color){m_color = color};

};

琚紪璇戝悗錛屽叾瀹炰負錛?span lang="EN-US">

class CRect

{

……

public:

  void setcolor(int color,(CRect*)this){this->m_color = color};

};



colys 2007-06-03 15:07 鍙戣〃璇勮
]]>
鏍規嵁璺緞鍒涘緩涓嶈鍒欑獥浣?/title><link>http://m.shnenglu.com/colys/articles/24791.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Thu, 24 May 2007 15:08:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/24791.html</guid><wfw:comment>http://m.shnenglu.com/colys/comments/24791.html</wfw:comment><comments>http://m.shnenglu.com/colys/articles/24791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colys/comments/commentRss/24791.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colys/services/trackbacks/24791.html</trackback:ping><description><![CDATA[<p> //鏍規嵁璺緞鍒涘緩涓嶈鍒欑獥浣?br> CDC* pDC;</p> <p> pDC = this->GetDC();<br> ::BeginPath(pDC->m_hDC);<br> <br> //璁劇疆涓洪忔槑妯″紡 <br> ::SetBkMode(pDC->m_hDC, TRANSPARENT);  <br> //<br> RECT rect;<br> this->GetClientRect(&rect);<br> /*涓夎鍨?br> int TopCenterPoint=rect.left + (rect.right - rect.left) /2;<br> pDC->MoveTo(TopCenterPoint, rect.top);<br> pDC->LineTo(rect.left, rect.bottom - GLOBAL_OVERLEN);<br> pDC->LineTo(rect.right, rect.bottom - GLOBAL_OVERLEN);<br> pDC->LineTo(TopCenterPoint,rect.top);<br> */</p> <p> /*姣旇緝濂囨殑鐭╁艦<br> pDC->MoveTo(rect.left, rect.top);<br> pDC->LineTo(rect.right, rect.top);</p> <p> pDC->LineTo(rect.right, rect.bottom - GLOBAL_OVERLEN);</p> <p> pDC->LineTo(rect.left + (rect.right - rect.left) / 2, rect.bottom - GLOBAL_OVERLEN);<br> pDC->LineTo(rect.left + (rect.right - rect.left) / 2, rect.bottom);<br> pDC->LineTo(rect.left + (rect.right - rect.left) / 2 - GLOBAL_OVERWIDTH, rect.bottom - GLOBAL_OVERLEN);</p> <p> pDC->LineTo(rect.left, rect.bottom - GLOBAL_OVERLEN);<br> pDC->LineTo(rect.left, rect.top);<br> */<br> //<br> <br> ::EndPath(pDC->m_hDC);<br> hRgn = ::PathToRegion(pDC->m_hDC);<br> this->SetWindowRgn(hRgn, TRUE);</p><img src ="http://m.shnenglu.com/colys/aggbug/24791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-05-24 23:08 <a href="http://m.shnenglu.com/colys/articles/24791.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>璇誨啓紓佺洏鏂囦歡涓撻http://m.shnenglu.com/colys/articles/24491.htmlcolyscolysSun, 20 May 2007 15:11:00 GMThttp://m.shnenglu.com/colys/articles/24491.htmlhttp://m.shnenglu.com/colys/comments/24491.htmlhttp://m.shnenglu.com/colys/articles/24491.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/24491.htmlhttp://m.shnenglu.com/colys/services/trackbacks/24491.html鍦?/span>Windows騫沖彴涓婏紝璇誨啓紓佺洏鏂囦歡鏄浉褰撳搴旂敤紼嬪簭緇忓父浼氭秹鍙婂埌鐨勪竴縐嶅姛鑳姐傝涓婚娑夊強鍒伴噰鐢?/span>C/C++/MFC/Win32(API)涓彁渚涚殑鎺ュ彛鍑芥暟鏉ユ搷浣滅鐩樻枃浠剁殑鏂規硶錛屼互鍙婂叾涓渶瑕佹敞鎰忕殑鍦版柟銆?/span>

 

=============================================================

0.      紓佺洏鏂囦歡鏁版嵁瀛樺偍鏂瑰紡

鍦ㄤ粙緇嶅悇縐嶆搷浣滄枃浠舵柟寮忎箣鍓嶏紝闇瑕佸厛浠嬬粛紓佺洏涓婃枃浠舵暟鎹殑緇勭粐鏂瑰紡銆?/span>

瀹為檯涓婏紝鏂囦歡鏄湪璁$畻鏈哄唴瀛樹腑浠ヤ簩榪涘埗琛ㄧず鐨勬暟鎹湪澶栭儴瀛樺偍浠嬭川涓婄殑鍙︿竴縐嶅瓨鏀懼艦寮忋?/span>鏂囦歡閫氬父鍒嗕負浜岃繘鍒舵枃浠跺拰鏂囨湰鏂囦歡銆?/span>浜岃繘鍒舵枃浠舵槸鍖呭惈鍦?/span>ASCII鍙婃墿灞?/span>ASCII瀛楃涓紪鍐欑殑鏁版嵁鎴栫▼搴忔寚浠ょ殑鏂囦歡銆備竴鑸槸鍙墽琛屾枃浠?/span>(Exe)銆佸浘褰€佸浘鍍忋佸0闊崇瓑鏂囦歡銆傝屾枃鏈枃浠?/span>(閫氬父涔熸垚涓?/span>ASCII鏂囦歡)錛屽畠鐨勬瘡涓瀛楄妭瀛樻斁鐨勬槸鍙〃紺轟負涓涓瓧絎︾殑ASCII浠g爜鐨勬枃浠躲傝繖閲屾妸鏂囦歡鍖哄垎涓轟簩榪涘埗鏂囦歡鍜屾枃鏈枃浠訛紝浣嗗疄闄呬笂瀹冧滑閮芥槸浠ヤ簩榪涘埗鏁版嵁鐨勬柟寮忔潵瀛樺偍鐨勩傛枃鏈枃浠墮噷鎵瀛樺偍鐨勬瘡涓涓瓧鑺傞兘鍙互杞寲涓轟竴涓?/span>鍙鐨勫瓧絎︺傝濡?/span>a,b錛?/span>浣嗗湪鍐呭瓨涓茍涓嶄細瀛樺偍'a', 'b'錛岃屾槸瀛樺偍瀹冧滑鐨?/span>ASCII鐮侊細61鍜?/span>62銆?/span>

 

1.      C璇█瀵規枃浠舵搷浣滅殑鏀寔

鍦?/span>C璇█涓紝瀵逛簬鏂囦歡鐨勬搷浣滈兘鏄埄鐢?/span>FILE緇撴瀯浣撴潵榪涜鐨勩傚寘鎷枃浠剁殑鎵撳紑銆佹枃浠剁殑璇誨啓銆佹枃浠剁殑鍏抽棴銆佹枃浠舵寚閽堢殑瀹氫綅絳夈?/span>

(1)   鏂囦歡鐨勬墦寮

鏂囦歡鐨勬墦寮闇瑕佺敤fopen鍑芥暟銆傝鍑芥暟甯?/span>2涓弬鏁幫紝榪斿洖鍊間負鎸囧悜涔嬪墠瀹氫箟鐨?/span>FILE緇撴瀯浣撴寚閽堛傝娉曞畾涔変負

FILE* fopen(const char* filename, const char* mod);

鍙傛暟1錛氳〃紺鴻鎵撳紑鏂囦歡鐨勫畬鏁磋礬寰勶紝渚嬪: “C:\\Test\\Zero_Test.txt”.

鍙傛暟2錛氭墦寮鏂囦歡鐨勬柟寮忋傚彇鍊間負涓嬭〃鎵紺恒?/span>

鏂囦歡鎵撳紑妯″紡

鎰忎箟

r/rb

涓鴻鍙栬屾墦寮銆傚鏋滄枃浠朵笉瀛樺湪鎴栦笉鑳芥壘鍒幫紝鍑芥暟璋冪敤澶辮觸銆?/span>

w/wb

涓哄啓鍏ヨ屾墦寮涓涓┖鏂囦歡銆傚鏋滅粰瀹氱殑鏂囦歡宸茬粡瀛樺湪錛屽垯娓呯┖鍏跺唴瀹廣?/span>

a/ab

涓哄啓鍏ヨ屾墦寮涓涓枃浠躲傚鏋滄枃浠跺瓨鍦紝鍒欏湪鏂囦歡灝鵑儴娣誨姞鏂版暟鎹紝鍦ㄥ啓鏂版暟鎹箣鍓嶄笉浼氱Щ闄ゅ師鏈夌殑EOF鏍囧織銆傚鏋滄枃浠朵笉瀛樺湪錛屽垯鏂板緩涓涓┖鏂囦歡浠ュ緟鍐欏叆銆?/span>

r+/rb+

鎵撳紑鏂囦歡鐢ㄤ簬鍐欏叆鎿嶄綔鍜岃鍙栨搷浣滐紝鏂囦歡蹇呴』瀛樺湪銆?/span>

w+/wb+

涓哄啓鍏ユ搷浣滃拰璇誨彇鎿嶄綔鎵撳紑涓涓┖鏂囦歡銆傚鏋滄枃浠跺凡緇忓瓨鍦紝鍒欐竻絀哄叾鍐呭銆?/span>

a+/ab+

鎵撳紑鏂囦歡鐢ㄤ簬璇誨彇鎿嶄綔鍜屾坊鍔犳搷浣溿傚茍涓旀坊鍔犳搷浣滃湪娣誨姞鏂版暟鎹箣鍓嶄細縐婚櫎璇ユ枃浠朵腑宸叉湁鐨?/span>EOF鏍囧織錛岀劧鍚庡綋鍐欏叆鎿嶄綔瀹屾垚涔嬪悗鍐嶆仮澶?/span>EOF鏍囧織銆傚鏋滄寚瀹氭枃浠朵笉瀛樺湪錛岄偅涔堥鍏堝皢鏂板緩涓涓枃浠躲?/span>

鍦ㄤ笂琛ㄤ腑錛屾病鏈夊甫b鐨勬ā寮忚〃紺烘墦寮鐨勬槸鏂囨湰鏂囦歡錛岃屽甫b鐨勬ā寮忚〃紺烘墦寮鐨勬槸浜岃繘鍒舵枃浠躲?/span>

閫氬父鍦ㄥ畾涔夌粨鏋?/span>FILE鏃朵細灝嗗叾鍒濆鍖栦負NULL銆傚湪鎵撳紑鏂囦歡灝嗗嚱鏁?/span>fopen鐨勮繑鍥炲艱祴鍊肩粰瀹冦備箣鍚庨渶瑕佸垽鏂枃浠舵槸鍚︽垚鍔熸墦寮錛屽彲閲囩敤濡備笅鏂瑰紡錛?/span>

if ((pFile = fopen(“C:\\Test\\Zero_Test.txt”, “w”) == NULL)

   Print(“Opening File Error.”);    // FILE* pFile = NULL;

else

   姝e父鍐欏叆鏁版嵁鍒版枃浠?/span>

 

錛?/span>2錛夋枃浠剁殑鍏抽棴

鍦ㄤ嬌鐢ㄥ畬涓涓枃浠朵箣鍚庡簲璇ュ叧闂畠錛屼互闃叉瀹冨啀琚鐢ㄣ?#8220;鍏抽棴”灝辨槸浣挎枃浠舵寚閽堝彉閲忎笉鍐嶆寚鍚戣鏂囦歡錛屼嬌鍏惰劚閽┿傚嚱鏁頒嬌鐢ㄦ柟寮?/span>:

fclose(pFile);

闇瑕佹敞鎰忕殑鏄?/span>fclose鐨勫弬鏁板繀欏繪槸鏈夋晥鐨勬枃浠舵寚閽堝彉閲忥紝鍚﹀垯榪愯鏃朵細鎸傛帀銆?/span>

搴旇鍏繪垚鍦ㄦ枃浠舵暟鎹搷浣滃畬鎴愬悗鍏抽棴鏂囦歡鐨勪範鎯紝濡傛灉涓嶅叧闂枃浠跺皢浼氫涪澶辨暟鎹傚悓鏃訛紝鍦ㄥ悜鏂囦歡鍐欐暟鎹椂錛屾槸鐜板皢鏁版嵁杈撳嚭鍒扮紦鍐插尯錛屽緟緙撳啿鍖哄厖婊″悗鎵嶆寮忚緭鍑虹粰鏂囦歡銆傚鏋滅▼搴忚繍琛岀粨鏉熻岀紦鍐插尯騫舵湭鍏呮弧錛屽垯緙撳啿鍖轟腑鐨勬暟鎹皢浼氫涪澶便傚洜姝ゅ埄鐢ㄥ嚱鏁?/span>fclose鏉ュ叧闂枃浠跺彲浠ラ伩鍏嶈繖涓棶棰樸?/span>

褰撶劧錛岃繕鏈夊彟澶栦竴涓嚱鏁?/span>fflush錛屼篃鍙互鐢ㄦ潵灝嗙紦鍐插尯閲岀殑鏁版嵁杈撳嚭鍒版枃浠朵腑銆傚嚱鏁拌皟鐢ㄦ柟寮?/span>:

fflush(pFile);

 

 錛?/span>3錛夋枃浠剁殑璇誨啓

褰撴秹鍙婂埌澶ч噺鏁版嵁鐨勮鍐欐椂錛屽彲浠ラ噰鐢ㄥ嚱鏁?/span>fread鍜?/span>fwrite銆?/span>榪欎袱涓嚱鏁伴氬父鐢ㄤ簬浜岃繘鍒舵枃浠剁殑璇誨啓銆?/span>鍑芥暟璋冪敤鏂瑰紡濡備笅錛?/span>

fread(buffer, size, count, fp);

fwrite(buffer, size, count, fp);

buffer鏄竴涓寚閽堬紝鏄敤鏉ュ瓨鏀炬暟鎹殑鍙橀噺鎸囬拡錛屼緥濡傚唴緗被鍨嬪彉閲忕殑鎸囬拡錛岀粨鏋勪綋鍙橀噺鎸囬拡絳夈?/span>

size鏄璇誨啓鐨勫瓧鑺傛暟銆?/span>鐗瑰埆瑕佹敞鎰忕殑鏄紝姝ゅ騫朵笉鏄暟緇勭殑澶у皬錛岀粨鏋勪綋鍐呭彉閲忕殑涓暟絳夈傛渶濂介噰鐢?/span>sizeof鎿嶄綔絎︽潵姹傚緱buffer鐨勫唴瀛樺瓧鑺傛暟銆?/span>

count鏄?/span>size澶у皬鐨勯噸澶嶆鏁般?/span>

fp鏄枃浠舵寚閽堛?/span>

 

瀵逛簬榪欐牱鐨勭粨鏋勪綋錛?/span>

typedef struct {

    int clr_sel;             // color mode鐨勯夋嫨

    int fixval_sel;          // fixed value鐨勯夋嫨

    float thres_val;         // threshold value鐨勭‘瀹?/span>

    float thres_scrlbar_pos; // threshold scroll bar浣嶇疆鐨勭‘瀹?/span>

    int method_sel;          // analysis method鐨勯夋嫨

    int usediff_sel;         // use difference of MSA/TSE鏂瑰紡鐨勯夋嫨

    int usescat_sel;         // use MSA/TSE of scatter signal 鏂瑰紡鐨勯夋嫨

    int remxtalk_sel;        // remove crosstalk 鏂瑰紡鐨勯夋嫨

    float timewin_scrlbar_pos; // time window scroll bar浣嶇疆鐨勭‘瀹?/span>

    int timewin_sel;         // time window妯″紡鐨勯夋嫨

    int freq_sel;            // frequency selection妯″紡鐨勯夋嫨

    int path_sel;            // path selection妯″紡鐨勯夋嫨  

} IMG_SETTINGS;    

       IMG_SETTINGS m_img_settings;

鏂囦歡璇誨啓鎿嶄綔鏃訛紝鍙噰鐢ㄥ涓嬫柟寮忥細

fwrite(&m_img_settings, sizeof(m_img_settings), 1, pwFile);

fread(&m_img_settings, sizeof(m_img_settings), 1, prFile);

====================================================

 

濡傛灉鎯寵鍐欑壒瀹氭牸寮忕殑鏂囦歡錛屽彲閲囩敤fprintf鍜?/span>fscanf鍑芥暟銆?/span>榪欎袱涓嚱鏁伴氬父鏄拡瀵規枃鏈枃浠惰繘琛屾搷浣溿?/span>

鍑芥暟璋冪敤鏂瑰紡濡備笅錛?/span>

fprintf(pFile, “%d…”, i, j, k …);

fscanf(pFile, “%d…”, i j, k…);

鏍煎紡鍖栨椂鍙互瑙勫畾璇誨啓鏁版嵁鐨勭簿搴︼紝綾誨瀷錛屼互鍙婃暟鎹箣闂寸殑鍒嗗壊絎︾瓑銆?/span>

渚嬪錛?/span>

fprintf(pFile, " %d %d %d %d %d %d %d %d \n", sigSize, samp_points, samp_rate,40, avrag_num, 0, 0, 0);

fprintf(pFile, "%d %.2f %s %d %d %d %d \n", vpathdef[i].frequency1/1000,

                                   vpathdef[i].amplitude, sig_type.c_str(),     psnset->sensorArray[vpathdef[i].actuator-1].channel-tol,

                     psnset->sensorArray[vpathdef[i].sensor-1].channel-tol,  vpathdef[i].gain, 30);  

鐗瑰埆闇瑕佹敞鎰忕殑鏄紝濡傛灉鍐欏叆鐨勬暟鎹殑綾誨瀷鐩稿悓鏃訛紝涓嶅彲涓轟簡綆渚匡紝灝嗘牸寮忓寲鐨勫瓧絎︿覆鍐欐垚濡傛褰㈠紡(.., ”%d”,i,j,k…); // i,j,k…鍚屾暣鍨嬬被鍨嬨?/span>

濡傛灉榪欐牱鎿嶄綔鐨勮瘽錛岃鍐欑殑鏁版嵁渚垮彧鏈夋暟鎹?/span>i浜嗐?/span>

 

鏈鍚庨拡瀵逛竴涓潰璇曢鏉ュC璇█鎿嶄綔鏂囦歡鐨勬柟寮忎綔涓涓葷粨.

闈㈣瘯棰橈細緇欎綘涓涓暣鏁幫紝渚嬪12345錛屽皢榪欎釜鏁存暟淇濆瓨鍒版枃浠朵腑錛岃姹傚湪浠ヨ浜嬫湰鎵撳紑璇ユ枃浠舵椂錛屾樉紺虹殑鏄?/span>:12345銆?/span>

緇欏嚭涓夌浠g爜錛?/span>

錛?錛?span>    浠g爜1

FILE* pwFile = NULL;

pwFile = fopen(“c:\\Test.txt”, “w”); // create and open file with text mode.

int i = 12345;                       // However, write number with binary mode.

fwrite(&i, 4, 1, pwFile);      // sizeof(int) = 4.

fclose(fwFile);

========================

錛?錛?span>    浠g爜2

FILE* pwFile = NULL;

pwFile = fopen(“c:\\Test.txt”, “w”);

char ch[5] = {1+48, 2+48, 3+48, 4+48, 5+48 };

fwrite(ch, 1, 5, pwFile);      // sizeof(char) = 1, 5*sizeof(char) = 5

fclose(pwFile);

=======================

錛?錛?span>    浠g爜3

FILE* pwFile = NULL;

pwFile = fopen(“c:\\Test.txt”, “w”);

int i = 12345;

char ch[5];

itoa(i, ch, 10);        // transform int number to string

 

fwrite(ch, 1, 5, fwFile);

fclose(pFile);

==============================

錛?錛?span>    浠g爜4

FILE* pwFile = NULL;

pwFile = fopen(“c:\\Test.txt”, “w”);

int i = 12345;

fprintf(pwFile, “%d”, i);   // write number with specified format.

fclose(pwFile);

==============================

 

灝?/span>4縐嶄唬鐮佸湪vc涓繘琛岀紪璇戣繍琛岋紝鍙互鍙戠幇鍙湁鏂瑰紡錛?/span>1錛変笉婊¤凍棰樼洰瑕佹眰銆?br>


to be continued...


colys 2007-05-20 23:11 鍙戣〃璇勮
]]>
鑿滃崟緙栫▼涓撻http://m.shnenglu.com/colys/articles/24487.htmlcolyscolysSun, 20 May 2007 14:54:00 GMThttp://m.shnenglu.com/colys/articles/24487.htmlhttp://m.shnenglu.com/colys/comments/24487.htmlhttp://m.shnenglu.com/colys/articles/24487.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/24487.htmlhttp://m.shnenglu.com/colys/services/trackbacks/24487.html1.      鑿滃崟鍝嶅簲鐨勭被欏哄簭

渚濇鏄綾匯佹枃妗g被銆佹鏋剁被錛屾渶鍚庢墠鏄簲鐢ㄧ▼搴忕被銆?/span>

 

2.      Windows娑堟伅鐨勫垎綾?/span>

瀹為檯涓婏紝鑿滃崟鍛戒護涔熸槸涓縐嶆秷鎭傚湪Windows涓紝娑堟伅鍒嗕負浠ヤ笅3縐嶏細

錛?錛?span>    鏍囧噯娑堟伅

闄や簡WM_COMMAND涔嬪錛屾墍鏈変互WM_寮澶寸殑娑堟伅閮芥槸鏍囧噯娑堟伅銆備粠CWnd媧劇敓鐨勭被錛岄兘鍙互鎺ユ敹鍒拌綾繪秷鎭?/span>

錛?錛?span>    鍛戒護娑堟伅

   鏉ヨ嚜鑿滃崟銆佸姞閫熼敭鎴栧伐鍏鋒爮鎸夐挳鐨勬秷鎭傝繖綾繪秷鎭兘鏄互WM_COMMAND褰㈠紡鍛堢幇銆傚湪MFC涓紝閫氳繃鑿滃崟欏圭殑鏍囪瘑(ID)鏉ュ尯鍒嗕笉鍚岀殑鍛戒護娑堟伅錛涘湪SDK涓紝閫氳繃娑堟伅鐨?/span>wParam鍙傛暟鏉ユ爣璇嗐備粠CCmdTarget媧劇敓鐨勭被錛岄兘鍙互鎺ユ敹鍒拌繖綾繪秷鎭?/span>

錛?錛?span>    閫氬憡娑堟伅

   鐢辨帶浠朵駭鐢熺殑娑堟伅錛屼緥濡傛寜閽殑鍗曞嚮銆佸垪琛ㄦ鐨勯夋嫨絳夐兘浼氫駭鐢熻繖綾繪秷鎭紝鐩殑鏄負浜嗗悜鍏剁埗紿楀彛閫氱煡浜嬩歡鐨勫彂鐢熴傝繖綾繪秷鎭篃鏄互WM_COMMAND褰㈠紡鍛堢幇鐨勩備粠CCmdTarget媧劇敓鐨勭被錛岄兘鍙互鎺ユ敹鍒拌繖綾繪秷鎭?/span>

鐢變簬CWnd鏄粠CCmdTarget媧劇敓鐨勶紝鏁呬粠CWnd媧劇敓鐨勭被錛屽畠浠棦鍙互鎺ユ敹鏍囧噯娑堟伅錛屼篃鍙互鎺ユ敹鍛戒護娑堟伅鍜岄氬憡娑堟伅銆傝屽浜庨偅浜涗粠CCmdTarget媧劇敓鐨勭被錛屽垯鍙兘鎺ユ敹鍛戒護娑堟伅鍜岄氬憡娑堟伅錛屼笉鑳芥帴鏀舵爣鍑嗘秷鎭?/span>

 

3.      鑿滃崟鍛戒護娑堟伅璺敱鐨勫叿浣撹繃紼?/span>

褰撶偣鍑繪煇涓彍鍗曢」鏃訛紝鏈鍏堟帴鏀跺埌榪欎釜鑿滃崟鍛戒護娑堟伅鐨勬槸妗嗘灦綾匯傛鏋剁被灝嗘妸鎺ユ敹鍒扮殑榪欎釜娑堟伅浜ょ粰瀹冪殑瀛愮獥鍙o紝鍗寵綾伙紝鐢辮綾婚鍏堣繘琛屽鐞嗐傝綾婚鍏堟牴鎹懡浠ゆ秷鎭槧灝勬満鍒舵煡鎵捐嚜韜槸鍚﹀姝ゆ秷鎭繘琛屼簡鍝嶅簲錛屽鏋滃搷搴斾簡錛屽氨璋冪敤鍝嶅簲鍑芥暟瀵硅繖涓秷鎭繘琛屽鐞嗭紝娑堟伅璺敱榪囩▼緇撴潫錛涘鏋滆綾繪病鏈夊姝ゅ懡浠ゆ秷鎭仛澶勫搷搴旓紝灝變氦鐢辨枃妗g被錛屾枃妗g被鍚屾牱鏌ユ壘鑷韓鏄惁瀵硅繖涓彍鍗曞懡浠よ繘琛屼簡鍝嶅簲錛屽鏋滃搷搴斾簡錛屽氨鐢辨枃妗g被鐨勫懡浠ゆ秷鎭搷搴斿嚱鏁拌繘琛屽鐞嗭紝璺敱榪囩▼緇撴潫銆傚鏋滄枃妗g被涔熸湭鍋氬嚭鍝嶅簲錛屽氨鎶婅繖涓懡浠ゆ秷鎭氦榪樼粰瑙嗙被錛屽悗鑰呭張鎶婅娑堟伅浜よ繕緇欐鏋剁被銆傛鏋剁被鏌ョ湅鑷繁鏄惁瀵硅繖涓懡浠ゆ秷鎭繘琛屼簡鍝嶅簲錛屽鏋滃畠涔熸病鏈変綔澶勫搷搴旓紝灝辨妸榪欎釜鑿滃崟鍛戒護娑堟伅浜ゆ崲緇欏簲鐢ㄧ▼搴忕被錛岀敱鍚庤呮潵榪涜澶勭悊銆?/span>

 

4.      鑿滃崟鎿嶄綔

瑕佹兂鑾峰緱鏌愪釜鑿滃崟璧勬簮錛岄渶浣跨敤涓嬮潰鐨勫嚱鏁拌皟鐢細

CMenu* GetMenu() const ;

璇ュ嚱鏁拌皟鐢ㄨ呮槸CWnd鐨勫璞°傝繑鍥炲間負CMenu綾誨璞$殑鎸囬拡銆?/span>

閫氳繃鑾峰緱鐨勮彍鍗曟寚閽堜究鍙互鑾峰緱鍏朵笂鐨勬煇涓彍鍗曟爮鐨勬寚閽堜簡銆傝皟鐢ㄦ柟寮忎負錛?/span>

   CMenu* GetSubMenu(int nPos) const;

璋冪敤鑰呮槸鑿滃崟璧勬簮鐨勭被瀵硅薄鎸囬拡錛屾垨鑰呮槸鏌愪釜鑿滃崟鏍忕殑瀵硅薄鎸囬拡銆?/span>

濡傛灉鏌愪釜鑿滃崟鏍忎笅闈㈣繕鏈夊瓙鑿滃崟欏癸紝閫氳繃鍙互閫氳繃GetSubMenu鍑芥暟鏉ヨ幏寰楀叾瀛愯彍鍗曢」鐨勬搷浣滄寚閽堛傚瓙鑿滃崟欏圭殑绱㈠紩閮芥槸浠?/span>0寮濮嬬殑錛屽悓鏃跺垎鍓叉爮涔熸槸瑕佸崰鎹儲寮曞肩殑銆?/span>

 

5.      CASE錛?/span>

鍦ㄨ祫婧愮紪杈戝櫒涓紪杈?/span>Popup Menu璧勬簮: IDR_SENSOR_DRAW_MENU銆?/span>

Grids Style瀛愯彍鍗曚腑鐨勫悇涓夐」鏄浉浜掓帓鏂ョ殑銆傝姹傞夋嫨鍏朵腑鐨勪竴涓椂錛岄渶鍦ㄥ叾鑿滃崟鍓嶉潰鏍囧織閫夋嫨瀹?/span>·錛屽叾瀹冮兘涓轟負閫変腑銆備篃灝辨槸璇?/span>Style涓彧鑳介変腑涓涓?/span>

鍙噰鐢ㄤ袱縐嶆柟寮忥細

錛?/span>1錛夋槧灝勬秷鎭細ON_WM_CONTEXTMENU()

void ..::OnContextMenu(CWnd* /*pWnd*/, CPoint point)

錛?/span>2錛夋槧灝勬秷鎭細ON_WM_RBUTTONDOWN()

void ..::OnRightBtnDown(.. ..)

鍝嶅簲鍑芥暟瀹炵幇浠g爜錛?/span>

{

CMenu menu;

       menu.LoadMenu(IDR_SENSOR_DRAW_MENU); // 瑁呰澆鑿滃崟璧勬簮

       CMenu* pMenu = menu.GetSubMenu(0);   // 鑾峰緱Sensor Menu鑿滃崟鏍忕殑瀵硅薄鎸囬拡

       CMenu* pSubMenu = pMenu->GetSubMenu(0); // 鑾峰緱Grids Style瀛愯彍鍗曢」鐨勫璞℃寚閽?/span>

       // 浠ユ綾繪帹錛屽鏋滄槸Edit Structure瀛楄彍鍗曢」鐨勫璞℃寚閽堬紝鍙傛暟搴旇鏄?/span>1

       int idxsel = 0;

       switch (m_GridStyle) {

              case GRIDSOFF:

                     idxsel = 0;

                     break;

              case GRIDS10X:

                     idxsel = 2;           // separator is one resource, so take it into account.

                     break;

              case GRIDS20X:

                     idxsel = 3;

                     break;

              case GRIDS30X:

                     idxsel = 4;

                     break;

       }

// Grids Style瀛愯彍鍗曢」鍙堟湁N涓瓙鑿滃崟欏癸紝鏍規嵁绱㈠紩鍊間綅緗潵璁劇疆鍏剁姸鎬併?/span>

       pSubMenu->CheckMenuRadioItem(0, 4, idxsel, MF_BYPOSITION);

// 濡傛灉鏄?/span>WM_RBUTTONDOWN鍝嶅簲錛屽垯闇瑕佽皟鐢ㄥ嚱鏁?/span>

ClientToScreen(&point); // 灝嗗鎴峰潗鏍囪漿鍖栦負灞忓箷鍧愭爣銆?/span>

// 浠ヤ笅鍑芥暟鐨勫弬鏁?/span>x,y鏄睆騫曞潗鏍囧箋?/span>

       pMenu->TrackPopupMenu(TPM_RIGHTBUTTON,point.x,point.y,this,NULL);

}



colys 2007-05-20 22:54 鍙戣〃璇勮
]]>
VC涓璬ll鐨刲ib鏂囦歡鍜宒ll鏈変粈涔堜笉鍚岋紵 http://m.shnenglu.com/colys/articles/24350.htmlcolyscolysFri, 18 May 2007 14:08:00 GMThttp://m.shnenglu.com/colys/articles/24350.htmlhttp://m.shnenglu.com/colys/comments/24350.htmlhttp://m.shnenglu.com/colys/articles/24350.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/24350.htmlhttp://m.shnenglu.com/colys/services/trackbacks/24350.html.lib鏄湪浣犵殑紼嬪簭緙栬瘧榪炴帴鐨勬椂鍊欏氨榪炴帴鐨勬枃浠訛紝鍥犳浣犲繀欏誨憡鐭ョ紪璇戝櫒榪炴帴鐨刲ib鏂囦歡鍦ㄩ偅閲屻備竴鑸潵璇達紝涓庡姩鎬佽繛鎺ユ枃浠剁浉瀵規瘮錛宭ib鏂囦歡涔熻縐頒負鏄潤鎬佽繛鎺ュ簱銆傚綋浣犳妸浠g爜緙栬瘧鎴愯繖鍑犵鏍煎紡鐨勬枃浠舵椂錛屽湪浠ュ悗浠栦滑灝變笉鍙兘鍐嶈鏇存敼銆?
濡傛灉浣犳兂浣跨敤lib鏂囦歡錛屽氨蹇呴』錛?br>1 鍖呭惈涓涓搴旂殑澶存枃浠跺憡鐭ョ紪璇戝櫒lib鏂囦歡閲岄潰鐨勫叿浣撳唴瀹?br>2 璁劇疆lib鏂囦歡鍏佽緙栬瘧鍣ㄥ幓鏌ユ壘宸茬粡緙栬瘧濂界殑浜岃繘鍒朵唬鐮?
濡?鏋滀綘鎯充粠浣犵殑浠g爜鍒嗙涓涓猟ll鏂囦歡鍑烘潵浠f浛闈欐佽繛鎺ュ簱錛屼粛鐒墮渶瑕佷竴涓猯ib鏂囦歡銆傝繖涓猯ib鏂囦歡灝嗚榪炴帴鍒扮▼搴忓憡璇夋搷浣滅郴緇熷湪榪愯鐨勬椂鍊欎綘鎯崇敤鍒頒粈涔?dll鏂囦歡錛屼竴鑸儏鍐典笅錛宭ib鏂囦歡閲屾湁鐩稿簲鐨刣ll鏂囦歡鐨勫悕瀛楀拰涓涓寚鏄巇ll杈撳嚭鍑芥暟鍏ュ彛鐨勯『搴忚〃銆傚鏋滀笉鎯崇敤lib鏂囦歡鎴栬呮槸娌℃湁lib鏂囦歡錛屽彲浠?鐢╓IN32 API鍑芥暟LoadLibrary銆丟etProcAddress銆備簨瀹炰笂錛屾垜浠彲浠ュ湪Visual C++ IDE涓互浜岃繘鍒跺艦寮忔墦寮lib鏂囦歡錛屽ぇ澶氭儏鍐典笅浼氱湅鍒癆SCII鐮佹牸寮忕殑C++鍑芥暟鎴栦竴浜涢噸杞芥搷浣滅殑鍑芥暟鍚嶅瓧銆?
涓鑸垜浠渶涓昏鐨勫叧浜巐ib鏂囦歡鐨勯夯鐑﹀氨鏄嚭鐜皍nresolved symble 榪欑被閿欒錛岃繖灝辨槸lib鏂囦歡榪炴帴閿欒鎴栬呮病鏈夊寘鍚?c銆?cpp鏂囦歡鍒板伐紼嬮噷錛屽叧閿槸濡傛灉鍦–++宸ョ▼閲岀敤浜咰璇█鍐欑殑lib鏂囦歡錛屽氨蹇呴渶瑕佽繖鏍峰寘鍚細
extern "C"
{
#include "myheader.h"
}
榪欐槸鍥犱負C璇█鍐欑殑lib鏂囦歡娌℃湁C++鎵蹇呴』鐨勫悕瀛楃牬鍧忥紝C鍑芥暟涓嶈兘琚噸杞斤紝鍥犳榪炴帴鍣ㄤ細鍑洪敊銆?img src ="http://m.shnenglu.com/colys/aggbug/24350.html" width = "1" height = "1" />

colys 2007-05-18 22:08 鍙戣〃璇勮
]]>
鐢?C 璇█緙栧啓 Windows 鏈嶅姟紼嬪簭鐨勪簲涓楠?/title><link>http://m.shnenglu.com/colys/articles/24238.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Wed, 16 May 2007 11:56:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/24238.html</guid><wfw:comment>http://m.shnenglu.com/colys/comments/24238.html</wfw:comment><comments>http://m.shnenglu.com/colys/articles/24238.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colys/comments/commentRss/24238.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colys/services/trackbacks/24238.html</trackback:ping><description><![CDATA[<table cellSpacing=0 cellPadding=0 width="100%" border=0> <tbody> <tr> <td> <p><strong>Author: Yevgeny Menaker</strong> <br><br><br><a href="http://m.shnenglu.com/Files/colys/memorystatus.rar">涓嬭澆浠g爜</a><br>鍘熸枃鍑哄錛?a target=_blank>Five Steps to Writing Windows Services in C</a><br><br><strong>鎽樿</strong><br><br>銆銆Windows 鏈嶅姟琚璁$敤浜庨渶瑕佸湪鍚庡彴榪愯鐨勫簲鐢ㄧ▼搴忎互鍙婂疄鐜版病鏈夌敤鎴蜂氦浜掔殑浠誨姟銆備負浜嗗涔犺繖縐嶆帶鍒跺彴搴旂敤紼嬪簭鐨勫熀紜鐭ヨ瘑錛孋錛堜笉鏄疌++錛夋槸鏈浣抽夋嫨銆傛湰鏂囧皢寤虹珛騫跺疄鐜頒竴涓畝鍗曠殑鏈嶅姟紼嬪簭錛屽叾鍔熻兘鏄煡璇㈢郴緇熶腑鍙敤鐗╃悊鍐呭瓨鏁伴噺錛岀劧鍚庡皢緇撴灉鍐欏叆涓涓枃鏈枃浠躲傛渶鍚庯紝浣犲彲浠ョ敤鎵瀛︾煡璇嗙紪鍐欒嚜宸辯殑 Windows 鏈嶅姟銆?br>銆銆褰撳垵鎴戝啓絎竴涓?NT 鏈嶅姟鏃訛紝鎴戝埌 MSDN 涓婃壘渚嬪瓙銆傚湪閭i噷鎴戞壘鍒頒簡涓綃?Nigel Thompson 鍐欑殑鏂囩珷錛?#8220;<a target=_blank><u><font color=#0000ff>Creating a Simple Win32 Service in C++</font></u></a>”錛岃繖綃囨枃绔犻檮甯︿竴涓?C++ 渚嬪瓙銆傝櫧鐒惰繖綃囨枃绔犲緢濂藉湴瑙i噴浜嗘湇鍔$殑寮鍙戣繃紼嬶紝浣嗘槸錛屾垜浠嶇劧鎰熻緙哄皯鎴戦渶瑕佺殑閲嶈淇℃伅銆傛垜鎯崇悊瑙i氳繃浠涔堟鏋訛紝璋冪敤浠涔堝嚱鏁幫紝浠ュ強浣曟椂璋冪敤錛屼絾 C++ 鍦ㄨ繖鏂歸潰娌℃湁璁╂垜杞繪澗澶氬皯銆傞潰鍚戝璞$殑鏂規硶鍥虹劧鏂逛究錛屼絾鐢變簬鐢ㄧ被瀵瑰簳灞?Win32 鍑芥暟璋冪敤榪涜浜嗗皝瑁咃紝瀹冧笉鍒╀簬瀛︿範鏈嶅姟紼嬪簭鐨勫熀鏈煡璇嗐傝繖灝辨槸涓轟粈涔堟垜瑙夊緱 C 鏇村姞閫傚悎浜庣紪鍐欏垵綰ф湇鍔$▼搴忔垨鑰呭疄鐜扮畝鍗曞悗鍙頒換鍔$殑鏈嶅姟銆傚湪浣犲鏈嶅姟紼嬪簭鏈変簡鍏呭垎閫忓交鐨勭悊瑙d箣鍚庯紝鐢?C++ 緙栧啓鎵嶈兘娓稿垉鏈変綑銆傚綋鎴戠寮鍘熸潵鐨勫伐浣滃矖浣嶏紝涓嶅緱涓嶅悜鍙︿竴涓漢杞Щ鎴戠殑鐭ヨ瘑鐨勬椂鍊欙紝鍒╃敤鎴戠敤 C 鎵鍐欑殑渚嬪瓙灝遍潪甯稿鏄撹В閲?NT 鏈嶅姟涔嬫墍浠ョ劧銆?br>銆銆鏈嶅姟鏄竴涓繍琛屽湪鍚庡彴騫跺疄鐜板嬁闇鐢ㄦ埛浜や簰鐨勪換鍔$殑鎺у埗鍙扮▼搴忋俉indows NT/2000/XP 鎿嶄綔緋葷粺鎻愪緵涓烘湇鍔$▼搴忔彁渚涗笓闂ㄧ殑鏀寔銆備漢浠彲浠ョ敤鏈嶅姟鎺у埗闈㈡澘鏉ラ厤緗畨瑁呭ソ鐨勬湇鍔$▼搴忥紝涔熷氨鏄?Windows 2000/XP 鎺у埗闈㈡澘|綆$悊宸ュ叿涓殑“鏈嶅姟”錛堟垨鍦?#8220;寮濮?#8221;|“榪愯”瀵硅瘽妗嗕腑杈撳叆 services.msc /s鈥斺旇瘧鑰呮敞錛夈傚彲浠ュ皢鏈嶅姟閰嶇疆鎴愭搷浣滅郴緇熷惎鍔ㄦ椂鑷姩鍚姩錛岃繖鏍蜂綘灝變笉蹇呮瘡嬈″啀閲嶅惎緋葷粺鍚庤繕瑕佹墜鍔ㄥ惎鍔ㄦ湇鍔°?br>銆銆鏈枃灝嗛鍏堣В閲婂浣曞垱寤轟竴涓畾鏈熸煡璇㈠彲鐢ㄧ墿鐞嗗唴瀛樺茍灝嗙粨鏋滃啓鍏ユ煇涓枃鏈枃浠剁殑鏈嶅姟銆傜劧鍚庢寚瀵間綘瀹屾垚鐢熸垚錛屽畨瑁呭拰瀹炵幇鏈嶅姟鐨勬暣涓繃紼嬨?br><br><br><strong>絎竴姝ワ細涓誨嚱鏁板拰鍏ㄥ眬瀹氫箟</strong><br><br>棣栧厛錛屽寘鍚墍闇鐨勫ご鏂囦歡銆備緥瀛愯璋冪敤 Win32 鍑芥暟錛坵indows.h錛夊拰紓佺洏鏂囦歡鍐欏叆錛坰tdio.h錛夛細</p> <pre>#include <windows.h> #include <stdio.h></pre> <p>鎺ョ潃錛屽畾涔変袱涓父閲忥細</p> <pre>#define SLEEP_TIME 5000 #define LOGFILE "C:\\MyServices\\memstatus.txt"</pre> <p>SLEEP_TIME 鎸囧畾涓ゆ榪炵畫鏌ヨ鍙敤鍐呭瓨涔嬮棿鐨勬縐掗棿闅斻傚湪絎簩姝ヤ腑緙栧啓鏈嶅姟宸ヤ綔寰幆鐨勬椂鍊欒浣跨敤璇ュ父閲忋?br>LOGFILE 瀹氫箟鏃ュ織鏂囦歡鐨勮礬寰勶紝浣犲皢浼氱敤 WriteToLog 鍑芥暟灝嗗唴瀛樻煡璇㈢殑緇撴灉杈撳嚭鍒拌鏂囦歡錛學riteToLog 鍑芥暟瀹氫箟濡備笅錛?/p> <pre>int WriteToLog(char* str) { FILE* log; log = fopen(LOGFILE, "a+"); if (log == NULL) return -1; fprintf(log, "%s\n", str); fclose(log); return 0; }</pre> <p>澹版槑鍑犱釜鍏ㄥ眬鍙橀噺錛屼互渚垮湪紼嬪簭鐨勫涓嚱鏁頒箣闂村叡浜畠浠箋傛澶栵紝鍋氫竴涓嚱鏁扮殑鍓嶅悜瀹氫箟錛?/p> <pre>SERVICE_STATUS ServiceStatus; SERVICE_STATUS_HANDLE hStatus; void ServiceMain(int argc, char** argv); void ControlHandler(DWORD request); int InitService();</pre> <p>銆銆鐜板湪錛屽噯澶囧伐浣滃凡緇忓氨緇紝浣犲彲浠ュ紑濮嬬紪鐮佷簡銆傛湇鍔$▼搴忔帶鍒跺彴紼嬪簭鐨勪竴涓瓙闆嗐傚洜姝わ紝寮濮嬩綘鍙互瀹氫箟涓涓?main 鍑芥暟錛屽畠鏄▼搴忕殑鍏ュ彛鐐廣傚浜庢湇鍔$▼搴忔潵璇達紝main 鐨勪唬鐮佷護浜烘儕璁跺湴綆鐭紝鍥犱負瀹冨彧鍒涘緩鍒嗘淳琛ㄥ茍鍚姩鎺у埗鍒嗘淳鏈恒?/p> <pre>void main() { SERVICE_TABLE_ENTRY ServiceTable[2]; ServiceTable[0].lpServiceName = "MemoryStatus"; ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain; ServiceTable[1].lpServiceName = NULL; ServiceTable[1].lpServiceProc = NULL; // 鍚姩鏈嶅姟鐨勬帶鍒跺垎媧炬満綰跨▼ StartServiceCtrlDispatcher(ServiceTable); }</pre> <p>銆銆涓涓▼搴忓彲鑳藉寘鍚嫢騫蹭釜鏈嶅姟銆傛瘡涓涓湇鍔¢兘蹇呴』鍒椾簬涓撻棬鐨勫垎媧捐〃涓紙涓烘璇ョ▼搴忓畾涔変簡涓涓?ServiceTable 緇撴瀯鏁扮粍錛夈傝繖涓〃涓殑姣忎竴欏歸兘瑕佸湪 SERVICE_TABLE_ENTRY 緇撴瀯涔嬩腑銆傚畠鏈変袱涓煙錛?/p> <ul> <li>lpServiceName: 鎸囧悜琛ㄧず鏈嶅姟鍚嶇О瀛楃涓茬殑鎸囬拡錛涘綋瀹氫箟浜嗗涓湇鍔℃椂錛岄偅涔堣繖涓煙蹇呴』鎸囧畾錛? <li>lpServiceProc: 鎸囧悜鏈嶅姟涓誨嚱鏁扮殑鎸囬拡錛堟湇鍔″叆鍙g偣錛夛紱 </li> </ul> <p>銆銆鍒嗘淳琛ㄧ殑鏈鍚庝竴欏瑰繀欏繪槸鏈嶅姟鍚嶅拰鏈嶅姟涓誨嚱鏁板煙鐨?NULL 鎸囬拡錛屾枃鏈緥瀛愮▼搴忎腑鍙涓諱竴涓湇鍔★紝鎵浠ユ湇鍔″悕鐨勫畾涔夋槸鍙夌殑銆?br>銆銆鏈嶅姟鎺у埗綆$悊鍣紙SCM錛歋ervices Control Manager錛夋槸涓涓鐞嗙郴緇熸墍鏈夋湇鍔$殑榪涚▼銆傚綋 SCM 鍚姩鏌愪釜鏈嶅姟鏃訛紝瀹冪瓑寰呮煇涓繘紼嬬殑涓葷嚎紼嬫潵璋冪敤 StartServiceCtrlDispatcher 鍑芥暟銆傚皢鍒嗘淳琛ㄤ紶閫掔粰 StartServiceCtrlDispatcher銆傝繖灝嗘妸璋冪敤榪涚▼鐨勪富綰跨▼杞崲涓烘帶鍒跺垎媧懼櫒銆傝鍒嗘淳鍣ㄥ惎鍔ㄤ竴涓柊綰跨▼錛岃綰跨▼榪愯鍒嗘淳琛ㄤ腑姣忎釜鏈嶅姟鐨?ServiceMain 鍑芥暟錛堟湰鏂囦緥瀛愪腑鍙湁涓涓湇鍔★級鍒嗘淳鍣ㄨ繕鐩戣紼嬪簭涓墍鏈夋湇鍔$殑鎵ц鎯呭喌銆傜劧鍚庡垎媧懼櫒灝嗘帶鍒惰姹備粠 SCM 浼犵粰鏈嶅姟銆?br><br>娉ㄦ剰錛氬鏋?StartServiceCtrlDispatcher 鍑芥暟30縐掓病鏈夎璋冪敤錛屼究浼氭姤閿欙紝涓轟簡閬垮厤榪欑鎯呭喌錛屾垜浠繀欏誨湪 ServiceMain 鍑芥暟涓紙鍙傝鏈枃渚嬪瓙錛夋垨鍦ㄩ潪涓誨嚱鏁扮殑鍗曠嫭綰跨▼涓垵濮嬪寲鏈嶅姟鍒嗘淳琛ㄣ傛湰鏂囨墍鎻忚堪鐨勬湇鍔′笉闇瑕侀槻鑼冭繖鏍風殑鎯呭喌銆?br><br>銆銆鍒嗘淳琛ㄤ腑鎵鏈夌殑鏈嶅姟鎵ц瀹屼箣鍚庯紙渚嬪錛岀敤鎴烽氳繃“鏈嶅姟”鎺у埗闈㈡澘紼嬪簭鍋滄瀹冧滑錛夛紝鎴栬呭彂鐢熼敊璇椂銆係tartServiceCtrlDispatcher 璋冪敤榪斿洖銆傜劧鍚庝富榪涚▼緇堟銆?br><br><br><strong>絎簩姝ワ細ServiceMain 鍑芥暟</strong><br><br>銆銆<a target=_blank><u><font color=#0000ff>Listing 1</font></u></a> 灞曠ず浜?ServiceMain 鐨勪唬鐮併傝鍑芥暟鏄湇鍔$殑鍏ュ彛鐐廣傚畠榪愯鍦ㄤ竴涓崟鐙殑綰跨▼褰撲腑錛岃繖涓嚎紼嬫槸鐢辨帶鍒跺垎媧懼櫒鍒涘緩鐨勩係erviceMain 搴旇灝藉彲鑳芥棭鏃╀負鏈嶅姟娉ㄥ唽鎺у埗澶勭悊鍣ㄣ傝繖瑕侀氳繃璋冪敤 RegisterServiceCtrlHadler 鍑芥暟鏉ュ疄鐜般備綘瑕佸皢涓や釜鍙傛暟浼犻掔粰姝ゅ嚱鏁幫細鏈嶅姟鍚嶅拰鎸囧悜 ControlHandlerfunction 鐨勬寚閽堛?br>銆銆瀹冩寚紺烘帶鍒跺垎媧懼櫒璋冪敤 ControlHandler 鍑芥暟澶勭悊 SCM 鎺у埗璇鋒眰銆傛敞鍐屽畬鎺у埗澶勭悊鍣ㄤ箣鍚庯紝鑾峰緱鐘舵佸彞鏌勶紙hStatus錛夈傞氳繃璋冪敤 SetServiceStatus 鍑芥暟錛岀敤 hStatus 鍚?SCM 鎶ュ憡鏈嶅姟鐨勭姸鎬併?br><a target=_blank><u><font color=#0000ff>Listing 1</font></u></a> 灞曠ず浜嗗浣曟寚瀹氭湇鍔$壒寰佸拰鍏跺綋鍓嶇姸鎬佹潵鍒濆鍖?ServiceStatus 緇撴瀯錛孲erviceStatus 緇撴瀯鐨勬瘡涓煙閮芥湁鍏剁敤閫旓細 <ul> <li>dwServiceType錛氭寚紺烘湇鍔$被鍨嬶紝鍒涘緩 Win32 鏈嶅姟銆傝祴鍊?SERVICE_WIN32錛? <li>dwCurrentState錛氭寚瀹氭湇鍔$殑褰撳墠鐘舵併傚洜涓烘湇鍔$殑鍒濆鍖栧湪榪欓噷娌℃湁瀹屾垚錛屾墍浠ヨ繖閲岀殑鐘舵佷負 SERVICE_START_PENDING錛? <li>dwControlsAccepted錛氳繖涓煙閫氱煡 SCM 鏈嶅姟鎺ュ彈鍝釜鍩熴傛湰鏂囦緥瀛愭槸鍏佽 STOP 鍜?SHUTDOWN 璇鋒眰銆傚鐞嗘帶鍒惰姹傚皢鍦ㄧ涓夋璁ㄨ錛? <li>dwWin32ExitCode 鍜?dwServiceSpecificExitCode錛氳繖涓や釜鍩熷湪浣犵粓姝㈡湇鍔″茍鎶ュ憡閫鍑虹粏鑺傛椂寰堟湁鐢ㄣ傚垵濮嬪寲鏈嶅姟鏃跺茍涓嶉鍑猴紝鍥犳錛屽畠浠殑鍊間負 0錛? <li>dwCheckPoint 鍜?dwWaitHint錛氳繖涓や釜鍩熻〃紺哄垵濮嬪寲鏌愪釜鏈嶅姟榪涚▼鏃惰30縐掍互涓娿傛湰鏂囦緥瀛愭湇鍔$殑鍒濆鍖栬繃紼嬪緢鐭紝鎵浠ヨ繖涓や釜鍩熺殑鍊奸兘涓?0銆?</li> </ul> <p>銆銆璋冪敤 SetServiceStatus 鍑芥暟鍚?SCM 鎶ュ憡鏈嶅姟鐨勭姸鎬佹椂銆傝鎻愪緵 hStatus 鍙ユ焺鍜?ServiceStatus 緇撴瀯銆傛敞鎰?ServiceStatus 涓涓叏灞鍙橀噺錛屾墍浠ヤ綘鍙互璺ㄥ涓嚱鏁頒嬌鐢ㄥ畠銆係erviceMain 鍑芥暟涓紝浣犵粰緇撴瀯鐨勫嚑涓煙璧嬪鹼紝瀹冧滑鍦ㄦ湇鍔¤繍琛岀殑鏁翠釜榪囩▼涓兘淇濇寔涓嶅彉錛屾瘮濡傦細dwServiceType銆?br>銆銆鍦ㄦ姤鍛婁簡鏈嶅姟鐘舵佷箣鍚庯紝浣犲彲浠ヨ皟鐢?InitService 鍑芥暟鏉ュ畬鎴愬垵濮嬪寲銆傝繖涓嚱鏁板彧鏄坊鍔犱竴涓鏄庢у瓧絎︿覆鍒版棩蹇楁枃浠躲傚涓嬮潰浠g爜鎵紺猴細</p> <pre>// 鏈嶅姟鍒濆鍖? int InitService() { int result; result = WriteToLog("Monitoring started."); return(result); }</pre> <p>銆銆鍦?ServiceMain 涓紝媯鏌?InitService 鍑芥暟鐨勮繑鍥炲箋傚鏋滃垵濮嬪寲鏈夐敊錛堝洜涓烘湁鍙兘鍐欐棩蹇楁枃浠跺け璐ワ級錛屽垯灝嗘湇鍔$姸鎬佺疆涓虹粓姝㈠茍閫鍑?ServiceMain錛?/p> <pre>error = InitService(); if (error) { // 鍒濆鍖栧け璐ワ紝緇堟鏈嶅姟 ServiceStatus.dwCurrentState = SERVICE_STOPPED; ServiceStatus.dwWin32ExitCode = -1; SetServiceStatus(hStatus, &ServiceStatus); // 閫鍑?ServiceMain return; }</pre> <p>濡傛灉鍒濆鍖栨垚鍔燂紝鍒欏悜 SCM 鎶ュ憡鐘舵侊細</p> <pre>// 鍚?SCM 鎶ュ憡榪愯鐘舵? ServiceStatus.dwCurrentState = SERVICE_RUNNING; SetServiceStatus (hStatus, &ServiceStatus);</pre> <p>鎺ョ潃錛屽惎鍔ㄥ伐浣滃驚鐜傛瘡浜旂閽熸煡璇竴涓彲鐢ㄧ墿鐞嗗唴瀛樺茍灝嗙粨鏋滃啓鍏ユ棩蹇楁枃浠躲?br><br>濡?<a target=_blank><u><font color=#0000ff>Listing 1</font></u></a> 鎵紺猴紝寰幆涓鐩村埌鏈嶅姟鐨勭姸鎬佷負 SERVICE_RUNNING 鎴栨棩蹇楁枃浠跺啓鍏ュ嚭閿欎負姝€傜姸鎬佸彲鑳藉湪 ControlHandler 鍑芥暟鍝嶅簲 SCM 鎺у埗璇鋒眰鏃朵慨鏀廣?br> <br><br><strong>絎笁姝ワ細澶勭悊鎺у埗璇鋒眰</strong><br><br>銆銆鍦ㄧ浜屾涓紝浣犵敤 ServiceMain 鍑芥暟娉ㄥ唽浜嗘帶鍒跺鐞嗗櫒鍑芥暟銆傛帶鍒跺鐞嗗櫒涓庡鐞嗗悇縐?Windows 娑堟伅鐨勭獥鍙e洖璋冨嚱鏁伴潪甯哥被浼箋傚畠媯鏌?SCM 鍙戦佷簡浠涔堣姹傚茍閲囧彇鐩稿簲琛屽姩銆?br>銆銆姣忔浣犺皟鐢?SetServiceStatus 鍑芥暟鐨勬椂鍊欙紝蹇呴』鎸囧畾鏈嶅姟鎺ユ敹 STOP 鍜?SHUTDOWN 璇鋒眰銆?a target=_blank><u><font color=#0000ff>Listing 2</font></u></a> 紺鴻寖浜嗗浣曞湪 ControlHandler 鍑芥暟涓鐞嗗畠浠?br>銆銆STOP 璇鋒眰鏄?SCM 緇堟鏈嶅姟鐨勬椂鍊欏彂閫佺殑銆備緥濡傦紝濡傛灉鐢ㄦ埛鍦?#8220;鏈嶅姟”鎺у埗闈㈡澘涓墜鍔ㄧ粓姝㈡湇鍔°係HUTDOWN 璇鋒眰鏄叧闂満鍣ㄦ椂錛岀敱 SCM 鍙戦佺粰鎵鏈夎繍琛屼腑鏈嶅姟鐨勮姹傘備袱縐嶆儏鍐電殑澶勭悊鏂瑰紡鐩稿悓錛?/p> <ul> <li>鍐欐棩蹇楁枃浠訛紝鐩戣鍋滄錛? <li>鍚?SCM 鎶ュ憡 SERVICE_STOPPED 鐘舵侊紱 </li> </ul> <p>銆銆鐢變簬 ServiceStatus 緇撴瀯瀵逛簬鏁翠釜紼嬪簭鑰岃█涓哄叏灞閲忥紝ServiceStatus 涓殑宸ヤ綔寰幆鍦ㄥ綋鍓嶇姸鎬佹敼鍙樻垨鏈嶅姟緇堟鍚庡仠姝€傚叾瀹冪殑鎺у埗璇鋒眰濡傦細PAUSE 鍜?CONTINUE 鍦ㄦ湰鏂囩殑渚嬪瓙娌℃湁澶勭悊銆?br>銆銆鎺у埗澶勭悊鍣ㄥ嚱鏁板繀欏繪姤鍛婃湇鍔$姸鎬侊紝鍗充究 SCM 姣忔鍙戦佹帶鍒惰姹傜殑鏃跺欑姸鎬佷繚鎸佺浉鍚屻傚洜姝わ紝涓嶇鍝嶅簲浠涔堣姹傦紝閮借璋冪敤 SetServiceStatus銆?br><br><img height=452 src="http://www.vckbase.com/document/journal/vckbase42/images/5stepsimg1.gif" width=690 border=0><br>鍥句竴 鏄劇ず MemoryStatus 鏈嶅姟鐨勬湇鍔℃帶鍒墮潰鏉?br><br><br><strong>絎洓姝ワ細瀹夎鍜岄厤緗湇鍔?/strong><br><br>銆銆紼嬪簭緙栧ソ浜嗭紝灝嗕箣緙栬瘧鎴?exe 鏂囦歡銆傛湰鏂囦緥瀛愬垱寤虹殑鏂囦歡鍙?MemoryStatus.exe錛屽皢瀹冩嫹璐濆埌 C:\MyServices 鏂囦歡澶廣備負浜嗗湪鏈哄櫒涓婂畨瑁呰繖涓湇鍔★紝闇瑕佺敤 SC.EXE 鍙墽琛屾枃浠訛紝瀹冩槸 Win32 Platform SDK 涓檮甯︾殑涓涓伐鍏楓傦紙璇戣呮敞錛歏isaul Studio .NET 2003 IDE 鐜涓篃鏈夎繖涓伐鍏鳳紝鍏蜂綋瀛樻斁浣嶇疆鍦細C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin\winnt錛夈備嬌鐢ㄨ繖涓疄鐢ㄥ伐鍏峰彲浠ュ畨瑁呭拰縐婚櫎鏈嶅姟銆傚叾瀹冩帶鍒舵搷浣滃皢閫氳繃鏈嶅姟鎺у埗闈㈡澘鏉ュ畬鎴愩備互涓嬫槸鐢ㄥ懡浠よ瀹夎 MemoryStatus 鏈嶅姟鐨勬柟娉曪細</p> <pre>sc create MemoryStatus binpath= c:\MyServices\MemoryStatus.exe</pre> <p>銆銆鍙戝嚭姝ゅ垱寤哄懡浠ゃ傛寚瀹氭湇鍔″悕鍜屼簩榪涘埗鏂囦歡鐨勮礬寰勶紙娉ㄦ剰 binpath= 鍜岃礬寰勪箣闂寸殑閭d釜絀烘牸錛夈傚畨瑁呮垚鍔熷悗錛屼究鍙互鐢ㄦ湇鍔℃帶鍒墮潰鏉挎潵鎺у埗榪欎釜鏈嶅姟錛堝弬瑙佸浘涓錛夈傜敤鎺у埗闈㈡澘鐨勫伐鍏鋒爮鍚姩鍜岀粓姝㈣繖涓湇鍔°?br><br><img height=550 src="http://www.vckbase.com/document/journal/vckbase42/images/5stepsimg2.gif" width=542 border=0><br>鍥句簩 MemoryStatus 鏈嶅姟鐨勫睘鎬х獥鍙?br><br>銆銆MemoryStatus 鐨勫惎鍔ㄧ被鍨嬫槸鎵嬪姩錛屼篃灝辨槸璇存牴鎹渶瑕佹潵鍚姩榪欎釜鏈嶅姟銆傚彸閿崟鍑昏鏈嶅姟錛岀劧鍚庨夋嫨涓婁笅鏂囪彍鍗曚腑鐨?#8220;灞炴?#8221;鑿滃崟欏癸紝姝ゆ椂鏄劇ず璇ユ湇鍔$殑灞炴х獥鍙c傚湪榪欓噷鍙互淇敼鍚姩綾誨瀷浠ュ強鍏跺畠璁劇疆銆備綘榪樺彲浠ヤ粠“甯歌”鏍囩涓惎鍔?鍋滄鏈嶅姟銆備互涓嬫槸浠庣郴緇熶腑縐婚櫎鏈嶅姟鐨勬柟娉曪細</p> <pre>sc delete MemoryStatus</pre> <p>鎸囧畾 “delete” 閫夐」鍜屾湇鍔″悕銆傛鏈嶅姟灝嗚鏍囪涓哄垹闄わ紝涓嬫瑗塊氶噸鍚悗錛岃鏈嶅姟灝嗚瀹屽叏縐婚櫎銆?br><br><br><strong>絎簲姝ワ細嫻嬭瘯鏈嶅姟</strong><br><br>銆銆浠庢湇鍔℃帶鍒墮潰鏉垮惎鍔?MemoryStatus 鏈嶅姟銆傚鏋滃垵濮嬪寲涓嶅嚭閿欙紝琛ㄧず鍚姩鎴愬姛銆傝繃涓浼氬効灝嗘湇鍔″仠姝€傛鏌ヤ竴涓?C:\MyServices 鏂囦歡澶逛腑 memstatus.txt 鏂囦歡鐨勬湇鍔¤緭鍑恒傚湪鎴戠殑鏈哄櫒涓婅緭鍑烘槸榪欐牱鐨勶細</p> <pre>Monitoring started. 273469440 273379328 273133568 273084416 Monitoring stopped.</pre> <p>銆銆涓轟簡嫻嬭瘯 MemoryStatus 鏈嶅姟鍦ㄥ嚭閿欐儏鍐典笅鐨勮涓猴紝鍙互灝?memstatus.txt 鏂囦歡璁劇疆鎴愬彧璇匯傝繖鏍蜂竴鏉ワ紝鏈嶅姟搴旇鏃犳硶鍚姩銆?br>銆銆鍘繪帀鍙灞炴э紝鍚姩鏈嶅姟錛屽湪灝嗘枃浠惰鎴愬彧璇匯傛湇鍔″皢鍋滄鎵ц錛屽洜涓烘鏃舵棩蹇楁枃浠跺啓鍏ュけ璐ャ傚鏋滀綘鏇存柊鏈嶅姟鎺у埗闈㈡澘鐨勫唴瀹癸紝浼氬彂鐜版湇鍔$姸鎬佹槸宸茬粡鍋滄銆?br> <br><br><strong>寮鍙戞洿澶ф洿濂界殑鏈嶅姟紼嬪簭</strong><br><br>銆銆鐞嗚В Win32 鏈嶅姟鐨勫熀鏈蹇碉紝浣夸綘鑳芥洿濂藉湴鐢?C++ 鏉ヨ璁″寘瑁呯被銆傚寘瑁呯被闅愯棌浜嗗搴曞眰 Win32 鍑芥暟鐨勮皟鐢ㄥ茍鎻愪緵浜嗕竴縐嶈垝閫傜殑閫氱敤鎺ュ彛銆備慨鏀?MemoryStatus 紼嬪簭浠g爜錛屽垱寤烘弧瓚寵嚜宸遍渶瑕佺殑鏈嶅姟錛佷負浜嗗疄鐜版瘮鏈枃渚嬪瓙鎵紺鴻寖鐨勬洿澶嶆潅鐨勪換鍔★紝浣犲彲浠ュ垱寤哄綰跨▼鐨勬湇鍔★紝灝嗕綔涓氬垝鍒嗘垚鍑犱釜宸ヤ綔鑰呯嚎紼嬪茍浠?ServiceMain 鍑芥暟涓洃瑙嗗畠浠殑鎵ц銆?br>銆</p> </td> </tr> <tr> <td><img src="http://www.vckbase.com/image/paragraph.gif"> <strong>浣滆呯畝浠?/strong><br>銆銆銆銆<strong>Yevgeny Menaker</strong> 鏄竴鍚嶆湁鐫瓚呰繃5騫寸粡楠屽紑鍙戜漢鍛橈紝浣滃鍜?Linux 欏鵑棶銆傝繃鍘葷殑涓夊勾錛孻evgeny 涓撴敞浜庡紑鍙戞柊鐨勯珮綰х殑 Internet 鎶鏈備粬鐗靛ご緙栧啓浜嗐奝rogramming Perl in the .NET Environment銆嬩竴涔︼紙Prentice-Hall錛夈傛澶栵紝浣滀負 Linux 欏鵑棶錛屼粬榪樺湪 Object Innovations 浠昏亴銆俌evgeny Menaker 鐨勮仈緋繪柟寮忔槸錛歫eka_books@hotmail.com</td> </tr> </tbody> </table><img src ="http://m.shnenglu.com/colys/aggbug/24238.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-05-16 19:56 <a href="http://m.shnenglu.com/colys/articles/24238.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>紿楀彛鍏ㄥ睆浠g爜http://m.shnenglu.com/colys/articles/24174.htmlcolyscolysTue, 15 May 2007 14:48:00 GMThttp://m.shnenglu.com/colys/articles/24174.htmlhttp://m.shnenglu.com/colys/comments/24174.htmlhttp://m.shnenglu.com/colys/articles/24174.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/24174.htmlhttp://m.shnenglu.com/colys/services/trackbacks/24174.html 鍏ㄥ睆

 1 
 2  CMDIChildWnd* pChild=MDIGetActive();
 3  if(!pChild) return;
 4  m_bToolBarWasVisible=(m_wndToolBar.IsWindowVisible()!=0);
 5  m_wndToolBar.ShowWindow(SW_HIDE);//闅愯棌宸ュ叿鏍?/span>
 6  m_bStatusBarWasVisible=(m_wndStatusBar.IsWindowVisible()!=0);
 7  m_wndStatusBar.ShowWindow(SW_HIDE);//闅愯棌鐘舵佹爮
 8 
 9  // first create the new toolbar
10  // this will contain the full-screen off button
11  m_pwndFullScreenBar=new CToolBar;
12  m_pwndFullScreenBar->Create(this);
13  m_pwndFullScreenBar->LoadToolBar(IDR_FULLSCREEN);//鏄劇ず閫鍑哄叏灞忓伐鍏鋒爮
14  m_pwndFullScreenBar->SetBarStyle(m_pwndFullScreenBar->GetBarStyle() |
15   CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
16  // to look better:
17  m_pwndFullScreenBar->ModifyStyle(0, TBSTYLE_FLAT);
18  m_pwndFullScreenBar->EnableDocking(0);
19 
20  // place the full-screen off button somewhere:
21  CPoint pt(300,200);
22  FloatControlBar(m_pwndFullScreenBar,pt);
23  
24  // now save the old positions of the main and child windows
25  GetWindowRect(&m_mainRect);
26 
27  // remove the caption of the mainWnd:
28  LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
29  style&=~WS_CAPTION;
30  ::SetWindowLong(m_hWnd,GWL_STYLE,style);
31  int screenx=GetSystemMetrics(SM_CXSCREEN);
32  int screeny=GetSystemMetrics(SM_CYSCREEN);
33 
34  // resize:
35  SetWindowPos(NULL,0,0,screenx,screeny,SWP_NOZORDER);
36  //SetWindowPos(NULL,-5,-5,80,80,SWP_NOZORDER);
37  style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);
38  m_bChildMax=(style & WS_MAXIMIZE)?true:false;
39  // note here: m_bMainMax is not needed since m_hWnd only
40  // changed its caption
41  ///***************
42 
43  //Save the Original Menu and set menu to NULL
44     ASSERT(m_OrgMenu.GetSafeHmenu()==NULL);
45     CMenu* pOldMenu=GetMenu();
46     m_OrgMenu.Attach(pOldMenu->Detach());
47     SetMenu((CMenu*)NULL);
48 
49  //************
50  // and maximize the child window
51  // it will remove its caption, too.
52   //pChild->
53  this->ShowWindow (SW_SHOWMAXIMIZED);
54  style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);//鑾峰緱紿楀彛椋庢牸
55  style&=~WS_CAPTION;
56  ::SetWindowLong(pChild->m_hWnd,GWL_STYLE,style); 
57  pChild->ShowWindow(SW_SHOWMAXIMIZED);
58 
59  //RecalcLayout();
60  
61 
62 

閫鍑哄叏灞?br>
 1ASSERT(m_OrgMenu.GetSafeHmenu()!=NULL);
 2    SetMenu(&m_OrgMenu);
 3    m_OrgMenu.Detach();
 4
 5    // You can use SaveBarState() in OnClose(),
 6    // so remove the newly added toolbar entirely
 7    // in order SaveBarState() not
 8    // to save its state. That is why I used dynamic
 9    // allocation
10    delete m_pwndFullScreenBar;
11    LONG style=::GetWindowLong(m_hWnd,GWL_STYLE);
12    style|=WS_CAPTION;
13    ::SetWindowLong(m_hWnd,GWL_STYLE,style);
14    if(m_bToolBarWasVisible)
15        m_wndToolBar.ShowWindow(SW_SHOW);
16    if(m_bStatusBarWasVisible)
17        m_wndStatusBar.ShowWindow(SW_SHOW);
18    MoveWindow(&m_mainRect);
19    RecalcLayout();
20    CMDIChildWnd* pChild=MDIGetActive();
21
22    style=::GetWindowLong(pChild->m_hWnd,GWL_STYLE);
23    style|=WS_CAPTION;
24    ::SetWindowLong(pChild->m_hWnd,GWL_STYLE,style);
25    // pchild can be NULL if the USER closed all the
26    // childs during Full Screen Mode:
27    if(pChild){
28        if(m_bChildMax)
29            MDIMaximize(pChild);
30        else MDIRestore(pChild);
31    }


colys 2007-05-15 22:48 鍙戣〃璇勮
]]>
鐢–++鎺у埗DVD/CD椹卞姩鍣ㄧ殑寮鍏?/title><link>http://m.shnenglu.com/colys/articles/24113.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Mon, 14 May 2007 13:51:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/24113.html</guid><description><![CDATA[鍦╓indows璧勬簮嫻忚鍣ㄤ腑錛屽彲鍦―VD/CD鍏夐┍鍥炬爣涓婂崟鍑婚紶鏍囧彸閿紝閫夋嫨"寮瑰嚭"鏉ユ墦寮鍏夐┍浠撻棬錛屼綘鍙兘涔熷彂鐜頒簡錛岃彍鍗曚腑騫舵病鏈?鍏抽棴"鍛戒護鏉ュ叧闂厜椹便備笅闈紝灝辮鎴戜滑鐢ㄧ▼搴忔潵鎺у埗鎵撳紑銆佸叧闂厜椹便?<br><br>銆銆紼嬪簭鐨勪富瑕佸伐浣滈儴鍒嗕負CD_OpenClose(BOOL bOpen, TCHAR cDrive)鍑芥暟錛?br><br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #008000">//</span><span style="COLOR: #008000">cDrive鏄厜椹辯洏絎︼紝鎴栬?x01涓洪粯璁ら┍鍔ㄥ櫒銆?br></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #008000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">渚嬪錛?br></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #008000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">CD_OpenCloseDrive(TRUE, 'G'); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鎵撳紑鍏夐┍G:<br></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #008000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">CD_OpenCloseDrive(FALSE, 'G'); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鍏抽棴鍏夐┍G:<br></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #008000"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">CD_OpenCloseDrive(TRUE, 1); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鎵撳紑絎竴涓昏緫鍏夐┍</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CD_OpenCloseDrive(BOOL bOpenDrive, TCHAR cDrive)<br></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">銆MCI_OPEN_PARMS op;<br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000">銆MCI_STATUS_PARMS st;<br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000">銆DWORD flags;<br></span><span style="COLOR: #008080">12</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span> <span style="COLOR: #000000">銆TCHAR szDriveName[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">14</span> <span style="COLOR: #000000">銆strcpy(szDriveName, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">X:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">15</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">16</span> <span style="COLOR: #000000">銆::ZeroMemory(</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">op, </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(MCI_OPEN_PARMS));<br></span><span style="COLOR: #008080">17</span> <span style="COLOR: #000000">銆op.lpstrDeviceType </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (LPCSTR) MCI_DEVTYPE_CD_AUDIO;<br></span><span style="COLOR: #008080">18</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span> <span style="COLOR: #000000">銆</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(cDrive </span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">20</span> <span style="COLOR: #000000">銆{<br></span><span style="COLOR: #008080">21</span> <span style="COLOR: #000000">銆銆szDriveName[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> cDrive;<br></span><span style="COLOR: #008080">22</span> <span style="COLOR: #000000">銆銆op.lpstrElementName </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> szDriveName;<br></span><span style="COLOR: #008080">23</span> <span style="COLOR: #000000">銆銆flags </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MCI_OPEN_TYPE </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> MCI_OPEN_TYPE_ID </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> MCI_OPEN_ELEMENT</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> MCI_OPEN_SHAREABLE;<br></span><span style="COLOR: #008080">24</span> <span style="COLOR: #000000">銆}<br></span><span style="COLOR: #008080">25</span> <span style="COLOR: #000000">銆</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> flags </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MCI_OPEN_TYPE </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> MCI_OPEN_TYPE_ID </span><span style="COLOR: #000000">|</span><span style="COLOR: #000000"> MCI_OPEN_SHAREABLE;<br></span><span style="COLOR: #008080">26</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">27</span> <span style="COLOR: #000000">銆</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">mciSendCommand(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,MCI_OPEN,flags,(unsigned </span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">op))<br></span><span style="COLOR: #008080">28</span> <span style="COLOR: #000000">銆{<br></span><span style="COLOR: #008080">29</span> <span style="COLOR: #000000">銆銆st.dwItem </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MCI_STATUS_READY;<br></span><span style="COLOR: #008080">30</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">31</span> <span style="COLOR: #000000">銆銆</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(bOpenDrive)<br></span><span style="COLOR: #008080">32</span> <span style="COLOR: #000000">銆銆銆mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">33</span> <span style="COLOR: #000000">銆銆</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">34</span> <span style="COLOR: #000000">銆銆銆mciSendCommand(op.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">35</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">36</span> <span style="COLOR: #000000">銆銆mciSendCommand(op.wDeviceID,MCI_CLOSE,MCI_WAIT,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">37</span> <span style="COLOR: #000000">銆}<br></span><span style="COLOR: #008080">38</span> <span style="COLOR: #000000">}</span></div> <br><br>銆涓轟簡鏂逛究瀵瑰涓厜椹辮繘琛屾搷浣滐紝娣誨姞浜嗕笅闈㈣繖涓嚱鏁幫紝鍏朵細璋冪敤涓婇潰鐨凜D_OpenCloseDrive()鍑芥暟錛?br><br> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span> <span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> CD_OpenCloseAllDrives(BOOL bOpenDrives)<br></span><span style="COLOR: #008080"> 2</span> <span style="COLOR: #000000">{<br></span><span style="COLOR: #008080"> 3</span> <span style="COLOR: #000000">銆</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">鍒ゅ畾鎵鏈夊厜椹憋紝騫墮愪釜鎵撳紑鎴栧叧闂?/span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080"> 4</span> <span style="COLOR: #008000"></span><span style="COLOR: #000000">銆</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> nPos </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 5</span> <span style="COLOR: #000000">銆UINT nCount </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080"> 6</span> <span style="COLOR: #000000">銆TCHAR szDrive[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080"> 7</span> <span style="COLOR: #000000">銆strcpy(szDrive, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">?:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080"> 8</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080"> 9</span> <span style="COLOR: #000000">銆DWORD dwDriveList </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ::GetLogicalDrives ();<br></span><span style="COLOR: #008080">10</span> <span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span> <span style="COLOR: #000000">銆</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (dwDriveList) {<br></span><span style="COLOR: #008080">12</span> <span style="COLOR: #000000">銆銆</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (dwDriveList </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">13</span> <span style="COLOR: #000000">銆銆{<br></span><span style="COLOR: #008080">14</span> <span style="COLOR: #000000">銆銆銆szDrive[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x41</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> nPos;<br></span><span style="COLOR: #008080">15</span> <span style="COLOR: #000000">銆銆銆</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(::GetDriveType(szDrive) </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> DRIVE_CDROM)<br></span><span style="COLOR: #008080">16</span> <span style="COLOR: #000000">銆銆銆銆CD_OpenCloseDrive(bOpenDrives, szDrive[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);<br></span><span style="COLOR: #008080">17</span> <span style="COLOR: #000000">銆銆}<br></span><span style="COLOR: #008080">18</span> <span style="COLOR: #000000">銆銆dwDriveList </span><span style="COLOR: #000000">>>=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">19</span> <span style="COLOR: #000000">銆銆nPos</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">20</span> <span style="COLOR: #000000">銆}<br></span><span style="COLOR: #008080">21</span> <span style="COLOR: #000000">}</span></div> <br>銆鏈鍚庝竴鐐癸紝鍒繕浜嗗湪紼嬪簭寮澶村寘鎷琈msystem.h澶存枃浠訛紝鍙婂湪閾炬帴閫夐」閲屽啓涓奧inmm.lib銆?br><img src ="http://m.shnenglu.com/colys/aggbug/24113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-05-14 21:51 <a href="http://m.shnenglu.com/colys/articles/24113.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>榪涘埗浠嬬粛http://m.shnenglu.com/colys/articles/22816.htmlcolyscolysWed, 25 Apr 2007 11:35:00 GMThttp://m.shnenglu.com/colys/articles/22816.htmlhttp://m.shnenglu.com/colys/comments/22816.htmlhttp://m.shnenglu.com/colys/articles/22816.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/22816.htmlhttp://m.shnenglu.com/colys/services/trackbacks/22816.html
1. 鍗佽繘鍒舵暟
鍗佽繘鍒舵暟鐨勪袱涓富瑕佺壒鐐癸細

鈶存湁鍗佷釜涓嶅悓鐨勬暟瀛楋細
0銆?/span>1銆?/span>2銆?/span>3銆?/span>4銆?/span>5銆?/span>6銆?/span>7銆?/span>8銆?/span>9;

鈶甸㈠崄榪涗竴鐨勮繘浣嶆硶,10鏄崄榪涘埗鏁扮殑鍩烘暟(榪涘埗涓墍鐢ㄤ笉鍚屾暟瀛楃殑涓暟)銆?br>
(
1993)10=1×103+9×102+9×101+3×100(姣忎綅涓婄殑緋繪暟鍙湪0鈥?涓彇鐢?

2. 浜岃繘鍒舵暟
浜岃繘鍒舵暟鐨勪袱涓富瑕佺壒鐐癸細

鈶存湁涓や釜涓嶅悓鐨勬暟瀛楋細
0銆?/span>1;

鈶甸簩榪涗竴鐨勮繘浣嶆硶,2鏄簩榪涘埗鏁扮殑鍩烘暟銆?br>
(
1011)2=1×23+0×22+1×21+1×20(姣忎綅涓婄殑緋繪暟鍙湪0銆?涓彇鐢?

3. 鍏繘鍒舵暟
鍏繘鍒舵暟鐨勪袱涓富瑕佺壒鐐癸細

鈶撮噰鐢ㄥ叓涓笉鍚岀殑鏁板瓧錛?/span>0銆?/span>1銆?/span>2銆?/span>3銆?/span>4銆?/span>5銆?/span>6銆?/span>7;

鈶甸㈠叓榪涗竴鐨勮繘浣嶆硶,8鏄叓榪涘埗鏁扮殑鍩烘暟銆?br>
(
1725)8=1×83+7×82+2×81+5×80(姣忎綅涓婄殑緋繪暟鍙湪0鈥?涓彇鐢?

4. 鍗佸叚榪涘埗
鍗佸叚榪涘埗鏁扮殑涓や釜涓昏鐗圭偣錛?br>
鈶存湁鍗佸叚涓笉鍚岀殑鏁板瓧錛?/span>0銆?/span>1銆?/span>2銆?/span>3銆?/span>4銆?/span>5銆?/span>6銆?/span>7銆?/span>8銆?/span>9銆丄銆丅銆丆銆丏銆丒銆丗(鍏朵腑鍚庡叚涓暟瀛楃鍙峰叾鍊煎搴斾簬鍗佽繘鍒剁殑10,11,12,13,14,15錛涗篃鏈夐夌敤S,T,U,V,W,X鐨勮娉?;

鈶甸㈠崄鍏繘涓鐨勮繘浣嶆硶,16鏄崄鍏繘鍒舵暟鐨勫熀鏁般?br>
(B56E)
16=163+5×162+6×161+160=11×163+5×162+6×161+14×160

浜岃繘鍒舵崲綆椾負鍗佸叚榪涘埗鏄繖鏍?
鍏堟妸浜岃繘鍒朵粠浣庝綅錛堜篃灝辨槸浠庡彸鍒板乏錛夋寜鍥涗綅涓緇勫垎寮錛屽垎鍒版渶鍚庝笉澶熷洓浣嶇殑涔熸寜涓緇勬潵綆椼?/span>
鍒嗗ソ浠ュ悗鍐嶆妸姣忕粍鐨勪簩榪涘埗鎹㈢畻鎴愬崄鍏繘鍒訛紝涔嬪悗鍐嶆帴鎹㈢畻濂界殑緇勫悎璧鋒潵灝卞彲浠ヤ簡銆?br>
濡傦細  1101110111010

鍒嗙粍鍚庢槸:   1錛?011錛?011錛?010

姣忕粍鎹㈢畻鎴愬崄鍏繘鍒舵槸1錛孊,B,A 緇勫悎鏄?BBA



colys 2007-04-25 19:35 鍙戣〃璇勮
]]>
[瀵煎叆]璁捐妯″紡瀛︿範涔?Singleton錛堜竴錛?/title><link>http://m.shnenglu.com/colys/articles/22552.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Sat, 21 Apr 2007 16:02:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/22552.html</guid><wfw:comment>http://m.shnenglu.com/colys/comments/22552.html</wfw:comment><comments>http://m.shnenglu.com/colys/articles/22552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colys/comments/commentRss/22552.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colys/services/trackbacks/22552.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鍘誨勾鎺ヨЕ</span><span lang=EN-US style="FONT-SIZE: 9pt">ACE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鏃跺涔犱簡涓孌墊椂闂寸殑璁捐妯″紡錛?/span><span style="FONT-SIZE: 9pt"> </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">綆鍗曞湴鐪嬩簡</span><span lang=EN-US style="FONT-SIZE: 9pt">Gof</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鐨勮璁℃ā寮忥紝</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">緇撳悎</span><span lang=EN-US style="FONT-SIZE: 9pt">ACE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">澶х暐鐨勭湅浜?/span><span lang=EN-US style="FONT-SIZE: 9pt">POSA1</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">錛?/span><span lang=EN-US style="FONT-SIZE: 9pt"> POSA2</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">銆?/span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">瀵硅璁℃ā寮忕殑鐞嗚В榪樻槸寰堣偆嫻咃紝</span><span style="FONT-SIZE: 9pt"> </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">紿佺劧鎯蟲繁鍏ュ湴瀛︿範璁捐妯″紡錛?/span><span style="FONT-SIZE: 9pt"> </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">瀵規瘡涓縐嶆ā寮?/span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">閮借緟鍔╃浉鍏崇殑</span><span lang=EN-US style="FONT-SIZE: 9pt">code</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鏉ョ悊瑙o紝</span><span style="FONT-SIZE: 9pt"> </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">騫舵妸璁捐妯″紡鍜?/span><span lang=EN-US style="FONT-SIZE: 9pt">MFC</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">錛?/span><span lang=EN-US style="FONT-SIZE: 9pt"> ACE</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">錛?/span><span lang=EN-US style="FONT-SIZE: 9pt"> cppunit</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">絳夋鏋惰仈緋昏搗鏉ワ紝</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">鏇村ソ鍦扮悊瑙e拰搴旂敤榪欎簺緙栫▼鐨勬鏋訛紙榪樻湁</span><span lang=EN-US style="FONT-SIZE: 9pt">log4plus</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">絳夛級</span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt"><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">浠婂ぉ鎬葷粨涓涓嬬畝鍗曠殑鍗曚歡妯″紡錛?/span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 120%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><strong><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">Singleton(</span></strong><strong><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">鍗曚歡</span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">)</span></strong><strong><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">鈥斺斿璞″垱寤哄瀷妯″紡</span></strong><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 120%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">淇濊瘉涓涓被浠呮湁涓涓疄渚嬶紝騫舵彁渚涗竴涓闂畠鐨勫叏灞璁塊棶鐐廣?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 120%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><strong><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">1</span></strong><strong><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">·鍏稿瀷</span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">Singleton</span></strong><strong><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">綾?/span></strong><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">錛?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 鏂板畫浣? mso-hansi-font-family: 'Times New Roman'; mso-font-kerning: 0pt"><o:p> </p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">class Singleton<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Instance();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>protected:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     Singleton();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> _instance;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>};<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Singleton::_instance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Singleton::Instance()<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_instance </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     {<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>         _instance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Singleton;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     }<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     return _instance;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align=left></o:p></span> </p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 120%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">瀹㈡埛浠呴氳繃</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">Instance</span><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">鎴愬憳鍑芥暟璁塊棶榪欎釜鍗曚歡銆傚彉閲?/span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">_instance</span><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">鍒濆鍖栦負</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">0</span><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">錛岃岄潤鎬佹垚鍛樺嚱鏁?/span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; mso-font-kerning: 0pt">Instance</span><span style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋">榪斿洖璇ュ彉閲忓箋傛敞鎰忥細鏋勯犲櫒鏄繚鎶ゅ瀷鐨勶紝淇濊瘉浜嗕粎鏈変竴涓疄渚嬭鍒涘緩銆?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; WORD-BREAK: break-all; LINE-HEIGHT: 120%; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 120%; FONT-FAMILY: 瀹嬩綋; mso-font-kerning: 0pt; mso-bidi-font-family: 瀹嬩綋"><o:p> </o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">榪欑鏂瑰紡鐨勫疄鐜板浜庣嚎紼嬫潵璇村茍涓嶆槸瀹夊叏鐨勶紝鍥犱負鍦ㄥ綰跨▼鐨勭幆澧冧笅鏈夊彲鑳藉緱鍒?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">綾葷殑澶氫釜瀹炰緥銆傚鏋滃悓鏃舵湁涓や釜綰跨▼鍘誨垽鏂紙</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">_instance == null</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">錛夛紝騫朵笖寰楀埌鐨勭粨鏋滀負鐪燂紝榪欐椂涓や釜綰跨▼閮戒細鍒涘緩綾?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">鐨勫疄渚嬶紝榪欐牱灝辮繚鑳屼簡</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡鐨勫師鍒欍傚疄闄呬笂鍦ㄤ笂榪頒唬鐮佷腑錛屾湁鍙兘鍦ㄨ綆楀嚭琛ㄨ揪寮忕殑鍊間箣鍓嶏紝瀵硅薄瀹炰緥宸茬粡琚垱寤猴紝浣嗘槸鍐呭瓨妯″瀷騫朵笉鑳戒繚璇佸璞″疄渚嬪湪絎簩涓嚎紼嬪垱寤轟箣鍓嶈鍙戠幇銆?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">璇ュ疄鐜版柟寮忎富瑕佹湁涓や釜浼樼偣錛?#183;鐢變簬瀹炰緥鏄湪</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <strong><span lang=EN-US>Instance</span></strong><span lang=EN-US> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">灞炴ф柟娉曞唴閮ㄥ垱寤虹殑錛屽洜姝ょ被鍙互浣跨敤闄勫姞鍔熻兘錛堜緥濡傦紝瀵瑰瓙綾昏繘琛屽疄渚嬪寲錛夛紝鍗充嬌瀹冨彲鑳藉紩鍏ヤ笉鎯寵鐨勪緷璧栨с?#183;</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">  </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">鐩村埌瀵硅薄瑕佹眰浜х敓涓涓疄渚嬫墠鎵ц瀹炰緥鍖栵紱榪欑鏂規硶縐頒負</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">“</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">鎯版у疄渚嬪寲</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">”</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">銆傛儼鎬у疄渚嬪寲閬垮厤浜嗗湪搴旂敤紼嬪簭鍚姩鏃跺疄渚嬪寲涓嶅繀瑕佺殑</span><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> singleton</span></strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">2</span></strong><strong style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·綰跨▼瀹夊叏鐨?/span></strong><strong style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">singleton<o:p></o:p></span></strong></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma"></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">class Singleton<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Instance();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>protected:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     Singleton();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> _instance;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Cmutext _mutex;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>};<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Singleton::_instance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Singleton::Instance()<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     _mutex.acque();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_instance </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     {<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>         _instance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Singleton;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     }<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     _mutex.release();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     return _instance;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left> </span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">榪欑鏂瑰紡鐨勫疄鐜板浜庣嚎紼嬫潵璇存槸瀹夊叏鐨勩傛垜浠鍏堝垱寤轟簡涓涓繘紼嬭緟鍔╁璞★紝綰跨▼鍦ㄨ繘鍏ユ椂鍏堝杈呭姪瀵硅薄鍔犻攣鐒跺悗鍐嶆嫻嬪璞℃槸鍚﹁鍒涘緩錛岃繖鏍峰彲浠ョ‘淇濆彧鏈変竴涓疄渚嬭鍒涘緩錛屽洜涓哄湪鍚屼竴涓椂鍒誨姞浜嗛攣鐨勯偅閮ㄥ垎紼嬪簭鍙湁涓涓嚎紼嬪彲浠ヨ繘鍏ャ傝繖縐嶆儏鍐典笅錛屽璞″疄渚嬬敱鏈鍏堣繘鍏ョ殑閭d釜綰跨▼鍒涘緩錛屽悗鏉ョ殑綰跨▼鍦ㄨ繘鍏ユ椂錛?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma">_instence == null</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">錛変負鍋囷紝涓嶄細鍐嶅幓鍒涘緩瀵硅薄瀹炰緥浜嗐備絾鏄繖縐嶅疄鐜版柟寮忓鍔犱簡棰濆鐨勫紑閿錛屾崯澶變簡鎬ц兘銆?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma"><o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma">3</span></strong><strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">錛庡弻閲嶉攣瀹?/span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma"><o:p></o:p></span></strong></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">榪欑瀹炵幇鏂瑰紡瀵瑰綰跨▼鏉ヨ鏄畨鍏ㄧ殑錛屽悓鏃剁嚎紼嬩笉鏄瘡嬈¢兘鍔犻攣錛屽彧鏈夊垽鏂璞″疄渚嬫病鏈夎鍒涘緩鏃跺畠鎵嶅姞閿侊紝鏈変簡鎴戜滑涓婇潰絎竴閮ㄥ垎鐨勯噷闈㈢殑鍒嗘瀽錛屾垜浠煡閬擄紝鍔犻攣鍚庤繕寰楀啀榪涜瀵硅薄鏄惁宸茶鍒涘緩鐨勫垽鏂傚畠瑙e喅浜嗙嚎紼嬪茍鍙戦棶棰橈紝鍚屾椂閬垮厤鍦ㄦ瘡涓?/span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma"> <strong><span lang=EN-US style="FONT-FAMILY: Tahoma">Instance</span></strong><span lang=EN-US> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">灞炴ф柟娉曠殑璋冪敤涓兘鍑虹幇鐙崰閿佸畾銆傚畠榪樺厑璁告偍灝嗗疄渚嬪寲寤惰繜鍒扮涓嬈¤闂璞℃椂鍙戠敓銆傚疄闄呬笂錛屽簲鐢ㄧ▼搴忓緢灝戦渶瑕佽繖縐嶇被鍨嬬殑瀹炵幇銆傚ぇ澶氭暟鎯呭喌涓嬫垜浠細鐢ㄩ潤鎬佸垵濮嬪寲銆傝繖縐嶆柟寮忎粛鐒舵湁寰堝緙虹偣錛氭棤娉曞疄鐜板歡榪熷垵濮嬪寲銆?br><br></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">class Singleton<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Instance();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>protected:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     Singleton();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> _instance;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     static CMutex _mutex;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>};<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Singleton::_instance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>Singleton</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> Singleton::Instance()<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>{<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(_instance </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     {<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>         _mutex.acque();<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>         _instance </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Singleton;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>         _mutex.release<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     }<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>     return _instance;<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top>}<br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif" align=top></span></div> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><br></p> </span> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma"><br>瀹炵幇瑕佺偣</span></strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡鏄檺鍒惰屼笉鏄敼榪涚被鐨勫垱寤恒?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">綾諱腑鐨勫疄渚嬫瀯閫犲櫒鍙互璁劇疆涓?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Protected</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">浠ュ厑璁稿瓙綾繪淳鐢熴?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡涓鑸笉瑕佹敮鎸?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Icloneable</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">鎺ュ彛錛屽洜涓鴻繖鍙兘瀵艱嚧澶氫釜瀵硅薄瀹炰緥錛屼笌</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡鐨勫垵琛瘋繚鑳屻?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡涓鑸笉瑕佹敮鎸佸簭鍒楀寲錛岃繖涔熸湁鍙兘瀵艱嚧澶氫釜瀵硅薄瀹炰緥錛岃繖涔熶笌</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡鐨勫垵琛瘋繚鑳屻?/span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">鍙冭檻浜嗗璞″垱寤虹殑綆$悊錛屾病鏈夎冭檻鍒伴攢姣佺殑綆$悊錛屽氨鏀寔鍨冨溇鍥炴敹鐨勫鉤鍙板拰瀵硅薄鐨勫紑閿鏉ヨ錛屾垜浠竴鑸病蹇呰瀵瑰叾閿姣佽繘琛岀壒孌婄殑綆$悊銆?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"><span style="mso-spacerun: yes"> </span></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">·鐞嗚В鍜屾墿灞?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">妯″紡鐨勬牳蹇冩槸</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">“</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">濡備綍鎺у埗鐢ㄦ埛浣跨敤</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">new</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">瀵逛竴涓被鐨勬瀯閫犲櫒鐨勪換鎰忚皟鐢?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt">”</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-font-kerning: 0pt; mso-bidi-font-family: Tahoma">銆?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma; mso-font-kerning: 0pt"> <o:p></o:p></span></p> <p class=MsoNormal style="BACKGROUND: white; MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">鎬葷粨錛?/span></strong><strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma"> </span></strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma">Singleton</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Tahoma; mso-hansi-font-family: Tahoma; mso-bidi-font-family: Tahoma">璁捐妯″紡鏄竴涓潪甯告湁鐢ㄧ殑鏈哄埗錛屽彲鐢ㄤ簬鍦ㄩ潰鍚戝璞$殑搴旂敤紼嬪簭涓彁渚涘崟涓闂偣銆?/span><span lang=EN-US style="FONT-SIZE: 9pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><strong><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">搴旇娉ㄦ剰鐨勫嚑鐐?/span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">:</span></strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><br>    1,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鎴戜滑涓嶅簲璇ユ潵搴忓垪鍖栧拰鍙嶅簭鍒楀寲鐢ㄥ崟浠舵ā寮忓疄鐜扮殑瀵硅薄</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鍚﹀垯澶氭鍙嶅簭鍒楀寲鍒欏彲浠ュ垱寤哄鐨勫疄渚?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">榪欎笌鍗曚歡妯″紡鏄浉鐭涚浘鐨?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.<br>    2,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鎴戜滑涓嶅簲璇ュ厠闅嗙敤鍗曚歡妯″紡瀹炵幇鐨勫璞?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鍚﹀垯澶氭鍏嬮殕鍒欏彲浠ュ垱寤哄鐨勫疄渚?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">榪欎笌鍗曚歡妯″紡鏄浉鐭涚浘鐨?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.<br>    3,</span><span style="FONT-SIZE: 9pt; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鍦ㄥ綰跨▼鐜涓嬌鐢ㄥ崟浠舵ā寮忔椂瑕佸皬蹇?/span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.<br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鍏充簬</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: Verdana">ACE</span><span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">涓崟浠舵ā寮?/span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: Verdana">ACE_Singleton</span><span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鐨勮璁″拰搴旂敤鍙互鍙傝冧竴鍗氬弸鐨勬枃绔狅紝</span><span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: Verdana"> </span><span style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: 瀹嬩綋; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana">鎰熻鍐欑殑寰堝ソ</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: red; FONT-FAMILY: Verdana"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><a ><u><font color=#800080>http://blog.csdn.net/joise/archive/2006/09/29/1305849.aspx</font></u></a><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><o:p> </o:p></span></p> <img height=1 src="http://m.shnenglu.com/Galaxy/aggbug/22502.html" width=1><br><br> <div align=right><a style="TEXT-DECORATION: none" href="http://m.shnenglu.com/Galaxy/" target=_blank>Galaxy</a> 2007-04-21 17:18 <a style="TEXT-DECORATION: none" href="http://m.shnenglu.com/Galaxy/archive/2007/04/21/22502.html#Feedback" target=_blank>鍙戣〃璇勮</a></div> <br>鏂囩珷鏉ユ簮:<a href="http://m.shnenglu.com/Galaxy/archive/2007/04/21/22502.html">http://m.shnenglu.com/Galaxy/archive/2007/04/21/22502.html</a><img src ="http://m.shnenglu.com/colys/aggbug/22552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-04-22 00:02 <a href="http://m.shnenglu.com/colys/articles/22552.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[瀵煎叆]縐戝璁$畻鐩稿叧鐨刢++搴?/title><link>http://m.shnenglu.com/colys/articles/22553.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Sat, 21 Apr 2007 16:02:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/22553.html</guid><wfw:comment>http://m.shnenglu.com/colys/comments/22553.html</wfw:comment><comments>http://m.shnenglu.com/colys/articles/22553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colys/comments/commentRss/22553.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colys/services/trackbacks/22553.html</trackback:ping><description><![CDATA[<p>Blitz++ </p> <p>鍙傝冪綉绔欙細<a >http://www.oonumerics.org/blitz/</a></p> <p>Blitz++ 鏄竴涓珮鏁堢巼鐨勬暟鍊艱綆楀嚱鏁板簱錛屽畠鐨勮璁$洰鐨勬槸甯屾湜寤虹珛涓濂楁棦鍏峰儚C++ 涓鏍鋒柟渚匡紝鍚屾椂鍙堟瘮Fortran閫熷害鏇村揩鐨勬暟鍊艱綆楃幆澧冦傞氬父錛岀敤C++鎵鍐欏嚭鐨勬暟鍊肩▼搴忥紝姣?Fortran鎱?0%宸﹀彸錛屽洜姝litz++姝f槸瑕佹敼鎺夎繖涓己鐐廣傛柟娉曟槸鍒╃敤C++鐨則emplate鎶鏈紝紼嬪簭鎵ц鐢氳嚦鍙互姣擣ortran鏇村揩銆侭litz++鐩墠浠嶅湪鍙戝睍涓紝瀵逛簬甯歌鐨凷VD錛孎FTs錛孮MRES絳夊父瑙佺殑綰挎т唬鏁版柟娉曞茍涓嶆彁渚涳紝涓嶈繃浣跨敤鑰呭彲浠ュ緢瀹規槗鍦板埄鐢˙litz++鎵鎻愪緵鐨勫嚱鏁版潵鏋勫緩銆?</p> <p>POOMA </p> <p>鍙傝冪綉绔欙細<a >http://www.codesourcery.com/pooma/pooma</a></p> <p>POOMA鏄竴涓厤璐圭殑楂樻ц兘鐨凜++搴擄紝鐢ㄤ簬澶勭悊騫惰寮忕瀛﹁綆椼侾OOMA鐨勯潰鍚戝璞¤璁℃柟渚夸簡蹇熺殑紼嬪簭寮鍙戯紝瀵瑰茍琛屾満鍣ㄨ繘琛屼簡浼樺寲浠ヨ揪鍒版渶楂樼殑鏁堢巼錛屾柟渚垮湪宸ヤ笟鍜岀爺絀剁幆澧冧腑浣跨敤銆?</p> <p>MTL </p> <p>鍙傝冪綉绔欙細<a >http://www.osl.iu.edu/research/mtl/</a></p> <p>Matrix Template Library(MTL)鏄竴涓珮鎬ц兘鐨勬硾鍨嬬粍浠跺簱錛屾彁渚涗簡鍚勭鏍煎紡鐭╅樀鐨勫ぇ閲忕嚎鎬т唬鏁版柟闈㈢殑鍔熻兘銆傚湪鏌愪簺搴旂敤浣跨敤楂樻ц兘緙栬瘧鍣ㄧ殑鎯呭喌涓嬶紝姣斿Intel鐨勭紪璇戝櫒錛屼粠浜х敓鐨勬眹緙栦唬鐮佸彲浠ョ湅鍑哄叾涓庢墜鍐欏嚑涔庢病鏈変袱鏍風殑鏁堣兘銆?</p> <p>CGAL </p> <p>鍙傝冪綉绔欙細<a >www.cgal.org</a></p> <p>Computational Geometry Algorithms Library鐨勭洰鐨勬槸鎶婂湪璁$畻鍑犱綍鏂歸潰鐨勫ぇ閮ㄥ垎閲嶈鐨勮В鍐蟲柟妗堝拰鏂規硶浠++搴撶殑褰㈠紡鎻愪緵緇欏伐涓氬拰瀛︽湳鐣岀殑鐢ㄦ埛銆?<br></p> <img height=1 src="http://m.shnenglu.com/Galaxy/aggbug/20725.html" width=1><br><br> <div align=right><a style="TEXT-DECORATION: none" href="http://m.shnenglu.com/Galaxy/" target=_blank>Galaxy</a> 2007-03-27 17:59 <a style="TEXT-DECORATION: none" href="http://m.shnenglu.com/Galaxy/archive/2007/03/27/20725.html#Feedback" target=_blank>鍙戣〃璇勮</a></div> <br>鏂囩珷鏉ユ簮:<a href="http://m.shnenglu.com/Galaxy/archive/2007/03/27/20725.html">http://m.shnenglu.com/Galaxy/archive/2007/03/27/20725.html</a><img src ="http://m.shnenglu.com/colys/aggbug/22553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-04-22 00:02 <a href="http://m.shnenglu.com/colys/articles/22553.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[瀵煎叆]鏍稿績瀵硅薄嬋鍙戠姸鎬佺殑鎰忎箟http://m.shnenglu.com/colys/articles/21023.htmlcolyscolysSat, 31 Mar 2007 15:03:00 GMThttp://m.shnenglu.com/colys/articles/21023.htmlhttp://m.shnenglu.com/colys/comments/21023.htmlhttp://m.shnenglu.com/colys/articles/21023.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/21023.htmlhttp://m.shnenglu.com/colys/services/trackbacks/21023.html“嬋鍙?#8221; signaled 瀵逛簬涓嶅悓鐨勬牳蹇冨璞℃湁涓嶅悓鐨勬剰涔?/span>

Thread 綰跨▼錛屽綋綰跨▼緇撴潫鏃訛紝綰跨▼瀵硅薄鍗寵嬋鍙戙傚綋綰跨▼榪樺湪榪涜鏃訛紝鍒欏璞″浜庢湭嬋鍙戠姸鎬併?/span>

Process 榪涚▼錛屽綋榪涚▼緇撴潫鏃訛紝榪涚▼瀵硅薄鍗寵嬋鍙戙傚綋榪涚▼榪樺湪榪涜鏃訛紝鍒欏璞″浜庢湭嬋鍙戠姸鎬併?/span>

Change Notification 錛屽綋涓涓壒瀹氱殑紓佺洏瀛愮洰褰曚腑鍙戠敓涓浠剁壒鍒殑鍙樺寲鏃訛紝姝ゅ璞″嵆琚縺鍙戙傛瀵硅薄緋葷敱 FindFirstChangeNotification() 浜х敓

Console Input 錛屽綋 console 紿楀彛鐨勮緭鍏ョ紦鍐插尯涓湁鏁版嵁鍙敤鏃訛紝姝ゅ璞″皢澶勪簬嬋鍙戠姸鎬併?/span> CreateFile 錛堬級鍜?/span> GetStdFile 錛堬級涓ゅ嚱鏁板彲浠ヨ幏寰?/span> console handle 銆?/span>

Event 錛?/span> Event 瀵硅薄鐨勭姸鎬佺洿鎺ュ彈鎺т簬搴旂敤紼嬪簭鎵浣跨敤鐨勪笁涓?/span> Win32 鍑芥暟錛?/span> SetEvent 錛堬級錛?/span> PulseEvent 錛堬級錛?/span> ResetEvent 錛堬級銆?/span> CreateEvent 錛堬級鍜?/span> OpenEvent 錛堬級閮藉彲浠ヤ紶鍥炰竴涓?/span> event object handle 銆?/span> Event 瀵硅薄鐨勭姸鎬佷篃鍙互琚搷浣滅郴緇熻瀹氣斺斿鏋滀嬌鐢ㄤ簬“ overlapped ”鎿嶄綔鏃躲?/span>

Mutex 錛屽鏋?/span> mutex 娌℃湁琚換浣曠嚎紼嬫嫢鏈夛紝浠栧氨鏄浜庢縺鍙戠姸鎬併備竴鏃︿竴涓瓑寰?/span> mutex 鐨勫嚱鏁拌繑鍥炰簡錛?/span> mutex 涔熷氨鑷姩閲嶇疆涓烘湭嬋鍙戠姸鎬併?/span> CreateMutex 錛堬級鍜?/span> OpenMutex 錛堬級閮藉彲浠ヨ幏寰椾竴涓?/span> Mutext 鐨?/span> handle 銆?/span>

Semaphore 錛?/span> Semaphore 鏈夌偣鍍?/span> mutex 錛屼絾浠栨湁涓鏁板櫒錛屽彲浠ョ害鏉熷叾鎷ユ湁鑰咃紙綰跨▼錛夌殑涓暟銆傚綋璁℃暟鍣ㄥ唴瀹瑰ぇ浜?/span> 0 鏃訛紝 semaphore 澶勪簬嬋鍙戠姸鎬侊紝褰撹鏁板櫒鍐呭絳変簬 0 鏃訛紝 semaphore 澶勪簬鏈縺鍙戠姸鎬併?/span> CreateSemaphore 錛堬級鍜?/span> OpenSemaphore 錛堬級鍙互浼犲洖涓涓?/span> semaphore handle 銆?/span>



colys 2007-03-31 23:03 鍙戣〃璇勮
]]>
C++ Builder涓嬪湪涓涓獥浣撶殑panel涓樉紺哄姞涓涓獥浣撶殑鎺т歡http://m.shnenglu.com/colys/articles/21021.htmlcolyscolysSat, 31 Mar 2007 14:57:00 GMThttp://m.shnenglu.com/colys/articles/21021.htmlhttp://m.shnenglu.com/colys/comments/21021.htmlhttp://m.shnenglu.com/colys/articles/21021.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/21021.htmlhttp://m.shnenglu.com/colys/services/trackbacks/21021.html/*
聽*宸茬煡涓ょ獥浣揟frmSetting鍜?frmModifyPath
聽*鏄劇ずfrmModifyPath鐨凾Panel鎺т歡PanContent鍒癟frmSetting鐨凾Panel鎺т歡panClient
聽*/

int TfrmSetting::ShowModifyPathWin()
{
聽聽聽 if(frmModifyPath)
聽聽聽 {
聽聽聽聽聽聽聽 if(frmModifyPath->PanContent ->Parent !=panClient)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 frmModifyPath->PanContent->Parent= panClient;
聽聽聽聽聽聽聽聽聽聽聽 frmModifyPath->PanContent->Align=alClient;聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 }
聽聽聽 }
}


colys 2007-03-31 22:57 鍙戣〃璇勮
]]>
涓閬撶畻娉曢潰璇曢http://m.shnenglu.com/colys/articles/20418.htmlcolyscolysFri, 23 Mar 2007 02:41:00 GMThttp://m.shnenglu.com/colys/articles/20418.htmlhttp://m.shnenglu.com/colys/comments/20418.htmlhttp://m.shnenglu.com/colys/articles/20418.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/20418.htmlhttp://m.shnenglu.com/colys/services/trackbacks/20418.html棰樼洰錛?/p>

浠?鍒癗(100000)涓換鎰忔嬁鎺変袱涓暟錛屾妸鍓╀笅鐨?9998涓暟欏哄簭鎵撲貢錛屽茍涓旀斁鍏ユ暟緇凙涓傝姹傚彧鎵弿涓閬嶆暟緇勶紝鎶婅繖涓や釜鏁版壘鍑烘潵銆傚彲浠ヤ嬌鐢ㄦ渶鍒頒笉瓚呰繃5涓眬閮ㄥ彉閲忥紝涓嶈兘鐢ㄦ暟緇勫彉閲忥紝騫朵笖涓嶈兘鏀瑰彉鍘熸暟緇勭殑鍊箋?br />



colys 2007-03-23 10:41 鍙戣〃璇勮
]]>
ASSERT( booleanExpression ) 鐨勪綔鐢?/title><link>http://m.shnenglu.com/colys/articles/19665.html</link><dc:creator>colys</dc:creator><author>colys</author><pubDate>Mon, 12 Mar 2007 14:15:00 GMT</pubDate><guid>http://m.shnenglu.com/colys/articles/19665.html</guid><wfw:comment>http://m.shnenglu.com/colys/comments/19665.html</wfw:comment><comments>http://m.shnenglu.com/colys/articles/19665.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/colys/comments/commentRss/19665.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/colys/services/trackbacks/19665.html</trackback:ping><description><![CDATA[<a name="16773806">聽 <div id="hvzpftn" class="f14">ASSERT( booleanExpression )錛?<br />棣栧厛錛歜ooleanExpression 鍙傛暟鏄竴涓猙ool琛ㄨ揪寮忋?<br />鐢ㄦ硶錛?<br />褰撶▼搴忚繍琛屽埌璇ヨ鍙ョ殑鏃跺欙紝紼嬪簭浼氭鏌ooleanExpression 榪欎釜琛ㄨ揪寮忔槸鐪熻繕鏄亣銆?<br />濡傛灉鏉′歡絎﹀悎錛岀▼搴忕戶緇繍琛屼笅闈㈢殑浠g爜錛?<br />濡傛灉鏄笉絎﹀悎錛岄偅涔堟寔緇繍琛屼細琚崱鍦ㄨ繖閲屻備笉寰涓嬮潰璧幫紝騫舵湁紼嬪簭寮瑰嚭閿欒瀵硅瘽妗嗭紝鎸囩ず鏄敱浜巄ooleanExpression 榪欎釜鏉′歡絎﹀悎瀵艱嚧鐨勬姤閿欍?<br />浣滅敤錛?<br />ASSERT(booleanExpression )璇彞涓鑸敤鏉ユ鏌ヤ竴浜涘繀欏葷鍚堢殑鏉′歡錛屽鏋滀笉絎﹀悎鏉′歡錛屽垯涓嶈紼嬪簭緇х畫榪愯涓嬪幓銆?<br /><br />姣斿錛?<br />涓涓彮鏈?5涓漢錛屾湁涓涓嚱鏁板彲浠ュ鐝笂鐨?5涓漢榪涜澶勭悊錛屼竴涓崟鐙鐞嗕竴涓悓瀛︿篃鍙互錛屼篃鍙互鍚屾椂澶勭悊澶氫釜鍚屽銆傚嚱鏁扮敵鏄庝負錛欳ONTROLSTUDENT(int number);鍏朵腑number涓鴻澶勭悊鐨勫鐢熺殑涓暟銆?<br />鍦ㄤ嬌鐢–ONTROLSTUDENT鍑芥暟鍓嶏紝涓鑸垜浠細浣跨敤 <br />ASSERT(number<=55); <br />CONTROLSTUDENT(number); <br />榪欐牱鍙互淇濊瘉杈撳叆鐨勫鐢熸暟鐩粷瀵瑰皬浜庣瓑浜?5涓漢銆?<br />濡傛灉杈撳叆鐨刵umber鍙傛暟澶т簬55錛岀▼搴忓皢鎶ラ敊錛屼笉鎵ц銆?<br /><br />鎬葷粨錛氳鎸囦護鍙互鐢ㄦ潵鍋氫負鏌愪簺鏉′歡鐨勯槻鎶わ紝閬垮厤涓嶇鍚堟潯浠剁殑涓滆タ浜х敓瀵艱嚧紼嬪簭鐨勫穿婧冦?</div><div id="hvzpftn" class="gray" align="right"></div></a>聽<div class="hvzpftn" id="Lg"></div><a name="16775737"><div id="hvzpftn" class="f14">鍙湁鍦ㄧ敓鎴怐EBUG鐮佹椂ASSERT()鎵嶈搗浣滅敤. <br /><br />鍦ㄧ敓鎴怰elease鐮佹椂緙栬瘧鍣ㄤ細璺寵繃ASSERT(). <br /><br />ASSERT()鐢ㄦ潵媯鏌ヤ笂闈㈣繍琛岀粨鏋滄湁鏃犻敊,渚嬪閫佽繑鐨勬寚閽堝涓嶅,琛ㄨ揪寮忚繑鍥炲兼槸涓嶆槸"鍋?,鏈夐敊鍒欐墦鍑烘湁鍏充俊鎭茍閫鍑虹▼搴? </div></a><img src ="http://m.shnenglu.com/colys/aggbug/19665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/colys/" target="_blank">colys</a> 2007-03-12 22:15 <a href="http://m.shnenglu.com/colys/articles/19665.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鏁扮粍鐨勫紩鐢?http://m.shnenglu.com/colys/articles/19598.htmlcolyscolysMon, 12 Mar 2007 01:24:00 GMThttp://m.shnenglu.com/colys/articles/19598.htmlhttp://m.shnenglu.com/colys/comments/19598.htmlhttp://m.shnenglu.com/colys/articles/19598.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/19598.htmlhttp://m.shnenglu.com/colys/services/trackbacks/19598.html聽聽聽聽聽聽聽 璞″涓嬪畾涔夊氨寰楀埌涓涓暟緇勭殑寮曠敤
聽聽聽聽聽聽聽 綾誨瀷鍚?錛?amp;鍙橀噺鏄庯級[N]錛?br />聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 瀹炰緥
聽聽聽聽聽聽聽 int int_array[10];
聽聽聽聽聽聽聽 int (&int_ref)[10] = int_array;
聽聽聽聽聽聽聽 榪欐牱灝卞緱鍒頒簡涓涓暟緇勭殑搴旂敤

聽聽聽聽聽聽聽 鍦ㄥ嚱鏁扮殑澹版槑涓敤鏁扮粍鐨勫紩鐢ㄥ畾涔夛紝灝變笉鎬曟暟緇勯鍖栦簡銆傚涓?br />聽聽聽聽聽聽聽 for_each( int (&int_ref)[10] )
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for( int i=0; i<10; ++i )
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 std::cout << int_ref[i] << std::endl;
聽聽聽聽聽聽聽聽 }

聽聽聽聽聽聽聽聽 int main( int argc, char* argv[] )
聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 int int_array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 for_each( int_array );
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 return 0;
聽聽聽聽聽聽聽聽聽 }

聽聽聽聽聽聽聽聽聽 鍦ㄤ笂闈㈢殑浠g爜涓紝濡傛灉浣犱紶鍏ヤ笉鏄?0涓昂瀵哥殑鏁扮粍錛屾槸緙栬瘧閫氫笉榪囩殑銆備唬鐮佺殑瀹夊叏鎬ф彁楂樹簡銆偮犅?

聽聽聽聽聽聽聽聽 鎯寵瀹氫箟涓涓暟緇勫紩鐢ㄧ被鍨嬶紝鏂規硶濡備笅
聽聽聽聽聽聽聽聽 typedef 綾誨瀷鏄?(&鏁扮粍寮曠敤綾誨瀷鏄?[N];

聽聽聽聽聽聽聽聽 瀹炰緥
聽聽聽聽聽聽聽聽 typedef int (&Array_Ref)[10];
聽聽聽聽聽聽聽聽 Array_Ref灝辨槸涓涓暟緇勭殑寮曠敤綾誨瀷浜嗐?br />



colys 2007-03-12 09:24 鍙戣〃璇勮
]]>
緇橫SN Messager瑁呬釜閽╁瓙[杞澆]http://m.shnenglu.com/colys/articles/18554.htmlcolyscolysThu, 08 Feb 2007 12:47:00 GMThttp://m.shnenglu.com/colys/articles/18554.htmlhttp://m.shnenglu.com/colys/comments/18554.htmlhttp://m.shnenglu.com/colys/articles/18554.html#Feedback0http://m.shnenglu.com/colys/comments/commentRss/18554.htmlhttp://m.shnenglu.com/colys/services/trackbacks/18554.html鏈榪戠爺絀舵庝箞鏍蜂嬌鐢℉OOK鎷︽埅鍏朵粬搴旂敤紼嬪簭鐨勬秷鎭紝浜庢槸灝卞姩鎵嬪啓浜嗕竴涓挬瀛愮▼搴忔潵鎸傚埌鏈甯哥敤鐨勯氳鍙婃椂閫氳宸ュ叿MSN錛岃櫧鐒舵病鏈変粈涔堝疄闄呮剰涔夛紝浣嗕綔涓哄涔犵爺絀跺嵈鑳藉甯姪鎴戜滑鐞嗚В鍒╃敤HOOK鏄庝箞鏍峰皢鑷繁緙栧啓鐨凞LL娉ㄥ叆宸茬粡瀛樺湪鐨勭▼搴忕┖闂翠腑鐨勩?br />

鎴戜滑闇瑕佸仛鐨勬槸閫氳繃鎴戜滑鑷繁緙栧啓鐨勫簲鐢ㄧ▼搴忓幓鎷︽埅鍒漢鍐欏ソ鐨勫簲鐢ㄧ▼搴忔秷鎭紝瀹為檯涓婅繖鏄湪涓や釜榪涚▼涔嬮棿榪涜鐨勶紝闅懼害灝卞湪榪欓噷錛屽鏋滄槸鍚屼竴涓繘紼嬩粈涔堥兘濂藉姙錛屽彧瑕佸皢緋葷粺鍝嶅簲WINDOWS娑堟伅鐨勫鐞嗗嚱鏁頒慨鏀逛負鎴戜滑鑷繁緙栧啓鐨勫嚱鏁板氨鍙互錛屼絾鐜板湪涓嶈兘榪欎箞鍋氾紝鍥犱負涓や釜榪涚▼鏈夊悇鑷殑榪涚▼鍦板潃絀洪棿錛岀悊璁轟笂浣犳病鏈夊姙娉曠洿鎺ュ幓璁塊棶鍒殑榪涚▼鐨勫湴鍧絀洪棿錛岄偅涔堟庝箞鍔炴潵錛熷姙娉曡繕鏄緢澶氱殑錛岃繖閲屼粎浠呬粙緇嶉氳繃HOOK鏉ヨ揪鍒扮洰鐨勩?/p>

闇瑕佹嫤鎴埆鐨勫簲鐢ㄧ▼搴忕殑娑堟伅錛岄渶瑕佸埄鐢ㄥ皢鑷繁緙栧啓鐨凞LL娉ㄥ叆鍒板埆浜虹殑DLL鍦板潃絀洪棿涓墠鍙互杈懼埌鎷︽埅鍒漢娑堟伅鐨勭洰鐨勩傚彧鏈夊皢鎴戜滑鐨凞LL鎻掑叆鍒板埆鐨勫簲鐢ㄧ▼搴忕殑鍦板潃絀洪棿涓墠鑳藉瀵瑰埆鐨勫簲鐢ㄧ▼搴忚繘琛屾搷浣滐紝HOOK甯姪鎴戜滑瀹屾垚浜嗚繖浜涘伐浣滐紝鎴戜滑鍙渶瑕佷嬌鐢℉OOK鏉ユ嫤鎴寚瀹氱殑娑堟伅錛屽茍鎻愪緵蹇呰鐨勫鐞嗗嚱鏁板氨琛屼簡銆傛垜浠繖閲屼粙緇嶆嫤鎴湪MSN鑱婂ぉ瀵硅瘽妗嗕笂鐨勯紶鏍囨秷鎭紝瀵瑰簲鐨凥OOK綾誨瀷鏄疻H_MOUSE銆?/p>

棣栧厛鎴戜滑瑕佸緩绔嬩竴涓敤鏉OOK鐨凞LL銆傝繖涓狣LL鐨勫緩绔嬪拰鏅氱殑DLL寤虹珛娌℃湁浠涔堝叿浣撶殑鍖哄埆錛屼笉榪囨垜浠繖閲屾彁渚涚殑鏂規硶鏈夊啓涓嶅悓銆傝繖閲屼嬌鐢ㄩ殣寮忓鍏LL鐨勬柟娉曘備唬鐮佸涓嬶細

澶存枃浠?/p>

#pragma once
#ifndef MSNHOOK_API
#define MSNHOOK_API __declspec(dllimport)
#endif

MSNHOOK_API BOOL WINAPI SetMsnHook(DWORD dwThreadId);//瀹夎MSN閽╁瓙鍑芥暟
MSNHOOK_API void WINAPI GetText(int &x,int &y,char ** ptext);//瀹夎MSN閽╁瓙鍑芥暟
MSNHOOK_API HWND WINAPI GetMyHwnd();//瀹夎MSN閽╁瓙鍑芥暟

==================================================

DLL 鐨凜PP鏂囦歡

#include "stdafx.h"
#include "MSNHook.h"
#include <stdio.h>

// 涓嬮潰鍑犲彞鐨勫惈涔夋槸鍛婅瘔緙栬瘧鍣ㄥ皢鍚勫彉閲忔斁鍏ュ畠鑷繁鐨勬暟鎹叡浜妭涓?/p>

#pragma data_seg("Shared")
HHOOK g_hhook = NULL;
DWORD g_dwThreadIdMsn = 0;
POINT MouseLoc={0,0};
char text[256]={0};
HWND g_Hwnd = NULL;
#pragma data_seg()

//鍛婅瘔緙栬瘧鍣ㄨ緗叡浜妭鐨勮闂柟寮忎負錛氳錛屽啓錛屽叡浜?/p>

#pragma comment(linker,"/section:Shared,rws")

HINSTANCE g_hinstDll = NULL;

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
g_hinstDll = (HINSTANCE)hModule;
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}

LRESULT WINAPI GetMsgProc(int nCode,WPARAM wParam, LPARAM lParam);

BOOL WINAPI SetMsnHook(DWORD dwThreadId)
{
OutputDebugString("SetMsnHook");
BOOL fOK = FALSE;
if(dwThreadId != 0)
{
OutputDebugString("SetMsnHook dwThreadId != 0");
g_dwThreadIdMsn = GetCurrentThreadId();

//瀹夎WM_MOUSE閽╁瓙鍜屽鐞嗗嚱鏁癎etMsgProc
g_hhook = SetWindowsHookEx(WH_MOUSE,GetMsgProc,g_hinstDll,dwThreadId);
fOK = (g_hhook != NULL);
if(fOK)
{
fOK = PostThreadMessage(dwThreadId,WM_NULL,0,0);
}
else
{
fOK = UnhookWindowsHookEx(g_hhook);
g_hhook = NULL;
}
}
return(fOK);
}

LRESULT WINAPI GetMsgProc(int nCode,WPARAM wParam, LPARAM lParam)
{

char temp[20];
sprintf(temp,"%dn",nCode);
OutputDebugString("temp");
if (nCode==HC_ACTION)
{
MOUSEHOOKSTRUCT *l=(MOUSEHOOKSTRUCT *)lParam;
MouseLoc=l->pt; //閫侀紶鏍囦綅緗?br />
//char text[256] = "";
HWND hWnd = WindowFromPoint(l->pt);
if(hWnd)
{
//GetWindowText(hWnd,text,256);
SendMessage(hWnd,WM_GETTEXT,256,(LPARAM)(LPCTSTR)text);
// strcpy(text,"123455555");
SendMessage(hWnd,WM_SETTEXT,256,(LPARAM)(LPCTSTR)text);
g_Hwnd = hWnd;
}
//SendMessage(WindowFromPoint(l->pt),WM_GETTEXT,256,(LPARAM)(LPCTSTR)psw);
}

return(CallNextHookEx(g_hhook,nCode,wParam,lParam));
}

void WINAPI GetText(int &x,int &y,char ** ptext)
{
x = MouseLoc.x;
y = MouseLoc.y;
*ptext = text;
}

HWND WINAPI GetMyHwnd()
{
return g_Hwnd;
}

涓婇潰鏄鐞嗛挬瀛愮殑DLL浠g爜錛屼笅闈㈡垜浠璁╄繖涓狣LL璧蜂綔鐢ㄨ繕闇瑕佷竴涓惎鍔ㄩ儴鍒嗭紝閫氳繃榪欎釜鍚姩閮ㄥ垎鎴戜滑鎵嶈兘璁╂垜浠殑閽╁瓙鍑芥暟鐪熸鐨勬敞鍏ュ埌緋葷粺鍏朵粬鍑芥暟涓傛垜浠繖閲屼嬌鐢ㄤ釜瀵硅瘽妗嗙殑紼嬪簭錛岀▼搴忛潪甯哥畝鍗曪細涓涓寜閽敤鏉ュ惎鍔ㄩ挬瀛愶紝涓涓敤鏉ュ仠姝紝涓涓猅IMER鐢ㄦ潵鍒鋒柊鏄劇ず錛岃繕鏈変竴涓狤DITBOX鐢ㄦ潵鎺ュ彈淇℃伅銆?/p>

紼嬪簭濡備笅錛?/p>

//鍖呭惈DLL鍑芥暟瀵煎嚭鐨勫ご鏂囦歡
#include "MSNHook.h"

//闅愬紡瀵煎叆

#pragma comment(lib,"MSNHook.lib")

//澹版槑瀵煎叆鍑芥暟

__declspec(dllimport) BOOL WINAPI SetMsnHook(DWORD dwThreadId);
__declspec(dllimport) void WINAPI GetText(int &x,int &y,char ** ptext);
__declspec(dllimport) HWND WINAPI GetMyHwnd();//瀹夎MSN閽╁瓙鍑芥暟

void CTestMSNHookDlg::OnBnClickedOk()
{

//閫氳繃SPY++鍙互鐪嬪埌MSN鑱婂ぉ瀵硅瘽妗嗙獥鍙g被鏄疘MWindowClass錛岄氳繃榪欎釜寰楀埌璇ョ獥鍙e彞鏌?br />CWnd *pMsnWin = FindWindow(TEXT("IMWindowClass"),NULL);
if(pMsnWin == NULL) return ;

//閫氳繃紿楀彛鍙ユ焺寰楀埌瀵瑰簲鐨勭嚎紼嬬殑ID
SetMsnHook(GetWindowThreadProcessId(pMsnWin->GetSafeHwnd(),NULL));
MSG msg;
GetMessage(&msg,NULL,0,0);
SetTimer(101,100,NULL);

}

void CTestMSNHookDlg::OnTimer(UINT_PTR nIDEvent)
{

//鍒鋒柊娑堟伅
char * pText = NULL;
int x = 0,y = 0;
GetText(x,y,&pText);
if(x ==0 && y ==0) return ;
m_Edit.Format("%d:%d:%s",x,y,pText);
//m_Edit = pText;
UpdateData(FALSE);

HWND hWnd = GetMyHwnd();
CWnd * pWnd = CWnd::FromHandle(hWnd);
pWnd->GetWindowText(m_Edit);
CDialog::OnTimer(nIDEvent);
}

void CTestMSNHookDlg::OnBnClickedButton1()
{

//鍏抽棴
KillTimer(101);
SetMsnHook(0);
OnCancel();
}

濂戒簡錛屽熀鏈笂灝辮繖浜涗簡銆傝繖閲屾湁涓棶棰橈紝鎴戞湰鎯沖緱鍒癕SN鐢ㄦ埛鑱婂ぉ鏃惰緭鍏ョ殑鑱婂ぉ淇℃伅錛岃繖閲岄氳繃WM_GETTEXT娑堟伅鐨勪笉鍒幫紝濡傛灉鏈夌煡閬撶殑鏈嬪弸鍛婅瘔涓澹般?/p>

colys 2007-02-08 20:47 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              亚洲一区二区视频在线| 久久人人爽国产| 免费看的黄色欧美网站| 香蕉成人伊视频在线观看| 亚洲天堂av在线免费观看| 一本色道**综合亚洲精品蜜桃冫 | 欧美三级视频在线播放| 欧美日本韩国在线| 国产精品成人观看视频免费| 欧美日韩国产在线播放| 国产精品久久网| 国产视频在线观看一区二区| 狠狠综合久久| 亚洲精品在线二区| 午夜亚洲一区| 欧美大片在线观看一区| 一本久久综合亚洲鲁鲁| 久久国产精品久久久| 久久综合中文色婷婷| 欧美日韩一区二区视频在线 | 亚洲福利视频一区| 亚洲小说欧美另类社区| 久久久激情视频| 欧美日韩一视频区二区| 国产亚洲激情在线| 一区二区国产精品| 欧美sm视频| 欧美一区二区三区在线看| 欧美精品一区二区在线播放| 国产精品拍天天在线| 亚洲激情另类| 久久久国产视频91| 99精品国产99久久久久久福利| 久久九九免费视频| 欧美日韩一区在线观看视频| 亚洲国产岛国毛片在线| 欧美亚洲免费电影| 日韩视频欧美视频| 欧美国产成人在线| 娇妻被交换粗又大又硬视频欧美| 亚洲亚洲精品在线观看| 亚洲第一精品福利| 亚洲最新视频在线播放| 欧美va亚洲va日韩∨a综合色| 国产亚洲一级高清| 香蕉尹人综合在线观看| 99国产精品久久久久久久| 欧美肥婆在线| 亚洲日产国产精品| 欧美国产91| 日韩一区二区精品在线观看| 久久国产一区二区| 99精品国产99久久久久久福利| 免费日韩一区二区| 亚洲国产91色在线| 欧美成熟视频| 欧美电影免费观看高清完整版| 亚洲高清在线精品| 噜噜爱69成人精品| 久久免费视频在线| 在线观看欧美亚洲| 老司机久久99久久精品播放免费 | 亚洲欧美色一区| 夜夜嗨av一区二区三区免费区| 欧美日韩成人激情| 亚洲午夜日本在线观看| 亚洲天堂激情| 国产美女精品| 久久久人成影片一区二区三区观看 | 欧美日韩国产麻豆| 在线中文字幕日韩| 亚洲视频大全| 国产亚洲一区二区在线观看| 久久精品人人| 国内自拍视频一区二区三区| 国产精品成人观看视频免费| 亚洲伊人观看| 欧美一级久久久久久久大片| 国产在线视频欧美| 欧美成人官网二区| 欧美日韩极品在线观看一区| 亚洲欧美中文另类| 久久精品一区二区三区四区| 亚洲精品乱码久久久久久日本蜜臀| 亚洲美女av电影| 国产亚洲午夜| 亚洲人成亚洲人成在线观看图片| 欧美性猛交视频| 久久一区免费| 欧美日韩亚洲天堂| 久久久久欧美精品| 欧美日本韩国| 久久综合九色综合欧美狠狠| 欧美www在线| 午夜欧美精品| 免费观看日韩av| 久久成人人人人精品欧| 免费视频久久| 欧美一区二区视频免费观看| 六月天综合网| 欧美亚洲网站| 欧美国产第二页| 开心色5月久久精品| 欧美日韩在线视频一区二区| 麻豆成人小视频| 在线一区免费观看| 欧美日韩在线免费视频| 亚洲特级片在线| 亚洲欧美在线一区二区| 亚洲人成人99网站| 亚洲制服av| 亚洲美女精品一区| 久久精品国产99| 午夜日韩在线观看| 欧美日韩国产页| 亚洲国产综合在线看不卡| 国产一区二区三区无遮挡| 日韩午夜电影在线观看| 一区在线播放视频| 亚洲欧美美女| 亚洲制服丝袜在线| 欧美激情第3页| 免费亚洲电影在线| 国产一区二区日韩精品欧美精品 | 欧美国产日本在线| 国产私拍一区| 亚洲综合丁香| 亚洲淫性视频| 欧美日韩在线三区| 日韩一区二区精品| 日韩亚洲精品视频| 你懂的一区二区| 欧美成人a∨高清免费观看| 国语自产偷拍精品视频偷 | 久久国产一区| 国产精品色婷婷| 亚洲女性裸体视频| 亚洲欧美日韩精品在线| 亚洲人成在线影院| 久久躁日日躁aaaaxxxx| 国产性猛交xxxx免费看久久| 亚洲无玛一区| 欧美制服第一页| 国产欧美一区二区白浆黑人| 亚洲欧美日韩一区在线观看| 欧美一区二区视频在线观看| 国产精品日韩在线播放| 亚洲女同精品视频| 久久久久成人精品免费播放动漫| 韩日欧美一区二区| 欧美成人精品高清在线播放| 亚洲美女诱惑| 欧美中文字幕在线观看| 黄色欧美日韩| 欧美激情麻豆| 亚洲欧美精品suv| 欧美成人精品不卡视频在线观看| 亚洲精品久久7777| 国产精品久久久久99| 久久福利资源站| 91久久精品国产91性色| 亚洲自拍偷拍网址| 国产午夜精品美女毛片视频| 久久久久久网| 在线视频一区观看| 久久久久久电影| 日韩西西人体444www| 国产乱码精品1区2区3区| 久久精品2019中文字幕| 国产视频欧美| 欧美电影免费| 欧美激情按摩| 亚洲资源在线观看| 裸体歌舞表演一区二区| 极品少妇一区二区三区精品视频 | 国产亚洲一级高清| 久久野战av| 亚洲精品国产精品国自产在线 | 一区二区三区精品在线| 欧美三级在线播放| 亚洲综合电影| 欧美激情精品久久久久| 亚洲人成在线播放| 亚洲制服少妇| 亚洲国产毛片完整版 | 亚洲一区日本| 在线国产亚洲欧美| 国产精品成人一区二区三区夜夜夜 | 欧美激情bt| 久久久久成人网| 日韩视频免费大全中文字幕| 欧美激情精品久久久久久大尺度 | 亚洲网站视频| 一区二区在线免费观看| 亚洲综合日韩在线| 欧美区高清在线| 久久成人精品视频| 一本久道久久久| 亚洲电影自拍| 伊人一区二区三区久久精品|