锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩国产91,亚洲无亚洲人成网站77777,国产精品入口http://m.shnenglu.com/justin-shi/category/6153.html<font>&nbsp;</font> zh-cnSun, 20 Dec 2009 01:20:00 GMTSun, 20 Dec 2009 01:20:00 GMT60鎶鏈蹇樺綍http://m.shnenglu.com/justin-shi/archive/2009/12/18/103441.html騫藉菇騫藉菇Fri, 18 Dec 2009 01:20:00 GMThttp://m.shnenglu.com/justin-shi/archive/2009/12/18/103441.htmlhttp://m.shnenglu.com/justin-shi/comments/103441.htmlhttp://m.shnenglu.com/justin-shi/archive/2009/12/18/103441.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/103441.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/103441.html杞竴浜涗粠shell32.dll瀵煎嚭鐨勫嚱鏁?br>
澶栧3瀵硅瘽妗?br>
澶栧3瀵硅瘽妗嗙殑縐樺瘑

甯歌鐨刉indows鐨勯氱敤瀵硅瘽妗嗚灝佽鍦–omdlg32.dll錛岃繖緇欐垜浠殑緙栫▼鎻愪緵浜嗗緢澶х殑渚垮埄銆備絾瀹冭繕涓嶅瀹屾暣錛屾垜浠湪緋葷粺閲岀粡甯歌兘鐪嬪埌澶ч噺鐨勫彲閲嶅浣跨敤鐨勫璇濇,浣嗗湪Windows鐨勬枃妗i噷浣犲嵈鎵句笉鍒板畠浠殑璋冪敤鏂規硶銆傝屽鏋滄垜浠嚜宸卞幓鍋氳繖鏍風殑鐣岄潰鏄潪甯歌垂鏃惰垂鍔涚殑鑰屼笖涔熸槸娌℃湁蹇呰鐨勶紝鍥犱負榪欎簺瀵硅瘽妗嗗疄闄呬笂寰堝鏄撳緱鍒般傝繖閲屾垜瑕佷粙緇嶄竴浜涘凡緇忎紬鎵鍛ㄧ煡鎴栦笉涓鴻鐭ョ殑瀵硅瘽妗嗭紝瀹冧滑鍙互搴旂敤鍦ㄦ垜浠殑紼嬪簭涓嬌紼嬪簭鏄懼緱闈炲父鍙嬪ソ鍜屼笓涓氥?br>
嫻忚鏂囦歡澶瑰璇濇



鍥?.23

澶у鏁癉elphi紼嬪簭鍛橀兘鐭ラ亾濡備綍浣跨敤VCL鐨凾OpenDialog鎺т歡鏉ヨ鐢ㄦ埛嫻忚灝嗚鎵撳紑鐨勬枃浠躲傜劧鑰屾湁鏃朵綘鍙兘鍙兂璁╃敤鎴烽夋嫨鏂囦歡澶硅屼笉鏄壒瀹氱殑鏂囦歡錛寃indows宸茬粡鎻愪緵浜嗕竴涓繖鏍風殑瀵硅瘽妗嗗鍥?.23鎵紺恒傛垜浠彲浠ラ氳繃鍏紑鐨勫嚱鏁癝HBrowseForFolder鏉ヨ皟鐢?(榪欎釜鍑芥暟瀹氫箟鍦⊿hlObj鍗曞厓)錛屽嚱鏁板畾涔夊涓嬶細

function SHBrowseForFolder(var BrowseInfo: TBrowseInfo): PItemIDList; stdcall;

榪欎釜鍑芥暟鍙湁涓涓弬鏁幫紝浣嗚繖涓弬鏁版槸涓涓瘮杈冨鏉傜殑璁板綍綾誨瀷

    TBrowseInfo = packed record

      hwndOwner: HWND;

      pidlRoot: PItemIDList;

      pszDisplayName: PChar;

      lpszTitle: PChar;

      ulFlags: UINT;

      lpfn: TFNBFFCallBack;

      lParam: LPARAM;

      iImage: Integer;

    end;


hwndOwner鏁版嵁鎴愬憳鍖呭惈瀵硅瘽妗嗙殑鐖剁獥浣撶殑紿楀彛鍙ユ焺錛屽彲浠ユ妸瀹冭鎴?銆侾IdlRoot鏁版嵁鎴愬憳鎸囧悜涓涓狿IDL鐨勬寚閽堝搴斾簬瀵硅瘽妗嗗垵濮嬪寲鏃剁殑鏍圭洰褰曘傛寚瀹氫簡PIdlRoot鍚庯紝灝卞彧鏈夋牴鐩綍鍙婂畠鐨勫瓙鐩綍浼氬嚭鐜板湪瀵硅瘽妗嗕腑銆傚彲浠ヨ瀹氬畠涓簄il錛岃繖鏃剁己鐪佺殑鏍圭洰褰曟槸妗岄潰錛宲szDisplayName 鏁版嵁鎴愬憳鎸囧悜涓涓紦鍐插尯鍙互鐢ㄦ潵鍌ㄥ瓨琚敤鎴烽変腑鐨勬枃浠跺悕錛岀紦鍐插尯鐨勫ぇ灝忚嚦灝戜負MAX_PATH 榪欎釜甯告暟閭d箞澶э紝鍚﹀垯閬囧埌鐗瑰埆闀跨殑鏂囦歡鍚嶄細婧㈠嚭銆俵pszTitle 鏁版嵁瀵硅薄鎸囧悜涓涓互null緇撳熬鐨勫瓧絎︿覆錛屽瓧絎︿覆浣滀負瀵硅瘽妗嗙殑鏍囬鏉ユ樉紺恒傛敞鎰忔爣棰樹笉瑕佸お闀匡紝鍚﹀垯鏄劇ず鏃朵細琚埅鏂倁lFlags 鏍囧織鏁版嵁瀵硅薄鐢ㄦ潵闄愬埗鍦ㄥ璇濇涓樉紺虹殑鏂囦歡澶圭被鍨嬨傚彲浠ヨ瀹氬畠涓?鎴栦笅鍒楀肩殑緇勫悎錛?br>
    //鍦ㄥ璇濇涓細鍖呭惈涓涓姸鎬佸尯錛屽洖璋冨嚱鏁板彲浠ラ氳繃鍚戝璇濇鍙戦佹秷鎭潵璁懼畾鐘舵?br>
BIF_STATUSTEXT

    //鍙厑璁擱夋嫨鏍囧噯鏂囦歡緋葷粺錛岃嫢閫変簡闈炴爣鍑嗙殑鏂囦歡澶瑰鎵撳嵃鏈猴紝紜鎸夐挳浼氬彉鐏?br>
    BIF_RETURNONLYFSDIRS   = $0001;

    //涓嶉夋嫨緗戠粶鏂囦歡澶?br>
    BIF_DONTGOBELOWDOMAIN  = $0002;

    // 緇欑姸鎬佹潯鐣欏嚭絀虹櫧

    BIF_STATUSTEXT         = $0004;

    // 鍙夋嫨鏂囦歡緋葷粺鐨勪笂綰х洰褰?br>
    BIF_RETURNFSANCESTORS  = $0008;

    //鍙夋嫨璁$畻鏈?br>
    BIF_BROWSEFORCOMPUTER  = $1000;

    //鍙夋嫨鎵撳嵃鏈?br>
    BIF_BROWSEFORPRINTER   = $2000;

    //鍖呮嫭鏂囦歡涔熷彲浠ラ?br>
    BIF_BROWSEINCLUDEFILES = $4000;


娉ㄦ剰錛氬鏋滀綘鎯沖璇濇鏄劇ずlpszTitle閲岀殑鐢ㄦ埛瀹氬埗鐨勭姸鎬佹潯淇℃伅錛屽繀欏誨寘鎷?BIF_STATUSTEXT鏍囪瘑銆侺pfn鏁版嵁瀵硅薄鏄竴涓洖璋冨嚱鏁扮被鍨嬬殑鎸囬拡錛屽嚱鏁扮被鍨嬪涓嬶細

    TFNBFFCallBack = function(DialogHandle: HWND;

      MessageID: UINT; PIDL: PItemIDList; Data: LPARAM):Integer; stdcall;


榪欐槸涓涓洖璋冨嚱鏁幫紝鍙互鐢ㄦ潵鍦ㄥ悓鐢ㄦ埛浜や簰鏃舵帶鍒跺拰鏇存柊瀵硅瘽妗嗙殑鏄劇ず銆傚鏋滀綘涓嶆兂鎺у埗瀵硅瘽妗嗭紝鍙互鎶婂畠璁炬垚nil錛宭Param 鏁版嵁瀵硅薄鍏佽浣犲湪鍥炶皟鍑芥暟涓互鍙傛暟lpfn褰㈠紡榪斿洖涓涓寚閽堬紙閫氬父鎴戜滑鐢ㄥ畠鏉ヨ繑鍥炲璞★級錛屽綋鐒朵篃鍙互鎶婂畠璁炬垚涓?銆侷Image鏁版嵁鎴愬憳涓嶉渶瑕佽緗紝鍥犱負瀹冩槸鐢ㄦ潵鎺ユ敹緋葷粺涓悓鏂囦歡澶圭浉鍏崇殑鍥炬爣鍒楄〃绱㈠紩鐨勶紝鎴戜滑榪欓噷璁懼畠涓?銆?br>
SHBrowseForFolder鍑芥暟榪斿洖涓涓敮涓鐨勬寚鍚戣閫夋嫨鐨勬枃浠跺す鐨凱IDL銆傚鏋滄枃浠跺す鏄竴涓紶緇熺殑鏂囦歡瀵硅薄鐨勮瘽錛屽彲浠ョ敤鍑芥暟SHGetPathFromIDList鎶奝IDL杞崲涓虹湡瀹炵殑鐩綍銆傚悓鏃訛紝浣滀負璋冪敤鑰咃紝蹇呴』璐熻矗閲婃斁琚繑鍥炵殑item identifier list錛屼嬌鐢↖Malloc COM 鎺ュ彛鏉ラ噴鏀俱?br>
娉ㄦ剰錛氫笉瑕佺敤FreeMem鎴栧叾浠栨柟娉曟潵閲婃斁 PIDL 錛岃繖鏄洜涓哄澹崇殑鍐呭瓨綆$悊鏄嫭绔嬬殑錛屽彧鑳界敤IMalloc鏉ラ噴鏀俱?br>
鐜板湪鎴戜滑宸茬粡鍙互鏄劇ず瀵硅瘽妗嗕簡錛岄偅璁╂垜浠洿娣卞叆涓姝ョ湅鐪嬪浣曡兘澶熸帶鍒跺鐢ㄦ埛鍔ㄤ綔鐨勫弽搴旓紝榪欏氨瑕佺敤鍒頒簡鍥炶皟鍑芥暟 TFNBFFCallBack銆?娉ㄦ剰鍥炶皟鍑芥暟鐨勬剰鎬濆氨鏄紝浣犲彧鏄疄鐜頒簡瀹冿紝緋葷粺灝辯煡閬撲粈涔堟椂鍊欏幓璋冪敤瀹冿紝灝卞ソ姣斾竴涓畧鏍緟鍏旂殑渚嬪瓙銆?br>
DialogHandle鍙傛暟浠h〃瀵硅瘽妗嗙獥鍙e彞鏌勩傞氬父鍙互鐢ㄨ繖涓彞鏌勭粰瀵硅瘽妗嗗彂娑堟伅錛孧essageID 鍙傛暟騫朵笉鏄竴涓猅Message 緇撴瀯鐨勮褰曪紝瀹冩槸瀵硅瘽妗嗛氳繃鍥炶皟鍑芥暟鍙戠粰鐢ㄦ埛娑堟伅鐨勶紝瀹冨彲浠ユ槸涓嬮潰涓や釜鍊鹼細

    BFFM_INITIALIZED = 1;   // 瀵硅瘽妗嗗皢瑕佹樉紺?br>
    BFFM_SELCHANGED  = 2; // 鐢ㄦ埛閫変腑浜嗘煇欏?


PIDL鍙傛暟鍖呭惈鍏朵粬鐨勯澶栦俊鎭傚鏋淢essageID 鏄?BFFM_INITIALIZED錛孭IDL灝嗙瓑浜巒il銆傚鏋淢essageID鏄疊FFM_SELCHANGED錛孭IDL鐨勫煎皢鏄竴涓狿IDL 瀵瑰簲浜庣敤鎴烽夋嫨鐨勬枃浠跺す銆侱ata 鍙傛暟鍖呭惈鐢ㄦ埛浠樼粰TbrowseInfo璁板綍涓殑Lparam鏁版嵁鎴愬憳鐨勫鹼紝閫氬父鍙互浼犻掍竴涓璞℃寚閽堛備笅闈㈡槸涓涓畝鍗曠殑鍥炶皟鍑芥暟鐨勪緥瀛愶細

    function BrowseForFolderCallback(DialogHandle: HWND;

      MessageID: UINT; PIDL: PItemIDList; Data: LPARAM):

      Integer;

    begin

      //鍝嶅簲瀵硅瘽妗嗙殑閫氱煡娑堟伅

      case (MessageID) of

        BFFM_INITIALIZED:

          DialogInitialized(DialogHandle, Data);

        BFFM_SELCHANGED:

          HandleNewSelection(DialogHandle, PIDL, Data);

      end;

      Result := 0; // 鎬昏繑鍥?.

    end;


鍦ㄥ洖璋冨嚱鏁伴噷錛屽彲浠ユ牴鎹敤鎴風殑杈撳叆鍙戦佷笁涓敤鎴風殑娑堟伅緇欏璇濇錛屼笅闈㈡槸娑堟伅ID:

    // 鏀瑰彉瀵硅瘽妗嗙殑鐘舵佷俊鎭?br>
    BFFM_SETSTATUSTEXT = WM_USER + 100;

    //鎺у埗紜畾鎸夐挳澶辨晥涓庡惁

    BFFM_ENABLEOK      = WM_USER + 101;

    //鏀瑰彉閫夋嫨鐨勬枃浠跺す

    BFFM_SETSELECTION  = WM_USER + 102;


閫氬父錛岃繖浜涙秷鎭彂閫佺粰瀵硅瘽妗嗕嬌涔嬫牴鎹敤鎴風殑閫夋嫨鏇存柊鏄劇ず錛屽綋鐒朵綘涔熷彲浠ュ彂閫佸叾浠栫殑娑堟伅緇欏璇濇錛屾瘮濡傚彲浠ュ彂閫乄M_SETTEXT娑堟伅鏉ユ敼鍙樺璇濇鐨勬爣棰樸?br>
涓嬮潰鏄竴涓彂閫佹秷鎭殑渚嬪瓙錛堣琛?.11錛夛細

PostMessage(DialogHandle, BFFM_SETSELECTION, True, LPARAM(PChar (NewPath)));

琛?.11

Message ID WParam LParam
BFFM_SETSTATUSTEXT 娌℃湁浣跨敤 涓涓寚鍚戞柊鐨勭姸鎬佷俊鎭殑Pchar
BFFM_ENABLEOK 娌℃湁浣跨敤 True浣垮緱紜鎸夐挳鏈夋晥錛孎alse鏃犳晥
BFFM_SETSELECTION 濡傛灉Lparam鏄礬寰勫垯涓篢rue錛岃嫢Lparam鏄疨IDL鍒欎負False 鎸囧悜琚夋嫨鐨勬枃浠惰礬寰勬垨PIDL鐨凱char



鍙﹀瑕佹彁鍒扮殑鏄紝Delphi涔熸彁渚涗簡瀵硅繖涓嚱鏁扮殑灝佽錛岄偅灝辨槸SelectDirectory鍑芥暟銆?br>
鍏充簬瀵硅瘽妗?/strong>

閫氬父鎴戜滑閮借鍦ㄨ嚜宸辯殑紼嬪簭閲屽姞涓婁竴涓叧浜庡璇濇鏉ユ樉紺轟竴浜涚増鏈俊鎭瓑絳夛紝Windows涓烘垜浠彁渚涗簡涓涓爣鍑嗙殑瀵硅瘽妗嗗鍥?.24鎵紺猴紝鍙互鍦ㄤ竴瀹氳寖鍥村唴瀵瑰畠瀹氬埗錛屼笉榪囧畠鍙傚悎鏄劇ず綆鍗曠殑鏍囪瘑鍜屾枃鏈紙鎴戣寰楃敤澶勬瀬灝忥級銆傛垜浠彲浠ラ氳繃鍑芥暟ShellAbout鏉ヨ皟鐢ㄥ畠錛堝0鏄庡湪ShellAPI鍗曞厓閲岋級錛屽嚱鏁板畾涔夊涓?

    function ShellAbout(Owner: HWND; ApplicationName: PChar;

      OtherText: PChar; IconHandle: HICON): Integer; stdcall;


Owner鍙傛暟鏍囪瘑浜嗘嫢鏈夊璇濇鐨勭埗紿椾綋鍙ユ焺錛岄氬父璁句負0錛岃〃鏄庢病鏈夌埗紿椾綋銆侫pplicationName 鍙傛暟鍖呭惈瀵硅瘽妗嗙殑鏍囬錛屽瓧絎︿覆涓彲浠ュ寘鍚?#8220;#”瀛楃錛屽畠鑳借搗鍒板垎鍓茬鐨勪綔鐢ㄣ傝繖縐嶆儏鍐典笅錛屽嚱鏁頒細鎶婂垎鍓茬鍓嶇殑瀛楃涓蹭綔涓烘爣棰樻爮錛屽垎鍓茬鍚庣殑閮ㄥ垎浣滀負 "Microsoft"瀛楃涓插悗鐨勭涓琛屻侽therText鍙傛暟鍖呭惈浜嗘墦綆楁樉紺哄湪Microsoft 鐗堟湰鍜岀増鏉冧俊鎭悗鐨勫瓧絎︿覆銆侷conHandle 鍙傛暟鏍囪瘑浜嗘墦綆楁樉紺哄湪瀵硅瘽妗嗕笂鐨勫浘鏍囨爣璇嗭紝濡傛灉璁句負0錛屽嚱鏁頒細鏄劇ずWindows緙虹渷鐨勫浘鏍囥?br>


鍥?.24




鍥?.25

鏍煎紡鍖栧璇濇

SHFormatDrive鍑芥暟浼氭樉紺轟竴涓牸寮忓寲瀵硅瘽妗嗭紝濡傚浘2.25鎵紺猴紝瀹冩槸涓涓崐鍏紑鐨勫嚱鏁般備絾鐜板湪瀹冧笉鍦ㄥ井杞殑SDK閲屻傜劧鑰屽井杞壙璁ゅ畠鐨勫瓨鍦ㄥ茍鎶婂畠浠嶴hell32.dll閲岀敤鍚嶅瓧鍏紑澹版槑錛孌elphi涓殑鍑芥暟瀹氫箟濡備笅錛?br>
    function SHFormatDrive(Owner: HWND; Drive: UINT;

      FormatID: UINT; OptionFlags: UINT): DWORD; stdcall;


Owner鍙傛暟鏍囪瘑鎷ユ湁瀵硅瘽妗嗙殑紿椾綋鍙ユ焺錛屾枃妗d腑鎺ㄨ崘涓嶈璁句負0錛屼絾瀹為檯涓婂ソ鍍忔病浠涔堝獎鍝嶃侱rive鍙傛暟鏄敤鏉ユ爣璇嗘墦綆楁牸寮忓寲鐨勯┍鍔ㄥ櫒鐨勬暟鍊鹼紝瀹冩槸浠?涓哄簳鐨勶紝浠嶢寮濮?A:=0,B:=1渚濇綾繪帹銆侳ormatID 鍙傛暟鍏佽鎴戜滑鎸囧畾涓涓牸寮忓寲鐨勬ā鏉匡紝閫氬父鎯呭喌涓嬶紝鍙璧嬪間負SHFMT_ID_DEFAULT灝卞彲浠ヤ簡銆侽ptionFlags 鍙傛暟鏄竴涓夐」鎺╃爜錛屾潵紜畾鏍煎紡鍖栫殑閫夐」銆傚綋鍓嶆湁涓や釜閫夐」錛?br>
    SHFMT_OPT_FULL    = $0001; // 蹇熸牸寮忓寲

    SHFMT_OPT_SYSONLY = $0002; // 澶嶅埗緋葷粺鏂囦歡


濡傛灉鍑芥暟璋冪敤澶辮觸錛屼細榪斿洖涓嬪垪閿欒涓殑涓縐嶆潵琛ㄦ槑閿欒鍘熷洜錛岄敊璇父鏁板涓嬶細

    SHFMT_NOFORMAT = $FFFFFFFD;   // 椹卞姩鍣ㄦ棤娉曟牸寮忓寲

    SHFMT_CANCEL   = $FFFFFFFE;   //鏍煎紡鍖栬鍙栨秷浜?br>
    SHFMT_ERROR    = $FFFFFFFF; //鍏朵粬閿欒


Windows NT 鍜?WideChar

鍦ㄨ繘涓姝ョ爺絀舵湭鍏紑鐨勫嚱鏁板墠, 鎴戜滑蹇呴』娓呮涓鐐癸紝瀵逛簬鏈叕寮鐨勫嚱鏁版潵璇翠互null緇撳熬鐨勫瓧絎︿覆綾誨瀷鍙傛暟澶у鏁拌澹版槑涓虹被鍨嬫寚閽堣屼笉鏄疨Char銆傝繖鏈夌偣鍍忛櫡闃憋紝浣嗗繀欏繪壙璁よ繖鏄簨瀹炪傚湪Win 9X涓婃墍鏈夌殑瀛楃涓茬被鍨嬪弬鏁板0鏄庝負PAnsiChar錛岃屽湪Windows NT涓婅澹版槑涓篜WideChar銆傚鏋滀綘鎯充綘鐨勫簲鐢ㄧ▼搴忛傚簲鎵鏈夊鉤鍙幫紝浣犲繀欏昏冭檻涓ょ鎯呭喌錛屽湪榪愯鏃惰鍒ゆ柇騫沖彴綾誨瀷錛岃繖鏄緢璁ㄥ帉鐨勶紝浣嗚繖涔熸槸浣跨敤鏈叕寮鐨凙PI鐨勪唬浠楓?br>
閫夋嫨鍥炬爣瀵硅瘽妗?/strong>



鍥?.26

鎴戜滑瑕佽璁虹殑絎竴涓畬鍏ㄦ湭鍏紑鐨勫嚱鏁版槸PickIconDlg銆傚鍥?.26鎵紺鴻繖涓嚱鏁頒細鏄劇ず涓涓璇濇錛岀敤鎴峰彲浠ョ敤鏉ヤ粠鏂囦歡涓夋嫨涓涓浘鏍囪祫婧愩傚畠閫氬父鏄敤鏂囦歡綾誨瀷緙栬緫鍣ㄦ潵鍏寵仈鍥炬爣鍜屾煇涓鏂囦歡綾誨瀷鐨勶紝涔熶細鍦ㄥ揩鎹鋒柟寮忓璇濇涓璋冪敤鏉ヤ慨鏀瑰揩鎹鋒柟寮忕殑鍥炬爣銆傝繖涓嚱鏁頒粠Shell32.dll 鐢ㄥ?2鏉ュ叕寮鍑烘潵錛屽嚱鏁板畾涔夊涓嬶細

    function PickIconDlg(Owner: HWND; FileName: Pointer;

      MaxFileNameChars: DWORD; var IconIndex: DWORD):LongBool; stdcall;


Owner鍙傛暟鍜屼笂闈㈢殑鎰忎箟綾諱技銆侳ileName 鍙傛暟鎸囧悜涓涓紦鍐插尯錛屽寘鍚簡琚祻瑙堝浘鏍囩殑鏂囦歡鍚嶏紝緙撳啿鍖鴻涓嶅皬浜嶮AX_PATH錛?銆侻axFileNameChars 鎸囧畾瀛楃鏁伴噺澶у皬銆侷conIndex 甯告暟鏄互0涓哄簳鐨勫浘鏍囩儲寮曪紝褰撳璇濇鎵撳紑鏃朵細鎶婄劍鐐瑰畾鍦↖conIndex瀵瑰簲鐨勫浘鏍囦笂錛屽嚱鏁拌繑鍥炲悗錛孖conIndex鎸囧悜鏈鍚庤閫夌殑鍥炬爣绱㈠紩銆傚鏋滅敤鎴風偣浜嗗彇娑堟寜閽紝鍑芥暟榪斿洖False銆?br>
榪愯紼嬪簭瀵硅瘽妗?/strong>




鍥?.27

RunFileDlg鍑芥暟鏄浉褰撶伒媧葷殑錛屽鍥?.27鎵紺哄氨鏄皟鐢ㄥ紑濮嬭彍鍗曠殑榪愯瀛愯彍鍗曞悗浼氭樉紺虹殑瀵硅瘽妗嗭紝鎴戜滑閫氳繃鍊?1鎶婂畠浠嶴hell32.dll鏆撮湶鍑烘潵銆備笅闈㈡槸鍑芥暟澹版槑錛?br>
    procedure RunFileDlg(Owner: HWND; IconHandle: HICON;

      WorkPath: Pointer; Caption: Pointer; Description: Pointer; Flags: UINT); stdcall;


Owner鍙傛暟灝變笉鐢ㄥ啀璇翠簡銆侷conHandle鍙傛暟鏄樉紺哄湪瀵硅瘽妗嗕笂鐨勫浘鏍囧彞鏌勶紝濡傛灉涓簄il錛岀己鐪佺殑icon灝嗕細浣跨敤銆俉orkPath 鍙傛暟鎸囧悜涓涓瓧絎︿覆鏉ユ寚瀹氬簲鐢ㄧ▼搴忚繍琛岀殑宸ヤ綔璺緞銆?Title 鍙傛暟鎸囧悜浣滀負瀵硅瘽妗嗘爣棰樼殑瀛楃涓詫紝濡傛灉涓簄il錛屽氨浣跨敤緙虹渷鐨勬爣棰樸侱escription 鍙傛暟鎸囧悜涓涓弿榪板瓧絎︿覆錛屼富瑕佹槸鍛婅瘔鐢ㄦ埛濡備綍鍘誨仛錛屽彲浠ヨ涓簄il錛岃繖鏃朵嬌鐢ㄧ己鐪佺殑鎻忚堪銆?Flags鍙傛暟鐢ㄤ竴緇勪綅鎺╃爜鏉ヨ瀹氬璇濇鐨勫睘鎬с備笅闈㈡槸瀹氫箟錛?br>
    RFF_NOBROWSE      = $01;   // 縐誨幓嫻忚鎸夐挳

    RFF_NODEFAULT     = $02;   // 鏃犵己鐪佺殑閫夐」

    RFF_CALCDIRECTORY = $04;   // 鐢辨枃浠跺悕紜畾宸ヤ綔璺緞

    RFF_NOLABEL       = $08;   // 鍘繪帀緙栬緫妗嗘爣絳?br>
    RFF_NOSEPARATEMEM = $20; // 鍘繪帀鍦ㄥ崟鐙殑鍐呭瓨絀洪棿榪愯鐨勫閫夋 (鍙NT鏈夋晥)


榪欎釜瀵硅瘽妗嗕竴涓緢濂界殑鐗規ф槸鍏佽浣犳帶鍒剁敤鎴峰彲浠ヨ繍琛岀殑搴旂敤紼嬪簭銆傚綋鐢ㄦ埛閫夋嫨浜嗙‘璁ゆ寜閽紝瀵硅瘽妗嗙殑鐖剁獥浣撲細鍙戦佷竴涓氱煡娑堟伅鏉ヤ紶閫掑皢瑕佽繍琛岀殑紼嬪簭淇℃伅銆傞氱煡娑堟伅鏄竴涓?WM_NOTIFY娑堟伅錛屽畠鐨勯氱煡浠g爜璁懼畾涓篟FN_VALIDATE (-510)錛岀劧鍚巐Param鎸囧悜涓涓?TNM_RunFileDlg璁板綍銆傚畾涔夊涓嬶細

    TNM_RunFileDlg = packed record

      hdr: TNMHdr;

      lpFile: Pointer;

      lpDirectory: Pointer;

      nShow: LongBool;

    end;


hdr鏁版嵁瀵硅薄鏄疶NMHdr綾誨瀷錛屽畠鏄竴縐嶆爣鍑嗙殑Windows鏁版嵁綾誨瀷錛屾瘡涓猈M_NOTIFY娑堟伅鐨刲Param鍙傛暟閮戒細鎸囧悜榪欎釜鏁版嵁鎴愬垎銆傚悓鏃舵牴鎹笉鍚岀殑娑堟伅綾誨瀷錛屽彲鑳戒竴浜涢澶栫殑鏁版嵁璺熷湪璁板綍鍚庨潰錛屾爣鍑嗙殑TNMHdr璁板綍瀹氫箟濡備笅錛?br>
    TNMHdr = packed record

      hwndFrom: HWND;

      idFrom: UINT;

      code: UINT;

    end;


璁板綍涓殑hwndFrom鍖呭惈鍙戦佹秷鎭殑紿楀彛鍙ユ焺錛宨dFrom鍒欏寘鍚彂閫佹秷鎭殑鎺т歡鏍囩ず絎︼紝code 涓寘鍚爣璇嗚鍙戦佺殑娑堟伅鐨勯氱煡浠g爜銆?br>
鍦═NMHdr璁板綍鍚庤鎵撳寘鐨勯澶栨暟鎹寘鍚笁涓暟鎹垚鍒嗭細LpFile鎸囧悜涓涓寘鍚皢瑕佽繍琛岀殑鏂囦歡鐨勮礬寰勫瓧絎︿覆錛汱pDirectory鎸囧悜姝e湪榪愯紼嬪簭鐨勫伐浣滅洰褰曞瓧絎︿覆錛涙渶鍚庯紝nShow 鐢ㄦ潵鎸囧畾灝嗚榪愯鐨勫簲鐢ㄧ▼搴忔槸鍚﹀彲瑙併?br>
瀵逛簬鏈枃涓壒瀹氱殑娑堟伅錛屽彧瀵筎NMHdr璁板綍涓殑Code鎰熷叴瓚o紝閫氳繃媯楠孋ode鍙互紜繚鎴戜滑鏀跺埌涓涓繍琛屾枃浠舵牎楠屾秷鎭紝鍚屾椂浣挎垜浠彲浠ュ瓨鍙栭澶栫殑TNM_RunFileDlg鏁版嵁鎴愬憳銆傚綋TNMHdr璁板綍涓殑code絳変簬RFN_VALIDATE(-510)鏃訛紝鍙互鑾峰緱涓涓猅NM_RunFileDlg璁板綍銆備笅闈㈡槸鏍¢獙娑堟伅鐨勪唬鐮侊細

    var

      FileToRun: String;

      ...

      if TheMessage.Msg = WM_NOTIFY then

        if PNMHdr(TheMessage.LParam).code = RFN_VALIDATE then

          WideCharToStrVar(PNM_RUNFILEDLG(

          TheMessage.LParam).lpFile, FileToRun);

    ...


娉ㄦ剰鍙湁褰撴垜浠凡緇忔楠孴NMHdr鐨凜ode涓篟FN_VALIDATE鍚庯紝鎵嶆槧灝凩Param 鍙傛暟涓篜NM_RunFileDlg綾誨瀷銆?br>
閫氱煡娑堟伅鐨勮繑鍥炲煎喅瀹氫簡搴旂敤紼嬪簭鏄惁鑳藉榪愯錛屼笅闈㈡槸鍙兘鐨勫鹼細

    RF_OK     = $00; //鍏佽紼嬪簭榪愯

    RF_CANCEL = $01;   //鍙栨秷鎿嶄綔錛屽叧闂璇濇

    RF_RETRY  = $02; //鍙栨秷鎿嶄綔錛屽璇濇浠嶇劧鎵撳紑


鏌ユ壘鏂囦歡瀵硅瘽妗?/strong>




鍥?.28

璋冪敤鏌ユ壘鏂囦歡瀵硅瘽妗嗙殑鍑芥暟鏄疭HFindFiles錛屽璇濇濡傚浘2.28鎵紺恒傚畠鏄粠Shell32.dll鎸夌儲寮曞?0鍏紑鍑烘潵鐨?

    function SHFindFiles(SearchRoot: PItemIDList;

      SavedSearchFile: PItemIDList): LongBool; stdcall;


SearchRoot 鍙傛暟鍏佽浠庝竴涓壒瀹氱殑鏂囦歡澶瑰紑濮嬫煡鎵撅紝鍚屽湪璧勬簮綆$悊鍣ㄤ腑鍦ㄦ枃浠跺す涓婄敤鍙抽敭鐐瑰嚮鏌ユ壘鑿滃崟鐨勬晥鏋滄槸涓鏍風殑銆傚鏋滆涓簄il錛岄偅涔堟煡鎵炬槸浠庢闈㈠紑濮嬬殑銆?SavedSearchFile 鍙傛暟璁╀綘鎸囧畾涓涓互鍓嶆煡璇繚瀛樼殑鏌ユ壘絳栫暐鏂囦歡錛?.fnd鏂囦歡錛夛紝鏍規嵁浠ュ墠鐨勮瀹氭潵鏌ユ壘錛岃嫢涓嶉渶瑕佺殑璇濆彲浠ヨ瀹氫負nil銆傚鏋滀綘鎸囧畾浜嗕竴涓潪絀哄肩殑SearchRoot PIDL錛岄偅涔堝湪璋冪敤瀹孲HFindFiles鍚庡繀欏昏礋璐i噴鏀炬帀銆備絾鏄湁鐐瑰鎬殑鏄紝濡傛灉浣犳寚瀹氫簡涓涓潪絀虹殑SavedSearchFile PIDL鍙傛暟錛屽嚱鏁版垚鍔熻皟鐢ㄧ殑璇濓紝浣犱笉鑳藉幓閲婃斁榪欎釜 PIDL錛屽惁鍒欎細鍑洪敊錛屼絾濡傛灉璋冪敤澶辮觸浜嗙殑璇濓紝浣犲繀欏婚噴鏀懼畠銆?br>
鍚屽ぇ澶氭暟瀵硅瘽妗嗗嚱鏁頒笉涓鏍鳳紝榪欎釜鍑芥暟鏄潪妯℃佺殑錛屼篃灝辨槸緋葷粺鍦ㄥ彟澶栦竴涓嫭绔嬬殑綰跨▼涓惎鍔ㄥ璇濇錛岀劧鍚庣珛鍗寵繑鍥烇紝瀵硅瘽妗嗕細鍦ㄤ綘鐨勭▼搴忕粨鏉熷悗鑷姩鍏抽棴銆備篃灝辨槸璇翠綘娌℃湁浠諱綍鐩存帴鐨勬柟娉曟潵鍛婅瘔鐢ㄦ埛濡備綍浣跨敤鏌ユ壘鍒扮殑緇撴灉錛屾墍浠ヨ鎯崇煡閬撶敤鎴鋒壘鍒扮殑鏂囦歡鐨勮瘽錛屾渶濂芥槸璁╀綘鐨勭▼搴忔敮鎸佹枃浠舵嫋鏀撅紝浠ヤ究璁╃敤鎴鋒妸鎵懼埌鐨勬枃浠舵嫋鏀劇粰浣犮?br>
鏌ユ壘鐢佃剳瀵硅瘽妗?/strong>

鍚孲HFindFiles姣旇緝鎺ヨ繎鐨勪竴涓嚱鏁版槸SHFindComputer錛岃繖涓嚱鏁拌皟鐢ㄧ殑緇撴灉鍚屽紑濮嬭彍鍗曚笂鏌ユ壘鐢佃剳鑿滃崟璋冪敤鐨勭粨鏋滄槸涓鏍風殑銆傚畠鐨勫弬鏁板悓SHFindFiles瀹屽叏涓鏍鳳紝涓嶅悓涔嬪鍦ㄤ簬瀹冨畬鍏ㄥ拷鐣ヤ紶閫掔粰瀹冪殑鍙傛暟錛屽緢鏄劇劧鏄繚鐣欒搗鏉ヤ負浜嗗皢鏉ユ墿灞曠殑闇瑕併傝繖閲屾垜浠彧瑕佹妸鍙傛暟閮借鎴恘il灝卞彲浠ヤ簡錛屽彟澶栨敞鎰忚繖涓璇濇涔熸槸闈炴ā鎬佺殑銆?SHFindComputer 鏄粠Shell32.dll 浠ョ儲寮曞彿91鍏紑鍑烘潵鐨勶細

    function SHFindComputer(Reserved1: PItemIDList;

      Reserved2: PItemIDList): LongBool; stdcall;



鏌ユ壘鏂囦歡瀵硅瘽妗?/strong>

閫氳繃璋冪敤GetFileNameFromBrowse鍑芥暟鍙互璋冨嚭榪欎釜瀵硅瘽妗嗭紝涓嶈繃璇村疄鍦ㄧ殑錛屽畠瀹為檯涓婂彧鏄疓etOpenFileName 鍑芥暟鐨勭畝鍗曞皝瑁呫傝屾垜浠父鐢ㄧ殑TOpenDialog鎺т歡涔熸槸瀵笹etOpenFileName 鍑芥暟灝佽錛岃繖涓嚱鏁版垜浠緢灝戜細鍘葷洿鎺ョ敤瀹冦備笉榪囪繕鏄啓鍑烘潵鍚э紝瀹冩槸浠嶴hell32.dll閲屾寜绱㈠紩鍊?3鍏紑鍑烘潵鐨勶細

    function GetFileNameFromBrowse(Owner: HWND;

      FileName: Pointer; MaxFileNameChars: DWORD;

      InitialDirectory: Pointer; DefaultExtension: Pointer;

      Filter: Pointer; Caption: Pointer): LongBool; stdcall;




鍥?.29

澶у鏁板弬鏁板搴斾簬OPENFILENAME 緇撴瀯鐨勬垚鍛樸侽wner鍙傛暟鎴戞兂灝變笉鐢ㄥ啀閲嶅浜嗭紝 FileName 鍙傛暟鎸囧悜涓涓垵濮嬪寲瀵硅瘽妗嗙紪杈戞帶鍒舵枃浠跺悕鐨勭紦鍐插尯錛屽嚱鏁拌繑鍥炲悗FileName鍖呭惈琚夋嫨鐨勬枃浠惰礬寰勶紝瀹冪殑澶у皬涓鑸鎴怣AX_PATH錛?閭d箞澶с侻axFileNameChars 鍙傛暟鐢ㄦ潵鎸囧畾FileName緙撳啿鍖虹殑澶у皬銆?InitialDirectory鍙傛暟鎸囧悜瀵硅瘽妗嗗垵濮嬪寲鐨勭洰褰曞悕錛屼絾濡傛灉FileName鍙傛暟琚寚瀹氫簡錛孖nitialDirectory灝變細琚拷鐣ヨ屼嬌鐢‵ileName鍙傛暟涓殑璺緞銆侱efaultExtension鍙傛暟鎸囧悜涓涓寘鍚鎼滅儲鐨勭己鐪佹墿灞曞悕鐨勫瓧絎︿覆銆侳ilter鍙傛暟鎸囧悜涓涓互null緇撳熬鐨勫彲浠ョ敤鏉ュ湪涓嬫媺鍒楄〃涓檺瀹氭枃浠剁被鍨嬬殑榪囨護瀛楃涓層侰aption鍙傛暟鎸囧悜瀵硅瘽妗嗘爣棰樺瓧絎︿覆銆?br>
濡傛灉鐢ㄦ埛閫夋嫨浜嗕竴涓鎵撳紑鐨勬枃浠訛紝鍑芥暟榪斿洖True錛屽綋鏈夐敊璇彂鐢燂紝鐢ㄦ埛閫夋嫨鍙栨秷鎸夐挳鎴栧叧闂璇濇鐨勮瘽浼氳繑鍥濬alse銆?br>
澶栧3瀵硅薄灞炴у璇濇

鍙︿竴涓湭鍏紑鐨勫璇濇鍑芥暟鏄疭HObjectProperties錛屽畠鍙互鐢ㄦ潵鏄劇ず澶栧3瀵硅薄鐨勫睘鎬э紝姣斿椹卞姩鍣ㄣ佹枃浠跺す鎴栨枃浠剁瓑錛岃繍琛屾晥鏋滃鍥?.29鎵紺恒傚嚱鏁板彲浠ヤ粠Shell32.dll涓寜绱㈠紩鍊?78鍏紑鍑烘潵錛屽畾涔夊涓嬶細

    function SHObjectProperties(Owner: HWND; Flags: UINT;

      ObjectName: Pointer; InitialTabName: Pointer):LongBool; stdcall;


Flags鍙傛暟鐢ㄦ潵鎸囧畾ObjectName鍙傛暟瀵瑰簲瀵硅薄鐨勭被鍨嬶紝瀹冨彲浠ユ槸涓嬪垪鏍囪瘑錛?br>
    //鎵撳嵃鏈?br>
    OPF_PRINTERNAME = $01;

    //璺緞

    OPF_PATHNAME    = $02;


ObjectName鍙傛暟鎸囧悜涓涓寘鍚礬寰勫悕鐨勫瓧絎︿覆鎴栨槸瑕佹樉紺哄睘鎬х殑鎵撳嵃鏈哄悕銆傚鏋滄墦鍗版満鏄湰鍦扮殑錛屽彲浠ヤ嬌鐢ㄥ疄闄呯殑鎵撳嵃鏈哄悕錛屽鏋滄槸緗戠粶鎵撳嵃鏈猴紝灝遍渶瑕佷嬌鐢ㄥ畬鏁寸殑UNC鏍峰紡鍚嶇О錛屾瘮濡俓\COMPUTERNAME\PRINTERNAME銆侷nitialTabName鍙傛暟鎸囧悜涓涓睘鎬у璇濇涓〉闈㈠悕縐板瓧絎︿覆錛岀敤鏉ユ寚瀹氳鏄劇ず鐨勭己鐪侀〉闈€傚鏋淚nitialTabName鍙傛暟涓簄il錛屾垨涓嶅尮閰嶄換浣曢〉闈㈢殑鍚嶇О錛岀涓涓睘鎬ч〉闈㈠皢浼氳鏄劇ず銆?br>
濡傛灉鍑芥暟璋冪敤鎴愬姛浼氳繑鍥濼rue錛屽鏋滃け璐ヤ細榪斿洖False銆傝鎯寵幏寰楁墿灞曠殑閿欒淇℃伅錛屽彲浠ヨ皟鐢ˋPI鍑芥暟GetLastError銆傝娉ㄦ剰鐨勬槸榪欎釜瀵硅瘽妗嗘槸闈炴ā鎬佺殑錛岀被浼間簬鏌ユ壘鏂囦歡瀵硅瘽妗嗭紝鎵浠ュ嚱鏁頒竴琚皟鐢紝灝辮偗瀹氫細鏄劇ず涓涓璇濇錛屽悓鏃舵垜浠病鏈夊姙娉曠煡閬撶敤鎴蜂粈涔堟椂鍊欏叧闂簡瀵硅瘽妗嗐?br>
鏄犲皠緗戠粶椹卞姩瀵硅瘽妗?/strong>





鍥?.30

鍥?.30鏄劇ず浜嗘槧灝勭綉緇滈┍鍔ㄥ櫒鐨勫璇濇錛屾垜浠氳繃SHNetConnectionDialog鍑芥暟璋冪敤瀹冿紙win 9x鍜學in NT涓婇兘鏀寔錛夛紝瀹冨彲浠ユ寜绱㈠紩鍊?60浠嶴hell32.dll鏆撮湶鍑烘潵錛屽嚱鏁板畾涔夊涓嬶細

    function SHNetConnectionDialog(Owner: HWND;

      ResourceName: Pointer; ResourceType: DWORD): DWORD; stdcall;


SHStartNetConnectionDialog鍑芥暟涔熶細鏄劇ず鍚屾牱鐨勫璇濇錛屼絾瀹冩樉紺虹殑瀵硅瘽妗嗘槸闈炴ā鎬佺殑錛屽悓鏃跺彧鍦∟T涓婃墠鏀寔銆傚畠鍙互鎸夌儲寮曞?15浠嶴hell32.dll涓叕寮鍑烘潵錛屽嚱鏁板畾涔夊涓嬶細

    function SHStartNetConnectionDialog(Owner: HWND;

      ResourceName: PWideChar; ResourceType: DWORD):DWORD; stdcall;


涓婇潰涓や釜鍑芥暟鐨勫弬鏁板畬鍏ㄧ浉鍚屻傚叾涓璕esourceName鍙傛暟鎸囧悜涓涓榪炴帴鐨勭綉緇滆祫婧怳NC璺緞鍚嶃傛寚瀹氫簡榪欎釜鍙傛暟鐨勮瘽錛屾樉紺虹殑瀵硅瘽妗嗕腑琚璁劇殑榪炴帴璧勬簮灝變笉鍙敼鍙樹簡銆傚鏋滆繖涓弬鏁頒負nil錛屽垯鍦ㄥ璇濇涓敤鎴峰彲浠ユ寚瀹氳榪炴帴鐨勮祫婧愩俁esourceType鍙傛暟鍙互鏄笅闈㈢殑鍊間箣涓錛歊ESOURCETYPE_DISK鎴朢ESOURCETYPE_PRINT銆傚畠鐨勪笉鍚屽皢浼氱敓鎴愪笉鍚岀殑瀵硅瘽妗嗐傚弬鏁頒負RESOURCETYPE_DISK鍏佽鎴戜滑涓虹綉緇滈┍鍔ㄨ祫婧愭寚瀹氫竴涓洏絎︼紝鍙︿竴涓弬鏁板厑璁告垜浠槧灝勪竴涓茍琛屽彛鍚嶆瘮濡侺PT2涓轟竴涓綉緇滄墦鍗版満銆傜劧鑰岋紝涓嶇煡閬撲負浠涔圧ESOURCETYPE_PRINT鍙傛暟鍦∟T涓婃棤鏁堛?br>



鍥?.31

濡傛灉鍑芥暟璋冪敤鎴愬姛鐨勮瘽錛岃繑鍥炲兼槸NO_ERROR錛屽鏋滅敤鎴峰彇娑堢殑瀵硅瘽妗嗭紝鍒欒繑鍥?-1($FFFFFFFF)錛屽鏋滆皟鐢ㄥけ璐ュ垯榪斿洖鍏朵粬鐨勯敊璇唬鐮侊紝鍏蜂綋閿欒淇℃伅鍙互鐢℅etLastError API璋冪敤鑾峰緱銆?br>
鍏抽棴緋葷粺瀵硅瘽妗?/strong>

ExitWindowsDialog鍜孯estartDialog鍑芥暟鍙互鐢ㄦ潵鏄劇ず鍏抽棴鍜岄噸鍚郴緇熷璇濇錛堝鍥?.31錛夛紝瀹冧滑鍚屽叕寮鐨凟xitWindowsEx API鍑芥暟娌℃湁浠涔堝お澶х殑涓嶅悓錛屼絾鍦ㄥ叾榪囩▼涓兘浼氫駭鐢熶竴涓璇濇銆侲xitWindowsDialog鍑芥暟鍙互鎸夌儲寮曞?0浠嶴hell32.dll涓叕寮鍑烘潵錛孯estartDialog鍑芥暟鐨勫湪Shell32.dll涓殑绱㈠紩鍊煎垯鏄?9錛屼袱涓嚱鏁扮殑瀹氫箟濡備笅錛?br>
    procedure ExitWindowsDialog(Owner: HWND); stdcall;

    function RestartDialog(Owner: HWND; Reason: Pointer; ExitType: UINT): DWORD; stdcall;


瀵笶xitWindowsDialog鍑芥暟鏉ヨ錛屽璇濇濂藉儚騫朵笉浣跨敤Owner鍙傛暟浣滀負鐖剁獥鍙o紝鍦╓indows 95涓婏紝褰撴搷浣滄垚鍔熺殑璇漮wner紿楀彛浼氭敹鍒頒竴涓猈M_QUIT娑堟伅銆傚湪Windows NT涓婏紝owner 紿楀彛鏍規湰涓嶈浣跨敤銆傚悓鏃惰繖涓嚱鏁版病鏈夎繑鍥炲鹼紝鎵浠ユ病鏈夊姙娉曠煡閬撶敤鎴烽夋嫨浜嗕粈涔堟搷浣滀互鍙婃搷浣滄槸鍚﹁鍙栨秷浜嗐?br>
RestartDialog鍑芥暟鏇存湁鐢ㄤ竴浜涳紝褰撴垜浠慨鏀逛簡緋葷粺鐨勮緗紝騫跺笇鏈涢噸鏂板惎鍔ㄧ郴緇熶嬌淇敼鐢熸晥鐨勬椂鍊欏彲浠ヤ嬌鐢ㄨ繖涓嚱鏁般俁eason鍙傛暟鎸囧悜涓涓鏄劇ず鍦ㄥ璇濇涓殑瀛楃涓詫紝鐢ㄦ潵瑙i噴鍏抽棴緋葷粺鐨勫師鍥犮侲xitType鍙傛暟鎸囧畾鍏抽棴綾誨瀷錛屽彲浠ヤ嬌鐢‥xitWindowsEX鍑芥暟浣跨敤鍊肩殑涓涓瓙闆嗗強棰濆鐨勫嚑涓柊鍊鹼紝涓嬮潰鏄畠浠殑瀹屽叏鍒楄〃錛?br>
    EWX_LOGOFF        = $00;

    EWX_SHUTDOWN      = $01;

    EWX_REBOOT        = $02;

    EW_RESTARTWINDOWS = $42;

    EW_REBOOTSYSTEM   = $43;

    EW_EXITANDEXECAPP = $44;


濡傛灉鐢ㄦ埛閫夋嫨鎵ц鍏抽棴鎿嶄綔錛屽嚱鏁拌繑鍥濱DYES錛屽惁鍒欒繑鍥濱DNO銆?br>
瑕佹敞鎰忕殑鏄樉紺哄湪瀵硅瘽妗嗕腑鐨勫師鍥犲瓧絎︿覆鍚庢諱細璺熺潃涓涓郴緇熺己鐪佹彁渚涚殑瀛楃涓茬敤鏉ユ樉紺虹‘璁や俊鎭紝鎵浠ュ簲璇ュ湪鎴戜滑鐨凴eason瀛楃涓插悗闄勪笂絀烘牸鎴栧洖杞︽崲琛屽瓧絎︺傚彟澶栬繑鍥炲間笉鑳界敤浜庣‘瀹氭搷浣滅殑鎴愬姛鎬э紝瀹冨彧琛ㄦ槑鐢ㄦ埛鐨勯夋嫨錛屽鏋滈噸鍚搷浣滅敱浜庢煇浜涘師鍥犲け璐ヤ簡錛岃繑鍥炲間粛鐒舵槸IDYES銆傚悓鏃惰娉ㄦ剰鐨勬槸瑕佹兂璋冪敤鎴愬姛錛岀敤鎴瘋繕蹇呴』鏈塖E_SHUTDOWN_NAME鏉冮檺錛堝湪NT涓婏級銆?br>
緙哄皯鍐呭瓨瀵硅瘽妗?/strong>

SHOutOfMemoryMessageBox鏄竴涓湭鍏紑鐨勫嚱鏁幫紝褰撶郴緇熷唴瀛樹笉瓚蟲椂鍙互鐢ㄦ潵鏄劇ず鏍囧噯鐨勫澹充俊鎭璇濇錛屽畠鍦⊿hell32.dll涓殑绱㈠紩鍊兼槸126錛屽嚱鏁板畾涔夊涓嬶細

    function SHOutOfMemoryMessageBox(Owner: HWND;

      Caption: Pointer; Style: UINT): Integer; stdcall;


瀹冧細璋冪敤MessageBox API錛屽悓鏃朵紶閫?涓爣鍑嗙殑鍙傛暟鍜孍RROR_OUTOFMEMORY閿欒娑堟伅銆侰aption鍙傛暟鎸囧悜瀵硅瘽妗嗘爣棰樺瓧絎︿覆銆傚鏋淐aption涓簄il錛岀埗紿楀彛鐨勬爣棰樺氨浼氳浣跨敤銆係tyle鍙傛暟鍙互琚緗負浠繪剰MessageBox鍑芥暟浣跨敤鐨凪B_XXX甯告暟鐨勭粍鍚堬紝閫氬父璁劇疆瀹冧負MB_OK鎴朚B_ICONHAND銆傚嚱鏁拌皟鐢ㄨ繑鍥炲煎弬瑙丼DK涓璏essageBox鍑芥暟璇存槑銆?br>
褰揗essageBox鍑芥暟琚皟鐢ㄦ椂錛孧B_SETFOREGROUND鏍囪瘑浼氳娣誨姞鍒癝tyle鍙傛暟涓紝浣嗗鏋滅涓嬈¤皟鐢ㄥけ璐ヤ簡鐨勮瘽錛孧essageBox鍑芥暟浼氳鍐嶆璋冪敤錛岃繖嬈B_SYSTEMMODAL 鏍囪瘑浼氳娣誨姞鍒癝tyle鍙傛暟涓侻B_SYSTEMMODAL鍚孧B_ICONHAND鏍囪瘑緇撳悎鍚庝細蹇界暐鍐呭瓨鐘跺喌鏉ユ樉紺烘秷鎭璇濇銆傚綋鍐呭瓨紜疄涓嶈凍鏃訛紝鍑芥暟涓嶄細鏄劇ず浠諱綍涓滆タ錛岀劧鑰屽畠浠嶇劧浼氳繑鍥濵essageBox鍑芥暟璋冪敤緇撴灉銆傛墍浠ユ垜浠彲浠ユ牴鎹繑鍥炲煎垽鏂嚱鏁版槸鍚﹁皟鐢ㄦ垚鍔熶簡銆?br>
絀洪棿涓嶈凍瀵硅瘽妗?/strong>




鍥?.32

鍙︿竴涓祫婧愮浉鍏崇殑鍑芥暟鏄疭HHandleDiskFull錛屽畠浼氭樉紺虹鐩樹笉瓚崇殑淇℃伅瀵硅瘽妗嗭紙濡傚浘2.32錛夈傛垜浠彲浠ュ湪鐢變簬娌℃湁瓚沖紓佺洏絀洪棿鏃跺鑷寸▼搴忔棤娉曡繍琛岀殑鏉′歡涓嬭皟鐢ㄨ繖涓嚱鏁幫紝璋冪敤鍚庯紝濡傛灉鍥炴敹绔欎腑鏈変粈涔堜笢瑗挎病鏈夊垹闄ょ殑璇濓紝瀵硅瘽妗嗗厑璁哥敤鎴鋒竻絀哄洖鏀剁珯鏉ラ噴鏀劇鐩樼┖闂淬傚畠鍦⊿hell32.dll涓殑绱㈠紩鍊間負185錛屽嚱鏁扮殑瀹氫箟濡備笅錛?br>
    procedure SHHandleDiskFull(Owner: HWND; Drive: UINT); stdcall;


Drive鍙傛暟鐢ㄤ簬鎸囧畾浠?涓哄簳鐨勯┍鍔ㄥ櫒鐩樼銆?浠h〃A:\錛?浠h〃B:\錛屼緷姝ょ被鎺ㄣ傝繖涓嚱鏁扮殑搴旂敤姣旇緝鍥伴毦錛屽洜涓哄綋鍥炴敹绔欎腑娌℃湁浠諱綍涓滆タ鏃跺璇濇涓嶄細鏄劇ず錛屽悓鏃朵篃娌℃湁浠諱綍榪斿洖鍊艱〃紺哄璇濇鏄惁鏄劇ず錛岃繕鏃犳硶鐭ラ亾鐢ㄦ埛鐨勬搷浣滐紝姣斿瀹冩槸鍚︾湡鐨勬竻絀轟簡銆傜湅璧鋒潵姣旇緝鍙鐨勫簲鐢ㄥ彧鑳芥槸紼嬪簭鑷鐩戣紓佺洏鍓╀綑絀洪棿錛屽彧鏄嬌鐢ㄨ繖涓璇濇浣滀負涓涓揩閫熶慨澶嶇殑宸ュ叿銆?br>
涓鑸澹蟲秷鎭璇濇

ShellMessageBox鍑芥暟浠呬粎鏄竴涓MessageBox鍑芥暟鐨勭畝鍗曞皝瑁呭嚱鏁幫紝瀹冨厑璁鎬嬌鐢ㄥ瓧絎︿覆璧勬簮鏍囪瘑絎︽垨鏍囧噯鐨勪互null緇撳熬鐨勫瓧絎︿覆錛屽悓鏃惰繕鍏佽鍔犲叆鏀寔鏍煎紡鍖朏oramtMessage鍑芥暟鐨勬帶鍒剁銆係hellMessageBox鍑芥暟鍦⊿hell32.dll涓殑绱㈠紩鍊間負183錛?br>
    function ShellMessageBoxA(Module: THandle; Owner: HWND;

      Text: PChar; Caption: PChar; Style: UINT;

      Parameters: array of Pointer): Integer; cdecl;


鏇寸‘鍒囧湴璇磋繖涓嚱鏁板簲璇ュ彨ShellMessageBoxA鍥犱負瀹冨彧鏀寔ANSI瀛楃涓詫紝榪樻湁涓涓猆NICODE鐨勭増鏈殑鍑芥暟ShellMessageBoxW錛屽畠鐨勭儲寮曞間負182錛屼絾瀹冨彧鍦╓indows NT涓婃墠鏈夛紝鍑芥暟瀹氫箟濡備笅錛?br>
    function ShellMessageBoxW(Module: THandle; Owner: HWND;

      Text: PWideChar; Caption: PWideChar; Style: UINT;

      Parameters: array of Pointer): Integer; cdecl;


Module鍙傛暟鏄彁渚涘瓧絎︿覆璧勬簮鐨勬ā鍧楀彞鏌勶紝鍙ユ焺鍙互鐢℅etModuleHandle鍑芥暟鑾峰緱銆傞【鍚嶆濅箟Text 鍙傛暟鎸囧悜涓涓鏄劇ず鍦ㄥ璇濇涓殑鏂囨湰錛屽畠涔熷彲浠ユ槸璧勬簮瀛楃涓睮D錛屾枃鏈腑鍙互鍖呮嫭鏍煎紡鎺у埗搴忓垪錛屽畠灝嗕細琚湪Parameters涓彁渚涚殑棰濆瀛楃涓叉浛浠c傛帶鍒剁鏍煎紡涓?#8220;%#”錛屽叾涓?#8220;#”鏄澶栧瓧絎︿覆鍦ㄥ弬鏁頒腑鐨勪綅緗紝姣斿“%1”灝嗚絎竴涓狿arameters鏁扮粍涓殑瀛楃涓插厓绱犳浛浠o紝“%3”灝嗕細琚涓変釜鍏冪礌鏇夸唬錛屼緷姝ょ被鎺ㄣ侰aption鍙傛暟鎸囧悜瀵硅瘽妗嗘爣棰樻枃鏈紝鍚屾牱瀹冧篃鍙互鏄祫婧怚D錛屽鏋滃弬鏁頒負nil錛孫wner鎸囧畾鐨勭獥鍙f爣棰樺皢琚敤浜庡璇濇鏍囬銆係tyle鍙傛暟鏄敱浣嶆帺鐮佹爣璇嗙粍鎴愮殑錛屽彲浠ヨ緗垚MessageBox鍑芥暟鏀寔鐨凪B_XXX甯告暟鐨勭粍鍚堛傝繑鍥炲煎悓MessageBox瀹屽叏涓鏍楓?br>
瀵逛簬榪欎釜鍑芥暟寰堥噸瑕佺殑涓鐐規槸寰蔣鍏徃浣跨敤cdecl鏉ヨ緭鍑鴻繖涓嚱鏁拌屼笉鏄氬父鐨?stdcall銆傛澶栵紝Parameters鍙傛暟浣跨敤浜咰璇█涓殑鍙彉鍙傛暟鍒楄〃錛岃繖鎰忓懗鐫榪欎釜鍑芥暟涓嶆槸璇█鏃犲叧鐨勶紝榪欎嬌寰楄皟鐢ㄨ搗鏉ラ潪甯擱夯鐑︼紝鍥犱負Delphi騫朵笉鐩存帴鏀寔cdecl鍜屽彲鍙樺弬鏁板垪琛ㄣ備負浜嗚В鍐寵繖涓棶棰橈紝Parameters鍙傛暟琚槧灝勪負涓涓姩鎬佹寚閽堝垪琛ㄣ傚悓鏃舵垜浠繕闇瑕佷嬌鐢ㄥ祵鍏ュ紡姹囩紪鏉ュ緩绔媍decl鏍峰紡鐨勫爢鏍堛傜敱浜庡姩鎬佹寚閽堝垪琛ㄧ殑鎬ц川錛屾垜浠繀欏昏嚦灝戞寚瀹氫竴涓寚閽堝箋傚鏋滀笉鎯蟲寚瀹氳鏇夸唬鐨勫瓧絎︿覆錛岀畝鍗曡緗負nil灝卞彲浠ヤ簡銆?/font>

騫藉菇 2009-12-18 09:20 鍙戣〃璇勮
]]>
struct DCBhttp://m.shnenglu.com/justin-shi/archive/2009/05/05/81909.html騫藉菇騫藉菇Mon, 04 May 2009 18:35:00 GMThttp://m.shnenglu.com/justin-shi/archive/2009/05/05/81909.htmlhttp://m.shnenglu.com/justin-shi/comments/81909.htmlhttp://m.shnenglu.com/justin-shi/archive/2009/05/05/81909.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/81909.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/81909.html

涓插彛閫氳涓殑DCB緇撴瀯

typedef struct _DCB {// dcb

DWORD DCBlength; // sizeof(DCB)

DORD BaudRate; // current baud rate銆鎸囧畾褰撳墠鐨勬嘗鐗圭巼

DWORD fBinary: 1; // binary mode, no EOF check銆鎸囧畾鏄惁鍏佽浜岃繘鍒舵ā寮廤IN95涓』涓篢RUE
       

DWORD fParity: 1; // enable parity checking銆鎸囧畾濂囧伓鏍¢獙鏄惁鍏佽

DWORD fOutxCtsFlow:1; // CTS output flow control 鎸囧畾CTS鏄惁鐢ㄤ簬媯嫻嬪彂閫佹帶鍒躲傚綋涓篢RUE鏄疌TS涓篛FF錛屽彂閫佸皢琚寕璧楓?/font>


DWORD fOutxDsrFlow:1; // DSR output flow control   鎸囧畾CTS鏄惁鐢ㄤ簬媯嫻嬪彂閫佹帶鍒躲傚綋涓篢RUE鏄疌TS涓篛FF錛屽彂閫佸皢琚寕璧楓?/font>


DWORD fDtrControl:2; // DTR flow control type

DTR_CONTROL_DISABLE 鍊煎皢DTR緗負OFF,DTR_CONTROL_ENABLE鍊煎皢DTR緗負ON, 

DTR_CONTROL_HANDSHAKE 鍏佽DTR"鎻℃墜",

 

DWORD fDsrSensitivity:1;// DSR sensitivity 褰撹鍊間負TRUE鏃禗SR涓篛FF鏃舵帴鏀剁殑瀛楄妭琚拷鐣?/font>

 

DWORD fTXContinueOnXoff:1; // XOFF continues Tx
    鎸囧畾褰撴帴鏀剁紦鍐插尯宸叉弧,騫朵笖椹卞姩紼嬪簭宸茬粡鍙戦佸嚭XoffChar瀛楃鏃跺彂閫佹槸鍚﹀仠姝€?/font>

    TRUE鏃訛紝鍦ㄦ帴鏀剁紦鍐插尯鎺ユ敹鍒扮紦鍐插尯宸叉弧鐨勫瓧鑺俋offLim涓旈┍鍔ㄧ▼搴忓凡緇忓彂閫佸嚭XoffChar瀛?nbsp;     絎︿腑姝㈡帴鏀跺瓧鑺備箣鍚庯紝鍙戦佺戶緇繘琛屻?br>    FALSE鏃訛紝鍦ㄦ帴鏀剁紦鍐插尯鎺ユ敹鍒頒唬琛ㄧ紦鍐插尯宸茬┖鐨勫瓧鑺俋onChar涓旈┍鍔ㄧ▼搴忓凡緇忓彂閫佸嚭鎭㈠鍙戦佺殑XonChar涔嬪悗錛屽彂閫佺戶緇繘琛屻?/font>


DWORD fOutX: 1; // XON/XOFF out flow control    TRUE鏃訛紝鎺ユ敹鍒癤offChar涔嬪悗渚垮仠姝㈠彂閫佹帴鏀跺埌XonChar涔嬪悗灝嗛噸鏂板紑濮?/font>

 

DWORD fInX: 1; // XON/XOFF in flow control
             TRUE鏃訛紝鎺ユ敹緙撳啿鍖烘帴鏀跺埌浠h〃緙撳啿鍖烘弧鐨刋offLim涔嬪悗錛孹offChar鍙戦佸嚭鍘繪帴鏀剁紦鍐插尯鎺ユ敹鍒頒唬琛ㄧ紦鍐插尯絀虹殑XonLim涔嬪悗錛孹onChar鍙戦佸嚭鍘?/font>


DWORD fErrorChar: 1; // enable error replacement
        銆璇ュ間負TRUE涓攆Parity涓篢RUE鏃訛紝鐢‥rrorChar 鎴愬憳鎸囧畾鐨勫瓧絎︿唬鏇垮鍋舵牎楠岄敊璇殑鎺ユ敹瀛楃


DWORD fNull: 1; // enable null stripping銆銆TRUE鏃訛紝鎺ユ敹鏃跺幓鎺夌┖錛?鍊鹼級瀛楄妭

 

DWORD fRtsControl:2; // RTS flow control


DWORD fAbortOnError:1; // abort reads/writes on error銆銆TRUE鏃?鏈夐敊璇彂鐢熸椂涓璇誨拰鍐欐搷浣淩TS_CONTROL_DISABLE鏃?RTS緗負OFFRTS_CONTROL_ENABLE鏃? RTS緗負ON

 

RTS_CONTROL_HANDSHAKE鏃?褰撴帴鏀剁紦鍐插尯灝忎簬鍗婃弧鏃禦TS涓篛N褰撴帴鏀剁紦鍐插尯瓚呰繃鍥涘垎涔嬩笁婊℃椂RTS涓篛FF


RTS_CONTROL_TOGGLE鏃?褰撴帴鏀剁紦鍐插尯浠嶆湁鍓╀綑瀛楄妭鏃禦TS涓篛N ,鍚﹀垯緙虹渷涓篛FF


DWORD fDummy2:17; // reserved銆銆鏈嬌鐢?/font>

 

WORD wReserved; // not currently used銆銆鏈嬌鐢?蹇呴』涓?

 

WORD XonLim; // transmit XON threshold   鎸囧畾鍦╔ON瀛楃鍙戦佽繖鍓嶆帴鏀剁紦鍐插尯涓彲鍏佽鐨勬渶灝忓瓧鑺傛暟


WORD XoffLim; // transmit XOFF threshold  鎸囧畾鍦╔OFF瀛楃鍙戦佽繖鍓嶆帴鏀剁紦鍐插尯涓彲鍏佽鐨勬渶灝忓瓧鑺傛暟


BYTE ByteSize; // number of bits/byte, 4-8銆銆鎸囧畾绔彛褰撳墠浣跨敤鐨勬暟鎹綅

 

BYTE Parity; // 0-4=no,odd,even,mark,space銆鎸囧畾绔彛褰撳墠浣跨敤鐨勫鍋舵牎楠屾柟娉?鍙兘涓?
                            EVENPARITY,MARKPARITY,NOPARITY,ODDPARITY銆BYTE

 

StopBits;      0,1,2 = 1, 1.5, 2 銆銆鎸囧畾绔彛褰撳墠浣跨敤鐨勫仠姝綅鏁?鍙兘涓?
                          ONESTOPBIT,ONE5STOPBITS,TWOSTOPBITS


char XonChar; // Tx and Rx XON character銆銆鎸囧畾鐢ㄤ簬鍙戦佸拰鎺ユ敹瀛楃XON鐨勫?/font>

 

char XoffChar; // Tx and Rx XOFF character銆銆鎸囧畾鐢ㄤ簬鍙戦佸拰鎺ユ敹瀛楃XOFF鍊?/font>

 

char ErrorChar; // error replacement character鏈瓧絎︾敤鏉ヤ唬鏇挎帴鏀跺埌鐨勫鍋舵牎楠屽彂鐢熼敊璇椂鐨勫?/font>

 

char EofChar; // end of input character銆褰撴病鏈変嬌鐢ㄤ簩榪涘埗妯″紡鏃?鏈瓧絎﹀彲鐢ㄦ潵鎸囩ず鏁版嵁鐨勭粨鏉?/font>

 

char EvtChar; // received event character銆褰撴帴鏀跺埌姝ゅ瓧絎︽椂,浼氫駭鐢熶竴涓簨浠?/font>

 

WORD wReserved1; // reserved; do not use 鏈嬌鐢?/font>

} DCB;



騫藉菇 2009-05-05 02:35 鍙戣〃璇勮
]]>
鎶鏈蹇?/title><link>http://m.shnenglu.com/justin-shi/archive/2009/03/13/76505.html</link><dc:creator>騫藉菇</dc:creator><author>騫藉菇</author><pubDate>Fri, 13 Mar 2009 11:56:00 GMT</pubDate><guid>http://m.shnenglu.com/justin-shi/archive/2009/03/13/76505.html</guid><wfw:comment>http://m.shnenglu.com/justin-shi/comments/76505.html</wfw:comment><comments>http://m.shnenglu.com/justin-shi/archive/2009/03/13/76505.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/justin-shi/comments/commentRss/76505.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/justin-shi/services/trackbacks/76505.html</trackback:ping><description><![CDATA[DLL娉ㄥ叆紼嬪簭鐨勪竴鑸楠わ細<br><br>錛?錛夊彇寰楀涓昏繘紼嬶紙鍗寵娉ㄥ叆鏈ㄩ┈鐨勮繘紼嬶級鐨勮繘紼婭D dwRemoteProcessId錛?br><br>錛?錛夊彇寰桪LL鐨勫畬鍏ㄨ礬寰勶紝騫跺皢鍏惰漿鎹負瀹藉瓧絎︽ā寮弍szLibFileName錛?br><br>錛?錛夊埄鐢╓indows API OpenProcess鎵撳紑瀹夸富榪涚▼錛屽簲璇ュ紑鍚笅鍒楅夐」錛?br><br><span>a.PROCESS_CREATE_THREAD錛氬厑璁稿湪瀹夸富榪涚▼涓垱寤虹嚎紼嬶紱</span><br><br>b.PROCESS_VM_OPERATION錛氬厑璁稿瀹夸富榪涚▼涓繘琛孷M鎿嶄綔錛?br><br>c.PROCESS_VM_WRITE錛氬厑璁稿瀹夸富榪涚▼榪涜VM鍐欍?br><br><span>錛?錛夊埄鐢╓indows API VirtualAllocEx鍑芥暟鍦ㄨ繙紼嬬嚎紼嬬殑VM涓垎閰岲LL瀹屾暣璺緞瀹藉瓧絎︽墍闇鐨勫瓨鍌ㄧ┖闂達紝騫跺埄鐢╓indows API WriteProcessMemory鍑芥暟灝嗗畬鏁磋礬寰勫啓鍏ヨ瀛樺偍絀洪棿錛?/span><br><br>錛?錛夊埄鐢╓indows API GetProcAddress鍙栧緱Kernel32妯″潡涓璍oadLibraryW鍑芥暟鐨勫湴鍧錛岃繖涓嚱鏁板皢浣滀負闅忓悗灝嗗惎鍔ㄧ殑榪滅▼綰跨▼鐨勫叆鍙e嚱鏁幫紱<br><br><span>錛?錛夊埄鐢╓indows API CreateRemoteThread鍚姩榪滅▼綰跨▼錛屽皢LoadLibraryW鐨勫湴鍧浣滀負榪滅▼綰跨▼鐨勫叆鍙e嚱鏁板湴鍧錛屽皢瀹夸富榪涚▼閲岃鍒嗛厤絀洪棿涓瓨鍌ㄧ殑瀹屾暣DLL璺緞浣滀負綰跨▼鍏ュ彛鍑芥暟鐨勫弬鏁頒互鍙﹀叾鍚姩鎸囧畾鐨凞LL錛?/span><br><br><span>錛?錛夋竻鐞嗙幇鍦恒?/span> <img src ="http://m.shnenglu.com/justin-shi/aggbug/76505.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/justin-shi/" target="_blank">騫藉菇</a> 2009-03-13 19:56 <a href="http://m.shnenglu.com/justin-shi/archive/2009/03/13/76505.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍗歌澆鍏跺畠榪涚▼鐨凞LLhttp://m.shnenglu.com/justin-shi/archive/2009/02/21/74536.html騫藉菇騫藉菇Sat, 21 Feb 2009 14:32:00 GMThttp://m.shnenglu.com/justin-shi/archive/2009/02/21/74536.htmlhttp://m.shnenglu.com/justin-shi/comments/74536.htmlhttp://m.shnenglu.com/justin-shi/archive/2009/02/21/74536.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/74536.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/74536.html 1typedef ULONG (WINAPI *PFNNtUnmapViewOfSection)( IN HANDLE ProcessHandle,IN PVOID BaseAddress );
 2
 3BOOL UnmapViewOfModule ( DWORD dwProcessId, LPVOID lpBaseAddr )
 4{
 5    HMODULE hModule = GetModuleHandle ( L"ntdll.dll" ) ;
 6    if ( hModule == NULL )
 7        hModule = LoadLibrary ( L"ntdll.dll" ) ;
 8
 9    PFNNtUnmapViewOfSection pfnNtUnmapViewOfSection = (PFNNtUnmapViewOfSection)GetProcAddress ( hModule, "NtUnmapViewOfSection" ) ;
10    
11    HANDLE hProcess = OpenProcess ( PROCESS_ALL_ACCESS, TRUE, dwProcessId ) ;
12    ULONG    ret = pfnNtUnmapViewOfSection ( hProcess, lpBaseAddr ) ;
13    CloseHandle ( hProcess ) ;
14    return ret ? FALSE : TRUE;
15}

16
17

騫藉菇 2009-02-21 22:32 鍙戣〃璇勮
]]>
Heap: Pleasures and Painshttp://m.shnenglu.com/justin-shi/archive/2009/02/03/72832.html騫藉菇騫藉菇Tue, 03 Feb 2009 00:49:00 GMThttp://m.shnenglu.com/justin-shi/archive/2009/02/03/72832.htmlhttp://m.shnenglu.com/justin-shi/comments/72832.htmlhttp://m.shnenglu.com/justin-shi/archive/2009/02/03/72832.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/72832.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/72832.htmlhttp://hi.baidu.com/csuhkx/blog/item/267418d3614cf9013bf3cf55.html

榪欑瘒鏂囩珷鏄炕璇慚SDN涓婁竴綃囧彨銆奌eap: Pleasures and Pains銆嬬殑鏂囩珷鐨?

Murali R. Krishnan
Microsoft Corporation

1999 騫?2 鏈?/p>

鎽樿錛?/strong> 璁ㄨ甯歌鐨勫爢鎬ц兘闂浠ュ強濡備綍闃茶寖瀹冧滑銆傦紙鍏?9 欏碉級

鍓嶈█

鎮ㄦ槸鍚︽槸鍔ㄦ佸垎閰嶇殑 C/C++ 瀵硅薄蹇犲疄涓斿垢榪愮殑鐢ㄦ埛錛熸偍鏄惁鍦ㄦā鍧楅棿鐨勫線榪旈氫俊涓綣佸湴浣跨敤浜?#8220;鑷姩鍖?#8221;錛熸偍鐨勭▼搴忔槸鍚﹀洜鍫嗗垎閰嶈岃繍琛岃搗鏉ュ緢鎱紵涓嶄粎浠呮偍閬囧埌榪欐牱鐨勯棶棰樸傚嚑涔庢墍鏈夐」鐩繜鏃╅兘浼氶亣鍒板爢闂銆傚ぇ瀹墮兘鎯寵錛?#8220;鎴戠殑浠g爜鐪熸濂斤紝鍙槸鍫嗗お鎱?#8221;銆傞偅鍙槸閮ㄥ垎姝g‘銆傛洿娣卞叆鐞嗚В鍫嗗強鍏剁敤娉曘佷互鍙婁細鍙戠敓浠涔堥棶棰橈紝鏄緢鏈夌敤鐨勩?/p>

浠涔堟槸鍫嗭紵

錛堝鏋滄偍宸茬粡鐭ラ亾浠涔堟槸鍫嗭紝鍙互璺沖埌“浠涔堟槸甯歌鐨勫爢鎬ц兘闂錛?#8221;閮ㄥ垎錛?/p>

鍦ㄧ▼搴忎腑錛屼嬌鐢ㄥ爢鏉ュ姩鎬佸垎閰嶅拰閲婃斁瀵硅薄銆傚湪涓嬪垪鎯呭喌涓嬶紝璋冪敤鍫嗘搷浣滐細

  1. 浜嬪厛涓嶇煡閬撶▼搴忔墍闇瀵硅薄鐨勬暟閲忓拰澶у皬銆?br>
  2. 瀵硅薄澶ぇ鑰屼笉閫傚悎鍫嗘爤鍒嗛厤紼嬪簭銆?

鍫嗕嬌鐢ㄤ簡鍦ㄨ繍琛屾椂鍒嗛厤緇欎唬鐮佸拰鍫嗘爤鐨勫唴瀛樹箣澶栫殑閮ㄥ垎鍐呭瓨銆備笅鍥劇粰鍑轟簡鍫嗗垎閰嶇▼搴忕殑涓嶅悓灞傘?/p>

GlobalAlloc/GlobalFree錛?/strong>Microsoft Win32 鍫嗚皟鐢紝榪欎簺璋冪敤鐩存帴涓庢瘡涓繘紼嬬殑榛樿鍫嗚繘琛屽璇濄?/p>

LocalAlloc/LocalFree錛?/strong>Win32 鍫嗚皟鐢紙涓轟簡涓?Microsoft Windows NT 鍏煎錛夛紝榪欎簺璋冪敤鐩存帴涓庢瘡涓繘紼嬬殑榛樿鍫嗚繘琛屽璇濄?/p>

COM 鐨?IMalloc 鍒嗛厤紼嬪簭錛堟垨 CoTaskMemAlloc / CoTaskMemFree錛夛細鍑芥暟浣跨敤姣忎釜榪涚▼鐨勯粯璁ゅ爢銆傝嚜鍔ㄥ寲紼嬪簭浣跨敤“緇勪歡瀵硅薄妯″瀷 (COM)”鐨勫垎閰嶇▼搴忥紝鑰岀敵璇風殑紼嬪簭浣跨敤姣忎釜榪涚▼鍫嗐?/p>

C/C++ 榪愯鏃?(CRT) 鍒嗛厤紼嬪簭錛?/strong>鎻愪緵浜?malloc() 鍜?free() 浠ュ強 new 鍜?delete 鎿嶄綔絎︺傚 Microsoft Visual Basic 鍜?Java 絳夎璦涔熸彁渚涗簡鏂扮殑鎿嶄綔絎﹀茍浣跨敤鍨冨溇鏀墮泦鏉ヤ唬鏇垮爢銆侰RT 鍒涘緩鑷繁鐨勭鏈夊爢錛岄┗鐣欏湪 Win32 鍫嗙殑欏墮儴銆?/p>

Windows NT 涓紝Win32 鍫嗘槸 Windows NT 榪愯鏃跺垎閰嶇▼搴忓懆鍥寸殑钖勫眰銆傛墍鏈?API 杞彂瀹冧滑鐨勮姹傜粰 NTDLL銆?/p>

Windows NT 榪愯鏃跺垎閰嶇▼搴忔彁渚?Windows NT 鍐呯殑鏍稿績鍫嗗垎閰嶇▼搴忋傚畠鐢卞叿鏈?128 涓ぇ灝忎粠 8 鍒?1,024 瀛楄妭鐨勭┖闂插垪琛ㄧ殑鍓嶇鍒嗛厤紼嬪簭緇勬垚銆傚悗绔垎閰嶇▼搴忎嬌鐢ㄨ櫄鎷熷唴瀛樻潵淇濈暀鍜屾彁浜ら〉銆?/p>

鍦ㄥ浘琛ㄧ殑搴曢儴鏄?#8220;铏氭嫙鍐呭瓨鍒嗛厤紼嬪簭”錛屾搷浣滅郴緇熶嬌鐢ㄥ畠鏉ヤ繚鐣欏拰鎻愪氦欏點傛墍鏈夊垎閰嶇▼搴忎嬌鐢ㄨ櫄鎷熷唴瀛樿繘琛屾暟鎹殑瀛樺彇銆?/p>

鍒嗛厤鍜岄噴鏀懼潡涓嶅氨閭d箞綆鍗曞悧錛熶負浣曡姳璐硅繖涔堥暱鏃墮棿錛?/p>

鍫嗗疄鐜扮殑娉ㄦ剰浜嬮」

浼犵粺涓婏紝鎿嶄綔緋葷粺鍜岃繍琛屾椂搴撴槸涓庡爢鐨勫疄鐜板叡瀛樼殑銆傚湪涓涓繘紼嬬殑寮濮嬶紝鎿嶄綔緋葷粺鍒涘緩涓涓粯璁ゅ爢錛屽彨鍋?#8220;榪涚▼鍫?#8221;銆傚鏋滄病鏈夊叾浠栧爢鍙嬌鐢紝鍒欏潡鐨勫垎閰嶄嬌鐢?#8220;榪涚▼鍫?#8221;銆傝璦榪愯鏃朵篃鑳藉湪榪涚▼鍐呭垱寤哄崟鐙殑鍫嗐傦紙渚嬪錛孋 榪愯鏃跺垱寤哄畠鑷繁鐨勫爢銆傦級闄よ繖浜涗笓鐢ㄧ殑鍫嗗錛屽簲鐢ㄧ▼搴忔垨璁稿宸茶澆鍏ョ殑鍔ㄦ侀摼鎺ュ簱 (DLL) 涔嬩竴鍙互鍒涘緩鍜屼嬌鐢ㄥ崟鐙殑鍫嗐俉in32 鎻愪緵涓鏁村 API 鏉ュ垱寤哄拰浣跨敤縐佹湁鍫嗐傛湁鍏?a >鍫嗗嚱鏁幫紙鑻辨枃錛?/u>鐨勮灝芥寚瀵鹼紝璇峰弬瑙?MSDN銆?/p>

褰撳簲鐢ㄧ▼搴忔垨 DLL 鍒涘緩縐佹湁鍫嗘椂錛岃繖浜涘爢瀛樺湪浜庤繘紼嬬┖闂達紝騫朵笖鍦ㄨ繘紼嬪唴鏄彲璁塊棶鐨勩備粠緇欏畾鍫嗗垎閰嶇殑鏁版嵁灝嗗湪鍚屼竴涓爢涓婇噴鏀俱傦紙涓嶈兘浠庝竴涓爢鍒嗛厤鑰屽湪鍙︿竴涓爢閲婃斁銆傦級

鍦ㄦ墍鏈夎櫄鎷熷唴瀛樼郴緇熶腑錛屽爢椹葷暀鍦ㄦ搷浣滅郴緇熺殑“铏氭嫙鍐呭瓨綆$悊鍣?#8221;鐨勯《閮ㄣ傝璦榪愯鏃跺爢涔熼┗鐣欏湪铏氭嫙鍐呭瓨欏墮儴銆傛煇浜涙儏鍐典笅錛岃繖浜涘爢鏄搷浣滅郴緇熷爢涓殑灞傦紝鑰岃璦榪愯鏃跺爢鍒欓氳繃澶у潡鐨勫垎閰嶆潵鎵ц鑷繁鐨勫唴瀛樼鐞嗐備笉浣跨敤鎿嶄綔緋葷粺鍫嗭紝鑰屼嬌鐢ㄨ櫄鎷熷唴瀛樺嚱鏁版洿鍒╀簬鍫嗙殑鍒嗛厤鍜屽潡鐨勪嬌鐢ㄣ?/p>

鍏稿瀷鐨勫爢瀹炵幇鐢卞墠銆佸悗绔垎閰嶇▼搴忕粍鎴愩傚墠绔垎閰嶇▼搴忕淮鎸佸浐瀹氬ぇ灝忓潡鐨勭┖闂插垪琛ㄣ傚浜庝竴嬈″垎閰嶈皟鐢紝鍫嗗皾璇曚粠鍓嶇鍒楄〃鎵懼埌涓涓嚜鐢卞潡銆傚鏋滃け璐ワ紝鍫嗚榪粠鍚庣錛堜繚鐣欏拰鎻愪氦铏氭嫙鍐呭瓨錛夊垎閰嶄竴涓ぇ鍧楁潵婊¤凍璇鋒眰銆傞氱敤鐨勫疄鐜版湁姣忓潡鍒嗛厤鐨勫紑閿錛岃繖灝嗚楄垂鎵ц鍛ㄦ湡錛屼篃鍑忓皯浜嗗彲浣跨敤鐨勫瓨鍌ㄧ┖闂淬?/p>

Knowledge Base 鏂囩珷 Q10758錛?#8220;鐢?calloc() 鍜?malloc() 綆$悊鍐呭瓨” 錛堟悳绱㈡枃绔犵紪鍙鳳級, 鍖呭惈浜嗘湁鍏寵繖浜涗富棰樼殑鏇村鑳屾櫙鐭ヨ瘑銆傚彟澶栵紝鏈夊叧鍫嗗疄鐜板拰璁捐鐨勮緇嗚璁轟篃鍙湪涓嬪垪钁椾綔涓壘鍒幫細“Dynamic Storage Allocation: A Survey and Critical Review”錛屼綔鑰?Paul R. Wilson銆丮ark S. Johnstone銆丮ichael Neely 鍜?David Boles錛?#8220;International Workshop on Memory Management”, 浣滆?Kinross, Scotland, UK, 1995 騫?9 鏈?http://www.cs.utexas.edu/users/oops/papers.html)錛堣嫳鏂囷級銆?/p>

Windows NT 鐨勫疄鐜幫紙Windows NT 鐗堟湰 4.0 鍜屾洿鏂扮増鏈級 浣跨敤浜?127 涓ぇ灝忎粠 8 鍒?1,024 瀛楄妭鐨?8 瀛楄妭瀵歸綈鍧楃┖闂插垪琛ㄥ拰涓涓?#8220;澶у潡”鍒楄〃銆?#8220;澶у潡”鍒楄〃錛堢┖闂插垪琛╗0]錛?淇濆瓨澶т簬 1,024 瀛楄妭鐨勫潡銆傜┖闂插垪琛ㄥ綰充簡鐢ㄥ弻鍚戦摼琛ㄩ摼鎺ュ湪涓璧風殑瀵硅薄銆傞粯璁ゆ儏鍐典笅錛?#8220;榪涚▼鍫?#8221;鎵ц鏀墮泦鎿嶄綔銆傦紙鏀墮泦鏄皢鐩擱偦絀洪棽鍧楀悎騫舵垚涓涓ぇ鍧楃殑鎿嶄綔銆傦級鏀墮泦鑰楄垂浜嗛澶栫殑鍛ㄦ湡錛屼絾鍑忓皯浜嗗爢鍧楃殑鍐呴儴紕庣墖銆?/p>

鍗曚竴鍏ㄥ眬閿佷繚鎶ゅ爢錛岄槻姝㈠綰跨▼寮忕殑浣跨敤銆傦紙璇峰弬瑙?#8220;Server Performance and Scalability Killers”涓殑絎竴涓敞鎰忎簨欏? George Reilly 鎵钁楋紝鍦?“MSDN Online Web Workshop”涓婏紙绔欑偣錛?a >http://msdn.microsoft.com/workshop/server/iis/tencom.asp錛堣嫳鏂囷級銆傦級鍗曚竴鍏ㄥ眬閿佹湰璐ㄤ笂鏄敤鏉ヤ繚鎶ゅ爢鏁版嵁緇撴瀯錛岄槻姝㈣法澶氱嚎紼嬬殑闅忔満瀛樺彇銆傝嫢鍫嗘搷浣滃お棰戠箒錛屽崟涓鍏ㄥ眬閿佷細瀵規ц兘鏈変笉鍒╃殑褰卞搷銆?/p>

浠涔堟槸甯歌鐨勫爢鎬ц兘闂錛?/h2>

浠ヤ笅鏄偍浣跨敤鍫嗘椂浼氶亣鍒扮殑鏈甯歌闂錛?

  • 鍒嗛厤鎿嶄綔閫犳垚鐨勯熷害鍑忔參銆?/strong>鍏夊垎閰嶅氨鑰楄垂寰堥暱鏃墮棿銆傛渶鍙兘瀵艱嚧榪愯閫熷害鍑忔參鍘熷洜鏄┖闂插垪琛ㄦ病鏈夊潡錛屾墍浠ヨ繍琛屾椂鍒嗛厤紼嬪簭浠g爜浼氳楄垂鍛ㄦ湡瀵繪壘杈冨ぇ鐨勭┖闂插潡錛屾垨浠庡悗绔垎閰嶇▼搴忓垎閰嶆柊鍧椼?br>
  • 閲婃斁鎿嶄綔閫犳垚鐨勯熷害鍑忔參銆?/strong>閲婃斁鎿嶄綔鑰楄垂杈冨鍛ㄦ湡錛屼富瑕佹槸鍚敤浜嗘敹闆嗘搷浣溿傛敹闆嗘湡闂達紝姣忎釜閲婃斁鎿嶄綔“鏌ユ壘”瀹冪殑鐩擱偦鍧楋紝鍙栧嚭瀹冧滑騫舵瀯閫犳垚杈冨ぇ鍧楋紝鐒跺悗鍐嶆妸姝よ緝澶у潡鎻掑叆絀洪棽鍒楄〃銆傚湪鏌ユ壘鏈熼棿錛屽唴瀛樺彲鑳戒細闅忔満紕板埌錛屼粠鑰屽鑷撮珮閫熺紦瀛樹笉鑳藉懡涓紝鎬ц兘闄嶄綆銆?br>
  • 鍫嗙珵浜夐犳垚鐨勯熷害鍑忔參銆?/strong>褰撲袱涓垨澶氫釜綰跨▼鍚屾椂璁塊棶鏁版嵁錛岃屼笖涓涓嚎紼嬬戶緇繘琛屼箣鍓嶅繀欏葷瓑寰呭彟涓涓嚎紼嬪畬鎴愭椂灝卞彂鐢熺珵浜夈傜珵浜夋繪槸瀵艱嚧楹葷儲錛涜繖涔熸槸鐩墠澶氬鐞嗗櫒緋葷粺閬囧埌鐨勬渶澶ч棶棰樸傚綋澶ч噺浣跨敤鍐呭瓨鍧楃殑搴旂敤紼嬪簭鎴?DLL 浠ュ綰跨▼鏂瑰紡榪愯錛堟垨榪愯浜庡澶勭悊鍣ㄧ郴緇熶笂錛夋椂灝嗗鑷撮熷害鍑忔參銆傚崟涓閿佸畾鐨勪嬌鐢ㄢ斿父鐢ㄧ殑瑙e喅鏂規鈥旀剰鍛崇潃浣跨敤鍫嗙殑鎵鏈夋搷浣滄槸搴忓垪鍖栫殑銆傚綋絳夊緟閿佸畾鏃跺簭鍒楀寲浼氬紩璧風嚎紼嬪垏鎹笂涓嬫枃銆傚彲浠ユ兂璞′氦鍙夎礬鍙i棯鐑佺殑綰㈢伅澶勮蛋璧板仠鍋滃鑷寸殑閫熷害鍑忔參銆?

    绔炰簤閫氬父浼氬鑷寸嚎紼嬪拰榪涚▼鐨勪笂涓嬫枃鍒囨崲銆備笂涓嬫枃鍒囨崲鐨勫紑閿鏄緢澶х殑錛屼絾寮閿鏇村ぇ鐨勬槸鏁版嵁浠庡鐞嗗櫒楂橀熺紦瀛樹腑涓㈠け錛屼互鍙婂悗鏉ョ嚎紼嬪媧繪椂鐨勬暟鎹噸寤恒?/p>

  • 鍫嗙牬鍧忛犳垚鐨勯熷害鍑忔參銆?/strong>閫犳垚鍫嗙牬鍧忕殑鍘熷洜鏄簲鐢ㄧ▼搴忓鍫嗗潡鐨勪笉姝g‘浣跨敤銆傞氬父鎯呭艦鍖呮嫭閲婃斁宸查噴鏀劇殑鍫嗗潡鎴栦嬌鐢ㄥ凡閲婃斁鐨勫爢鍧楋紝浠ュ強鍧楃殑瓚婄晫閲嶅啓絳夋槑鏄鵑棶棰樸傦紙鐮村潖涓嶅湪鏈枃璁ㄨ鑼冨洿涔嬪唴銆傛湁鍏沖唴瀛橀噸鍐欏拰娉勬紡絳夊叾浠栫粏鑺傦紝璇峰弬瑙?Microsoft Visual C++(R) 璋冭瘯鏂囨。 銆傦級

  • 棰戠箒鐨勫垎閰嶅拰閲嶅垎閰嶉犳垚鐨勯熷害鍑忔參銆?/strong>榪欐槸浣跨敤鑴氭湰璇█鏃墮潪甯告櫘閬嶇殑鐜拌薄銆傚瀛楃涓茶鍙嶅鍒嗛厤錛岄殢閲嶅垎閰嶅闀垮拰閲婃斁銆備笉瑕佽繖鏍峰仛錛屽鏋滃彲鑳斤紝灝介噺鍒嗛厤澶у瓧絎︿覆鍜屼嬌鐢ㄧ紦鍐插尯銆傚彟涓縐嶆柟娉曞氨鏄敖閲忓皯鐢ㄨ繛鎺ユ搷浣溿?

绔炰簤鏄湪鍒嗛厤鍜岄噴鏀炬搷浣滀腑瀵艱嚧閫熷害鍑忔參鐨勯棶棰樸傜悊鎯蟲儏鍐典笅錛屽笇鏈涗嬌鐢ㄦ病鏈夌珵浜夊拰蹇熷垎閰?閲婃斁鐨勫爢銆傚彲鎯滐紝鐜板湪榪樻病鏈夎繖鏍風殑閫氱敤鍫嗭紝涔熻灝嗘潵浼氭湁銆?/p>

鍦ㄦ墍鏈夌殑鏈嶅姟鍣ㄧ郴緇熶腑錛堝 IIS銆丮SProxy銆丏atabaseStacks銆佺綉緇滄湇鍔″櫒銆?Exchange 鍜屽叾浠栵級, 鍫嗛攣瀹氬疄鍦ㄦ槸涓ぇ鐡墮銆傚鐞嗗櫒鏁拌秺澶氾紝绔炰簤灝辮秺浼氭伓鍖栥?/p>

灝介噺鍑忓皯鍫嗙殑浣跨敤

鐜板湪鎮ㄦ槑鐧戒嬌鐢ㄥ爢鏃跺瓨鍦ㄧ殑闂浜嗭紝闅鵑亾鎮ㄤ笉鎯蟲嫢鏈夎兘瑙e喅榪欎簺闂鐨勮秴綰ч瓟媯掑悧錛熸垜鍙笇鏈涙湁銆備絾娌℃湁欖旀硶鑳戒嬌鍫嗚繍琛屽姞蹇斿洜姝や笉瑕佹湡鏈涘湪浜у搧鍑鴻揣涔嬪墠鐨勬渶鍚庝竴鏄熸湡鑳藉澶т負鏀硅銆傚鏋滄彁鍓嶈鍒掑爢絳栫暐錛屾儏鍐靛皢浼氬ぇ澶уソ杞傝皟鏁翠嬌鐢ㄥ爢鐨勬柟娉曪紝鍑忓皯瀵瑰爢鐨勬搷浣滄槸鎻愰珮鎬ц兘鐨勮壇鏂廣?/p>

濡備綍鍑忓皯浣跨敤鍫嗘搷浣滐紵閫氳繃鍒╃敤鏁版嵁緇撴瀯鍐呯殑浣嶇疆鍙噺灝戝爢鎿嶄綔鐨勬鏁般傝鑰冭檻涓嬪垪瀹炰緥錛?/p>

struct ObjectA {
    // objectA 鐨勬暟鎹?
}
struct ObjectB {
    // objectB 鐨勬暟鎹?
}
// 鍚屾椂浣跨敤 objectA 鍜?objectB
//
// 浣跨敤鎸囬拡
//
struct ObjectB {
    struct ObjectA * pObjA;
    // objectB 鐨勬暟鎹?
}
//
// 浣跨敤宓屽叆
//
struct ObjectB {
    struct ObjectA pObjA;
    // objectB 鐨勬暟鎹?
}
//
// 闆嗗悎 – 鍦ㄥ彟涓瀵硅薄鍐呬嬌鐢?objectA 鍜?objectB
//
struct ObjectX {
    struct ObjectA   objA;
    struct ObjectB   objB;
}
  1. 閬垮厤浣跨敤鎸囬拡鍏寵仈涓や釜鏁版嵁緇撴瀯銆?/strong>濡傛灉浣跨敤鎸囬拡鍏寵仈涓や釜鏁版嵁緇撴瀯錛屽墠闈㈠疄渚嬩腑鐨勫璞?A 鍜?B 灝嗚鍒嗗埆鍒嗛厤鍜岄噴鏀俱傝繖浼氬鍔犻澶栧紑閿鈥旀垜浠閬垮厤榪欑鍋氭硶銆?br>
  2. 鎶婂甫鎸囬拡鐨勫瓙瀵硅薄宓屽叆鐖跺璞°?/strong>褰撳璞′腑鏈夋寚閽堟椂錛屽垯鎰忓懗鐫瀵硅薄涓湁鍔ㄦ佸厓绱狅紙鐧懼垎涔嬪叓鍗侊級鍜屾病鏈夊紩鐢ㄧ殑鏂頒綅緗傚祵鍏ュ鍔犱簡浣嶇疆浠庤屽噺灝戜簡榪涗竴姝ュ垎閰?閲婃斁鐨勯渶姹傘傝繖灝嗘彁楂樺簲鐢ㄧ▼搴忕殑鎬ц兘銆?br>
  3. 鍚堝茍灝忓璞″艦鎴愬ぇ瀵硅薄錛堣仛鍚堬級銆?/strong>鑱氬悎鍑忓皯鍒嗛厤鍜岄噴鏀劇殑鍧楃殑鏁伴噺銆傚鏋滄湁鍑犱釜寮鍙戣咃紝鍚勮嚜寮鍙戣璁$殑涓嶅悓閮ㄥ垎錛屽垯鏈緇堜細鏈夎澶氬皬瀵硅薄闇瑕佸悎騫躲傞泦鎴愮殑鎸戞垬灝辨槸瑕佹壘鍒版紜殑鑱氬悎杈圭晫銆?br>
  4. 鍐呰仈緙撳啿鍖鴻兘澶熸弧瓚崇櫨鍒嗕箣鍏崄鐨勯渶瑕侊紙aka 80-20 瑙勫垯錛夈?/strong>涓埆鎯呭喌涓嬶紝闇瑕佸唴瀛樼紦鍐插尯鏉ヤ繚瀛樺瓧絎︿覆/浜岃繘鍒舵暟鎹紝浣嗕簨鍏堜笉鐭ラ亾鎬誨瓧鑺傛暟銆備及璁″茍鍐呰仈涓涓ぇ灝忚兘婊¤凍鐧懼垎涔嬪叓鍗侀渶瑕佺殑緙撳啿鍖恒傚鍓╀綑鐨勭櫨鍒嗕箣浜屽崄錛屽彲浠ュ垎閰嶄竴涓柊鐨勭紦鍐插尯鍜屾寚鍚戣繖涓紦鍐插尯鐨勬寚閽堛傝繖鏍鳳紝灝卞噺灝戝垎閰嶅拰閲婃斁璋冪敤騫跺鍔犳暟鎹殑浣嶇疆絀洪棿錛屼粠鏍規湰涓婃彁楂樹唬鐮佺殑鎬ц兘銆?br>
  5. 鍦ㄥ潡涓垎閰嶅璞★紙鍧楀寲錛夈?/strong>鍧楀寲鏄互緇勭殑鏂瑰紡涓嬈″垎閰嶅涓璞$殑鏂規硶銆傚鏋滃鍒楄〃鐨勯」榪炵畫璺熻釜錛屼緥濡傚涓涓?{鍚嶇О錛屽紏 瀵圭殑鍒楄〃錛屾湁涓ょ閫夋嫨錛氶夋嫨涓鏄負姣忎竴涓?#8220;鍚嶇О-鍊?#8221;瀵瑰垎閰嶄竴涓妭鐐癸紱閫夋嫨浜屾槸鍒嗛厤涓涓兘瀹圭撼錛堝浜斾釜錛?#8220;鍚嶇О-鍊?#8221;瀵圭殑緇撴瀯銆備緥濡傦紝涓鑸儏鍐典笅錛屽鏋滃瓨鍌ㄥ洓瀵癸紝灝卞彲鍑忓皯鑺傜偣鐨勬暟閲忥紝濡傛灉闇瑕侀澶栫殑絀洪棿鏁伴噺錛屽垯浣跨敤闄勫姞鐨勯摼琛ㄦ寚閽堛?

    鍧楀寲鏄弸濂界殑澶勭悊鍣ㄩ珮閫熺紦瀛橈紝鐗瑰埆鏄浜?L1-楂橀熺紦瀛橈紝鍥犱負瀹冩彁渚涗簡澧炲姞鐨勪綅緗?鈥斾笉鐢ㄨ瀵逛簬鍧楀垎閰嶏紝寰堝鏁版嵁鍧椾細鍦ㄥ悓涓涓櫄鎷熼〉涓?/p>

  6. 姝g‘浣跨敤 _amblksiz銆?/strong>C 榪愯鏃?(CRT) 鏈夊畠鐨勮嚜瀹氫箟鍓嶇鍒嗛厤紼嬪簭錛岃鍒嗛厤紼嬪簭浠庡悗绔紙Win32 鍫嗭級鍒嗛厤澶у皬涓?_amblksiz 鐨勫潡銆傚皢 _amblksiz 璁劇疆涓鴻緝楂樼殑鍊艱兘娼滃湪鍦板噺灝戝鍚庣鐨勮皟鐢ㄦ鏁般傝繖鍙騫挎硾浣跨敤 CRT 鐨勭▼搴忛傜敤銆?

浣跨敤涓婅堪鎶鏈皢鑾峰緱鐨勫ソ澶勪細鍥犲璞$被鍨嬨佸ぇ灝忓強宸ヤ綔閲忚屾湁鎵涓嶅悓銆備絾鎬昏兘鍦ㄦц兘鍜屽彲鍗囩緝鎬ф柟闈㈡湁鎵鏀惰幏銆傚彟涓鏂歸潰錛屼唬鐮佷細鏈夌偣鐗規畩錛屼絾濡傛灉緇忚繃娣辨濈啛铏戯紝浠g爜榪樻槸寰堝鏄撶鐞嗙殑銆?/p>

鍏朵粬鎻愰珮鎬ц兘鐨勬妧鏈?/h3>

涓嬮潰鏄竴浜涙彁楂橀熷害鐨勬妧鏈細

  1. 浣跨敤 Windows NT5 鍫?/strong>

    鐢變簬鍑犱釜鍚屼簨鐨勫姫鍔涘拰杈涘嫟宸ヤ綔錛?998 騫村垵 Microsoft Windows(R) 2000 涓湁浜嗗嚑涓噸澶ф敼榪涳細

    • 鏀硅繘浜嗗爢浠g爜鍐呯殑閿佸畾銆?/strong>鍫嗕唬鐮佸姣忓爢涓涓攣銆傚叏灞閿佷繚鎶ゅ爢鏁版嵁緇撴瀯錛岄槻姝㈠綰跨▼寮忕殑浣跨敤銆備絾涓嶅垢鐨勬槸錛屽湪楂橀氫俊閲忕殑鎯呭喌涓嬶紝鍫嗕粛鍙楀洶浜庡叏灞閿侊紝瀵艱嚧楂樼珵浜夊拰浣庢ц兘銆俉indows 2000 涓紝閿佸唴浠g爜鐨勪復鐣屽尯灝嗙珵浜夌殑鍙兘鎬у噺鍒版渶灝?浠庤屾彁楂樹簡鍙幾緙╂с?br>
    • 浣跨敤 “Lookaside”鍒楄〃銆?/strong>鍫嗘暟鎹粨鏋勫鍧楃殑鎵鏈夌┖闂查」浣跨敤浜嗗ぇ灝忓湪 8 鍒?1,024 瀛楄妭錛堜互 8-瀛楄妭閫掑錛夌殑蹇熼珮閫熺紦瀛樸傚揩閫熼珮閫熺紦瀛樻渶鍒濅繚鎶ゅ湪鍏ㄥ眬閿佸唴銆傜幇鍦紝浣跨敤 lookaside 鍒楄〃鏉ヨ闂繖浜涘揩閫熼珮閫熺紦瀛樼┖闂插垪琛ㄣ傝繖浜涘垪琛ㄤ笉瑕佹眰閿佸畾錛岃屾槸浣跨敤 64 浣嶇殑浜掗攣鎿嶄綔錛屽洜姝ゆ彁楂樹簡鎬ц兘銆?br>
    • 鍐呴儴鏁版嵁緇撴瀯綆楁硶涔熷緱鍒版敼榪涖?

    榪欎簺鏀硅繘閬垮厤浜嗗鍒嗛厤楂橀熺紦瀛樼殑闇姹傦紝浣嗕笉鎺掗櫎鍏朵粬鐨勪紭鍖栥備嬌鐢?Windows NT5 鍫嗚瘎浼版偍鐨勪唬鐮侊紱瀹冨灝忎簬 1,024 瀛楄妭 (1 KB) 鐨勫潡錛堟潵鑷墠绔垎閰嶇▼搴忕殑鍧楋級鏄渶浣崇殑銆?strong>GlobalAlloc() 鍜?LocalAlloc() 寤虹珛鍦ㄥ悓涓鍫嗕笂錛屾槸瀛樺彇姣忎釜榪涚▼鍫嗙殑閫氱敤鏈哄埗銆傚鏋滃笇鏈涜幏寰楅珮鐨勫眬閮ㄦц兘錛屽垯浣跨敤 Heap(R) API 鏉ュ瓨鍙栨瘡涓繘紼嬪爢錛屾垨涓哄垎閰嶆搷浣滃垱寤鴻嚜宸辯殑鍫嗐傚鏋滈渶瑕佸澶у潡鎿嶄綔錛屼篃鍙互鐩存帴浣跨敤 VirtualAlloc() / VirtualFree() 鎿嶄綔銆?/p>

    涓婅堪鏀硅繘宸插湪 Windows 2000 beta 2 鍜?Windows NT 4.0 SP4 涓嬌鐢ㄣ傛敼榪涘悗錛屽爢閿佺殑绔炰簤鐜囨樉钁楅檷浣庛傝繖浣挎墍鏈?Win32 鍫嗙殑鐩存帴鐢ㄦ埛鍙楃泭銆侰RT 鍫嗗緩绔嬩簬 Win32 鍫嗙殑欏墮儴錛屼絾瀹冧嬌鐢ㄨ嚜宸辯殑灝忓潡鍫嗭紝鍥犺屼笉鑳戒粠 Windows NT 鏀硅繘涓彈鐩娿傦紙Visual C++ 鐗堟湰 6.0 涔熸湁鏀硅繘鐨勫爢鍒嗛厤紼嬪簭銆傦級

  2. 浣跨敤鍒嗛厤楂橀熺紦瀛?/strong>

    鍒嗛厤楂橀熺紦瀛樺厑璁擱珮閫熺紦瀛樺垎閰嶇殑鍧楋紝浠ヤ究灝嗘潵閲嶇敤銆傝繖鑳藉鍑忓皯瀵硅繘紼嬪爢錛堟垨鍏ㄥ眬鍫嗭級鐨勫垎閰?閲婃斁璋冪敤鐨勬鏁幫紝涔熷厑璁告渶澶ч檺搴︾殑閲嶇敤鏇劇粡鍒嗛厤鐨勫潡銆傚彟澶栵紝鍒嗛厤楂橀熺紦瀛樺厑璁告敹闆嗙粺璁′俊鎭?浠ヤ究杈冨ソ鍦扮悊瑙e璞″湪杈冮珮灞傛涓婄殑浣跨敤銆?/p>

    鍏稿瀷鍦幫紝鑷畾涔夊爢鍒嗛厤紼嬪簭鍦ㄨ繘紼嬪爢鐨勯《閮ㄥ疄鐜般傝嚜瀹氫箟鍫嗗垎閰嶇▼搴忎笌緋葷粺鍫嗙殑琛屼負寰堢浉浼箋備富瑕佺殑宸埆鏄畠鍦ㄨ繘紼嬪爢鐨勯《閮ㄤ負鍒嗛厤鐨勫璞℃彁渚涢珮閫熺紦瀛樸傞珮閫熺紦瀛樿璁℃垚涓濂楀浐瀹氬ぇ灝忥紙濡?32 瀛楄妭銆?4 瀛楄妭銆?28 瀛楄妭絳夛級銆傝繖涓涓緢濂界殑絳栫暐錛屼絾榪欑鑷畾涔夊爢鍒嗛厤紼嬪簭涓㈠け涓庡垎閰嶅拰閲婃斁鐨勫璞$浉鍏崇殑“璇箟淇℃伅”銆?

    涓庤嚜瀹氫箟鍫嗗垎閰嶇▼搴忕浉鍙嶏紝“鍒嗛厤楂橀熺紦瀛?#8221;浣滀負姣忕被鍒嗛厤楂橀熺紦瀛樻潵瀹炵幇銆傞櫎鑳藉鎻愪緵鑷畾涔夊爢鍒嗛厤紼嬪簭鐨勬墍鏈夊ソ澶勪箣澶栵紝瀹冧滑榪樿兘澶熶繚鐣欏ぇ閲忚涔変俊鎭傛瘡涓垎閰嶉珮閫熺紦瀛樺鐞嗙▼搴忎笌涓涓洰鏍囦簩榪涘埗瀵硅薄鍏寵仈銆傚畠鑳藉浣跨敤涓濂楀弬鏁拌繘琛屽垵濮嬪寲錛岃繖浜涘弬鏁拌〃紺哄茍鍙戠駭鍒佸璞″ぇ灝忓拰淇濇寔鍦ㄧ┖闂插垪琛ㄤ腑鐨勫厓绱犵殑鏁伴噺絳夈傚垎閰嶉珮閫熺紦瀛樺鐞嗙▼搴忓璞$淮鎸佽嚜宸辯殑縐佹湁絀洪棽瀹炰綋姹狅紙涓嶈秴榪囨寚瀹氱殑闃鍊鹼級騫朵嬌鐢ㄧ鏈変繚鎶ら攣銆傚悎鍦ㄤ竴璧鳳紝鍒嗛厤楂橀熺紦瀛樺拰縐佹湁閿佸噺灝戜簡涓庝富緋葷粺鍫嗙殑閫氫俊閲忥紝鍥犺屾彁渚涗簡澧炲姞鐨勫茍鍙戙佹渶澶ч檺搴︾殑閲嶇敤鍜岃緝楂樼殑鍙幾緙╂с?/p>

    闇瑕佷嬌鐢ㄦ竻鐞嗙▼搴忔潵瀹氭湡媯鏌ユ墍鏈夊垎閰嶉珮閫熺紦瀛樺鐞嗙▼搴忕殑媧誨姩鎯呭喌騫跺洖鏀舵湭鐢ㄧ殑璧勬簮銆傚鏋滃彂鐜版病鏈夋椿鍔紝灝嗛噴鏀懼垎閰嶅璞$殑姹狅紝浠庤屾彁楂樻ц兘銆?/p>

    鍙互瀹℃牳姣忎釜鍒嗛厤/閲婃斁媧誨姩銆傜涓綰т俊鎭寘鎷璞°佸垎閰嶅拰閲婃斁璋冪敤鐨勬繪暟銆傞氳繃鏌ョ湅瀹冧滑鐨勭粺璁′俊鎭彲浠ュ緱鍑哄悇涓璞′箣闂寸殑璇箟鍏崇郴銆傚埄鐢ㄤ互涓婁粙緇嶇殑璁稿鎶鏈箣涓錛岃繖縐嶅叧緋誨彲浠ョ敤鏉ュ噺灝戝唴瀛樺垎閰嶃?/p>

    鍒嗛厤楂橀熺紦瀛樹篃璧峰埌浜嗚皟璇曞姪鎵嬬殑浣滅敤錛屽府鍔╂偍璺熻釜娌℃湁瀹屽叏娓呴櫎鐨勫璞℃暟閲忋傞氳繃鏌ョ湅鍔ㄦ佸爢鏍堣繑鍥炶釜榪瑰拰闄ゆ病鏈夋竻闄ょ殑瀵硅薄涔嬪鐨勭鍚嶏紝鐢氳嚦鑳藉鎵懼埌紜垏鐨勫け璐ョ殑璋冪敤鑰呫?/p>

  3. MP 鍫?/strong>

    MP 鍫嗘槸瀵瑰澶勭悊鍣ㄥ弸濂界殑鍒嗗竷寮忓垎閰嶇殑紼嬪簭鍖咃紝鍦?Win32 SDK錛圵indows NT 4.0 鍜屾洿鏂扮増鏈級涓彲浠ュ緱鍒般傛渶鍒濈敱 JVert 瀹炵幇錛屾澶勫爢鎶借薄寤虹珛鍦?Win32 鍫嗙▼搴忓寘鐨勯《閮ㄣ侻P 鍫嗗垱寤哄涓?Win32 鍫嗭紝騫惰瘯鍥懼皢鍒嗛厤璋冪敤鍒嗗竷鍒頒笉鍚屽爢錛屼互鍑忓皯鍦ㄦ墍鏈夊崟涓閿佷笂鐨勭珵浜夈?/p>

    鏈▼搴忓寘鏄ソ鐨勬楠?鈥斾竴縐嶆敼榪涚殑 MP-鍙嬪ソ鐨勮嚜瀹氫箟鍫嗗垎閰嶇▼搴忋備絾鏄紝瀹冧笉鎻愪緵璇箟淇℃伅鍜岀己涔忕粺璁″姛鑳姐傞氬父灝?MP 鍫嗕綔涓?SDK 搴撴潵浣跨敤銆傚鏋滀嬌鐢ㄨ繖涓?SDK 鍒涘緩鍙噸鐢ㄧ粍浠訛紝鎮ㄥ皢澶уぇ鍙楃泭銆備絾鏄紝濡傛灉鍦ㄦ瘡涓?DLL 涓緩绔嬭繖涓?SDK 搴擄紝灝嗗鍔犲伐浣滆緗?/p>

  4. 閲嶆柊鎬濊冪畻娉曞拰鏁版嵁緇撴瀯

    瑕佸湪澶氬鐞嗗櫒鏈哄櫒涓婁幾緙╋紝鍒欑畻娉曘佸疄鐜般佹暟鎹粨鏋勫拰紜歡蹇呴』鍔ㄦ佷幾緙┿傝鐪嬫渶緇忓父鍒嗛厤鍜岄噴鏀劇殑鏁版嵁緇撴瀯銆傝瘯闂紝“鎴戣兘鐢ㄤ笉鍚岀殑鏁版嵁緇撴瀯瀹屾垚姝ゅ伐浣滃悧錛?#8221;渚嬪錛屽鏋滃湪搴旂敤紼嬪簭鍒濆鍖栨椂鍔犺澆浜嗗彧璇婚」鐨勫垪琛紝榪欎釜鍒楄〃涓嶅繀鏄嚎鎬ч摼鎺ョ殑鍒楄〃銆傚鏋滄槸鍔ㄦ佸垎閰嶇殑鏁扮粍灝遍潪甯稿ソ銆傚姩鎬佸垎閰嶇殑鏁扮粍灝嗗噺灝戝唴瀛樹腑鐨勫爢鍧楀拰紕庣墖錛屼粠鑰屽寮烘ц兘銆?/p>

    鍑忓皯闇瑕佺殑灝忓璞$殑鏁伴噺鍑忓皯鍫嗗垎閰嶇▼搴忕殑璐熻澆銆備緥濡傦紝鎴戜滑鍦ㄦ湇鍔″櫒鐨勫叧閿鐞嗚礬寰勪笂浣跨敤浜斾釜涓嶅悓鐨勫璞★紝姣忎釜瀵硅薄鍗曠嫭鍒嗛厤鍜岄噴鏀俱備竴璧烽珮閫熺紦瀛樿繖浜涘璞★紝鎶婂爢璋冪敤浠庝簲涓噺灝戝埌涓涓紝鏄捐憲鍑忓皯浜嗗爢鐨勮礋杞斤紝鐗瑰埆褰撴瘡縐掗挓澶勭悊 1,000 涓互涓婄殑璇鋒眰鏃躲?/p>

    濡傛灉澶ч噺浣跨敤“Automation”緇撴瀯錛岃鑰冭檻浠庝富綰夸唬鐮佷腑鍒犻櫎“Automation BSTR”錛屾垨鑷沖皯閬垮厤閲嶅鐨?BSTR 鎿嶄綔銆傦紙BSTR 榪炴帴瀵艱嚧榪囧鐨勯噸鍒嗛厤鍜屽垎閰?閲婃斁鎿嶄綔銆傦級

鎽樿

瀵規墍鏈夊鉤鍙板線寰閮藉瓨鍦ㄥ爢瀹炵幇錛屽洜姝ゆ湁宸ㄥぇ鐨勫紑閿銆傛瘡涓崟鐙唬鐮侀兘鏈夌壒瀹氱殑瑕佹眰錛屼絾璁捐鑳介噰鐢ㄦ湰鏂囪璁虹殑鍩烘湰鐞嗚鏉ュ噺灝戝爢涔嬮棿鐨勭浉浜掍綔鐢ㄣ?

  1. 璇勪環鎮ㄧ殑浠g爜涓爢鐨勪嬌鐢ㄣ?br>
  2. 鏀硅繘鎮ㄧ殑浠g爜錛屼互浣跨敤杈冨皯鐨勫爢璋冪敤錛氬垎鏋愬叧閿礬寰勫拰鍥哄畾鏁版嵁緇撴瀯銆?br>
  3. 鍦ㄥ疄鐜拌嚜瀹氫箟鐨勫寘瑁呯▼搴忎箣鍓嶄嬌鐢ㄩ噺鍖栧爢璋冪敤鎴愭湰鐨勬柟娉曘?br>
  4. 濡傛灉瀵規ц兘涓嶆弧鎰忥紝璇瘋姹?OS 緇勬敼榪涘爢銆傛洿澶氳繖綾昏姹傛剰鍛崇潃瀵規敼榪涘爢鐨勬洿澶氬叧娉ㄣ?br>
  5. 瑕佹眰 C 榪愯鏃剁粍閽堝 OS 鎵鎻愪緵鐨勫爢鍒朵綔灝忓閥鐨勫垎閰嶅寘瑁呯▼搴忋傞殢鐫 OS 鍫嗙殑鏀硅繘錛孋 榪愯鏃跺爢璋冪敤鐨勬垚鏈皢鍑忓皬銆?br>
  6. 鎿嶄綔緋葷粺錛圵indows NT 瀹舵棌錛夋鍦ㄤ笉鏂敼榪涘爢銆傝闅忔椂鍏蟲敞鍜屽埄鐢ㄨ繖浜涙敼榪涖?

Murali Krishnan 鏄?Internet Information Server (IIS) 緇勭殑棣栧腑杞歡璁捐宸ョ▼甯堛備粠 1.0 鐗堟湰寮濮嬩粬灝辮璁?IIS錛屽茍鎴愬姛鍙戣浜?1.0 鐗堟湰鍒?4.0 鐗堟湰銆侻urali 緇勭粐騫墮瀵?IIS 鎬ц兘緇勪笁騫?(1995-1998), 浠庝竴寮濮嬪氨褰卞搷 IIS 鎬ц兘銆備粬鎷ユ湁濞佹柉搴鋒槦宸?Madison 澶у鐨?M.S.鍜屽嵃搴?Anna 澶у鐨?B.S.銆傚伐浣滀箣澶栵紝浠栧枩嬈㈤槄璇匯佹墦鎺掔悆鍜屽搴児楗?/p>


騫藉菇 2009-02-03 08:49 鍙戣〃璇勮
]]>WindowFeatures錛圵IN32寮鍙戝繀鐪嬶級http://m.shnenglu.com/justin-shi/archive/2008/08/16/59052.html騫藉菇騫藉菇Sat, 16 Aug 2008 05:38:00 GMThttp://m.shnenglu.com/justin-shi/archive/2008/08/16/59052.htmlhttp://m.shnenglu.com/justin-shi/comments/59052.htmlhttp://m.shnenglu.com/justin-shi/archive/2008/08/16/59052.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/59052.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/59052.html榪欑瘒鏂囩珷緲昏瘧鑷矼SDN2005錛岀粰鑷繁瀛︿範錛屼篃緇欐墍鏈夎寰楀畠鏈夌敤鐨勪漢錛屾枃涓毦鍏嶆湁緲昏瘧涓嶅埌浣嶆垨鑰呴敊璇殑鍦版柟錛屾湜楂樻墜鎸囨銆傝瘧鑰咃細嬈ф槉宸濓紙杞澆楹葷儲娉ㄦ槑鍑哄鍙婅瘧鑰咃級

2008騫?鏈?鏃?wbr>

榪欎釜姒傝堪璁ㄨ浜嗙獥鍙g殑涓浜涚壒鎬э紝濡傜獥鍙g被鍨嬨佺姸鎬併佸ぇ灝忓強浣嶇疆銆?wbr>

1銆佺獥鍙g被鍨嬶紙WindowStyles錛?/strong>
榪欎竴鑺傛弿榪板眰鍙犵獥鍙c佸脊鍑虹獥鍙c佸瓙紿楀彛銆佸垎灞傜獥鍙c佷粎澶勭悊娑堟伅鐨勭獥鍙h繖浜旂綾誨瀷銆?/strong>

1.1灞傚彔紿楀彛錛圤verlappedWindows錛?wbr>
灞傚彔紿楀彛鏄竴涓叿鏈夋爣棰樻爮銆佽竟妗嗗拰瀹㈡埛鍖虹殑欏跺眰紿楀彛錛涗篃灝辨槸璇村畠閫傚悎鍋氫負搴旂敤紼嬪簭涓葷獥鍙c傚畠涔熷彲浠ュ叿鏈変竴涓郴緇熻彍鍗曪紝鏈灝忓拰鏈澶у寲鎸夐挳錛屼互鍙婃粴鍔ㄦ潯銆備竴涓眰鍙犵獥鍙h鍏稿瀷鍦扮敤浜庡寘鍚墍鏈変笂榪扮粍浠剁殑搴旂敤紼嬪簭涓葷獥鍙c?wbr>

閫氳繃鍦–reateWindowEx涓寚瀹歐S_OVERLAPPED鎴栬匴S_OVERLAPPEDWINDOW鏍峰紡錛屼竴涓簲鐢ㄧ▼搴忓氨鑳藉垱寤轟竴涓眰鍙犵獥鍙c傚亣濡備綘浣跨敤絎竴涓牱寮忥紝閭d箞鍒涘緩鐨勭獥鍙e氨鍏鋒湁涓涓爣棰樻爮鍜岃竟妗嗭紱鍋囧浣犱嬌鐢ㄧ浜屼釜錛岄偅涔堢獥鍙e氨鍏鋒湁涓涓爣棰樻爮錛屽彲浠ヨ皟鏁村ぇ灝忕殑杈規錛岀郴緇熻彍鍗曪紝浠ュ強鏈澶ф渶灝忓寲鎸夐挳銆?wbr>

1.2寮瑰嚭紿楀彛錛圥op-upWindows錛?wbr>
寮瑰嚭紿楀彛鏄竴涓潪鍑$殑灞傚彔紿楀彛錛屽畠琚敤浜庢樉紺哄湪搴旂敤紼嬪簭涓葷獥鍙d箣澶栫殑瀵硅瘽妗嗭紝娑堟伅妗嗕互鍙婂叾浠栦復鏃剁獥鍙c傛爣棰樻爮瀵瑰脊鍑虹獥鍙f潵璇存槸鍙夌殑錛涢櫎姝や箣澶栵紝寮瑰嚭紿楀彛璺熷叿鏈塛S_OVERLAPPED鏍峰紡鐨勫眰鍙犵獥鍙d竴鏍楓?wbr>

浣犲彲浠ラ氳繃鍦–reateWindowEx涓寚瀹歐S_POPUP鏍峰紡鏉ュ垱寤轟竴涓脊鍑虹獥鍙c傚亣濡傝浣跨敤鏍囬鏍忥紝灝卞姞鍏S_CAPTION鏍峰紡銆備嬌鐢╓S_POPUPWINDOW鏍峰紡鏉ュ垱寤轟竴涓惈鏈夎竟妗嗗拰緋葷粺鑿滃崟鐨勫脊鍑虹獥鍙c俉S_CAPTION鏍峰紡蹇呴』涓嶹S_POPUPWINDOW鏍峰紡涓璧蜂嬌鐢ㄦ墠鑳戒嬌緋葷粺鑿滃崟鍙銆?wbr>

1.3瀛愮獥鍙o紙ChildWindows錛?wbr>
瀛愮獥鍙e叿鏈塛S_CHILD鏍峰紡騫朵笖瀹冭闄愬埗鍦ㄥ叾鐖剁獥鍙g殑瀹㈡埛鍖轟腑銆傚簲鐢ㄧ▼搴忓吀鍨嬪湴浣跨敤瀛愮獥鍙f潵鎶婂叾鐖剁獥鍙g殑瀹㈡埛鍖哄垝鍒嗘垚鍑犱釜鍔熻兘鍖哄煙銆備綘鍙互閫氳繃鍦–reateWindowEx涓寚瀹歐S_CHILD鏍峰紡鏉ュ垱寤哄瓙紿楀彛銆?wbr>

瀛愮獥鍙e繀欏誨叿鏈変竴涓埗紿楀彛銆傜埗紿楀彛鍙互鏄竴涓眰鍙犵獥鍙o紝寮瑰嚭紿楀彛錛屾垨鑰呭彟澶栦竴涓瓙紿楀彛銆備綘鍙互鍦–reateWindowEx涓寚瀹氱埗紿楀彛銆傚亣濡備綘鍦–reateWindowEx涓寚瀹氫簡WS_CHILD鏍峰紡浣嗘槸娌℃湁鎸囧畾鐖剁獥鍙o紝閭d箞緋葷粺涓嶄細鍒涘緩榪欎釜瀛愮獥鍙c?wbr>

瀛愮獥鍙e彧鍏鋒湁涓涓鎴峰尯鑰屾病鏈夊叾浠栫壒鎬э紝闄ら潪榪欎簺鐗規ц鏄庣‘鐨勮姹傘傚簲鐢ㄧ▼搴忓彲浠ヤ負瀛愮獥鍙f坊鍔犳爣棰樻爮錛岀郴緇熻彍鍗曪紝鏈灝忓寲鏈澶у寲鎸夐挳錛岃竟妗嗭紝浠ュ強婊氬姩鏉°備絾鏄瓙紿楀彛涓嶈兘鍏鋒湁鑷畾涔夎彍鍗曘傚亣濡傚簲鐢ㄧ▼搴忔寚瀹氫簡涓涓嚜瀹氫箟鑿滃崟鍙ユ焺錛岄偅涔堟棤璁烘槸鍦ㄥ畠娉ㄥ唽榪欎釜瀛愮獥鍙g被榪樻槸鍒涘緩榪欎釜瀛愮獥鍙f椂錛岃繖涓彍鍗曞彞鏌勯兘琚拷鐣ャ傚亣濡傛病鏈夋寚瀹氳竟妗嗘牱寮忥紝緋葷粺灝嗗垱寤轟竴涓棤杈規紿楀彛銆傚簲鐢ㄧ▼搴忓彲浠ヤ嬌鐢ㄦ棤杈規鐨勫瓙紿楀彛鏉ュ垝鍒嗙埗紿楀彛鐨勫鎴峰尯鍋囧鎯充繚鎸佽繖縐嶅垝鍒嗗鐢ㄦ埛鏄笉鍙鐨勮瘽銆?wbr>

涓嬮潰涓鑺傝璁虹獥鍙g殑甯冪疆銆佽鍓佷笌鐖剁獥鍙g殑鍏崇郴銆佹秷鎭洓涓富棰樸?/strong>

1.4紿楀彛甯冪疆錛圥ositioning錛?wbr>
緋葷粺鎬繪槸鐩稿浜庣埗紿楀彛瀹㈡埛鍖虹殑宸︿笂瑙掓潵鏀劇疆瀛愮獥鍙c傚瓙紿楀彛鐨勪換浣曢儴鍒嗛兘涓嶄細鍑虹幇鍦ㄥ叾鐖剁獥鍙g殑杈規涔嬪銆傚亣濡傚簲鐢ㄧ▼搴忓垱寤轟竴涓瘮鐖剁獥鍙eぇ鐨勫瓙紿楀彛錛屾垨鑰呯Щ鍔ㄥ瓙紿楀彛浣垮緱涓涓垨鑰呮墍鏈夊瓙紿楀彛瓚呭嚭浜嗙埗紿楀彛鐨勮竟妗嗭紝閭d箞緋葷粺浼氳鍓瓙紿楀彛錛屽嵆鍦ㄧ埗紿楀彛杈規涔嬪鐨勯儴鍒嗕笉琚樉紺恒傚鐖剁獥鍙d駭鐢熷獎鍝嶇殑琛屼負鍚屾牱浼氬獎鍝嶅瓙紿楀彛錛岃繖浜涜涓哄涓嬶細

 



騫藉菇 2008-08-16 13:38 鍙戣〃璇勮
]]>
Window涓嬫嫋鏀炬搷浣淒rag & Drop 鍏ㄨВ鏋?/title><link>http://m.shnenglu.com/justin-shi/archive/2008/08/14/58866.html</link><dc:creator>騫藉菇</dc:creator><author>騫藉菇</author><pubDate>Thu, 14 Aug 2008 11:19:00 GMT</pubDate><guid>http://m.shnenglu.com/justin-shi/archive/2008/08/14/58866.html</guid><wfw:comment>http://m.shnenglu.com/justin-shi/comments/58866.html</wfw:comment><comments>http://m.shnenglu.com/justin-shi/archive/2008/08/14/58866.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/justin-shi/comments/commentRss/58866.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/justin-shi/services/trackbacks/58866.html</trackback:ping><description><![CDATA[<p><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><strong>OLE</strong><strong>鎷栨斁瀹炵幇</strong></font></span></p> <p><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>MFC</font>鏈韓鐨?font face=Tahoma>CView</font>綾繪槸鏀寔鎷栨斁鎿嶄綔鐨勶紝閫氳繃鐮旂┒<font face=Tahoma>CView</font>綾葷殑婧愮爜錛屽ぇ浣撶煡閬撳畠鐨勫疄鐜板師鐞嗘槸榪欐牱鐨勶細<font face=Tahoma>CView</font>綾諱腑鏈変竴涓?font face=Tahoma>COleDropTarget</font>綾葷殑瀵硅薄錛屽湪瑙嗗浘紿楀彛鍒濆鍖栨椂錛岃皟鐢?font face=Tahoma>COleDropTarget</font>綾繪垚鍛樺嚱鏁?font face=Tahoma>Register()</font>錛屼互姝ゅ湪緋葷粺涓敞鍐岃瑙嗗浘紿楀彛涓烘嫋鏀炬帴鏀剁獥鍙c傚綋榪涜鎷栨斁鎿嶄綔鐨勯紶鏍囨寚閽堝浜庤鍥劇獥鍙h寖鍥村唴鏃訛紝<font face=Tahoma>COleDropTarge</font>綾諱細鍋氬嚭鍙嶅簲錛屽畠鐨?font face=Tahoma>OnDragEnter</font>銆?font face=Tahoma>OnDragOver</font>銆?font face=Tahoma>OnDropEx</font>銆?font face=Tahoma>OnDrop</font>絳夋垚鍛樺嚱鏁拌渚濇璋冪敤錛岃繖浜涘嚱鏁伴粯璁ゅ潎鏄皟鐢ㄤ笌鍏剁浉瀵瑰簲鐨?font face=Tahoma>CView</font>綾繪垚鍛樺嚱鏁?font face=Tahoma>OnDragEnter</font>銆?font face=Tahoma>OnDragOver</font>銆?font face=Tahoma>OnDropEx</font>銆?font face=Tahoma>OnDrop</font>絳夛紝紼嬪簭鍛樺彧闇閲嶈澆榪欎簺<font face=Tahoma>CView</font>綾繪垚鍛樺嚱鏁幫紝鍗沖彲瀵規嫋鍔ㄧ殑榪囩▼鍙婄粨鏋滆繘琛屾帶鍒躲?/font></span></p> <p><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鍥犱負<font face=Tahoma>COleDropTarget</font>榛樿鍙<font face=Tahoma>CView</font>鎻愪緵鏀寔錛屾墍浠ュ鏋滆璁╁叾浠栫殑紿楀彛鏀寔鎷栨斁錛屾垜浠繀欏誨悓鏃跺瑕佹敮鎸佹嫋鏀劇殑紿楀彛綾誨拰<font face=Tahoma>COleDropTarget</font>綾昏繘琛屾淳鐢熴傛妸瀵規嫋鏀炬搷浣滃叿浣撹繘琛屽鐞嗙殑浠g爜灝佽鎴愭淳鐢熺獥鍙g被鐨勬垚鍛樺嚱鏁幫紝鐒跺悗閲嶈澆<font face=Tahoma>COleDropTarget</font>涓搴旂殑浜斾釜铏氬嚱鏁幫紝褰撳畠鎺ユ敹鍒版嫋鏀懼姩浣滄椂錛岃皟鐢ㄧ獥鍙f淳鐢熺被鐨勫鐞嗗嚱鏁板嵆鍙備絾榪欓噷鏈変竴涓棶棰橈紝灝辨槸鎴戜滑鎬庝箞鐭ラ亾浣曟椂璋冪敤媧劇敓綾葷殑澶勭悊鍑芥暟鍛紵絳旀鏄繍鐢?font face=Tahoma>RTTI</font>鎶鏈傚鏋?font face=Tahoma>COleDropTarget</font>媧劇敓綾繪敹鍒扮殑紿楀彛鎸囬拡綾誨瀷錛屽氨鏄垜浠淳鐢熺殑紿楀彛綾伙紝閭d箞灝辮皟鐢ㄥ畠鐨勫鐞嗗嚱鏁幫紝鍚﹀垯璋冪敤鍩虹被榪涜澶勭悊銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>棣栧厛鐢熸垚涓涓璇濇宸ョ▼錛屾坊鍔犱簩涓柊綾匯?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>絎竴涓被鍚嶄負<font face=Tahoma>CListCtrlEx</font>錛岀埗綾諱負<font face=Tahoma>CListCtrl</font>銆傛坊鍔犲畬姣曞悗錛屽湪<font face=Tahoma>CListCtrlEx</font>鐨勫畾涔夊ご鏂囦歡涓姞鍏?font face=Tahoma>DECLARE_DYNAMIC(CListCtrlEx)</font>錛屽湪鍏跺疄鐜版枃浠朵腑鍔犲叆<font face=Tahoma>IMPLEMENT_DYNAMIC(CListCtrlEx,CListCtrl)</font>錛岃繖鏍峰氨瀵?font face=Tahoma>CListCtrlEx</font>綾繪坊鍔犱簡<font face=Tahoma>RTTI</font>榪愯鏈熺被鍨嬭瘑鍒紙<font face=Tahoma>Run Time Type Information</font>錛夋敮鎸併?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>絎簩涓被鍚嶄負<font face=Tahoma>COleDropTargetEx</font>錛岀埗綾諱負<font face=Tahoma>COleDataTarget</font>銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鍦?font face=Tahoma>CListCtrlEx</font>涓坊鍔?font face=Tahoma>COleDropTargetEx</font>綾葷殑瀵硅薄錛屽茍娣誨姞涓嬪垪鍏湁铏氬嚱鏁扮殑澹版槑錛?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual BOOL Initialize();</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual DROPEFFECT OnDropEx(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, DROPEFFECT dropList, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual void OnDragLeave(CWnd* pWnd);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>Initialize</font>鍑芥暟鐢ㄤ簬娉ㄥ唽<font face=Tahoma>CListCtrlEx</font>鎴愪負鎷栨斁鎺ユ敹紿楀彛錛?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>OnDragOver</font>鍦ㄦ嫋鏀鵑紶鏍囪繘鍏ョ獥鍙f椂琚皟鐢ㄣ傛鍑芥暟鐨勮繑鍥炲煎喅瀹氫簡鍚庣畫鐨勫姩浣滅殑綾誨瀷錛氬鏋滆繑鍥?font face=Tahoma>DROPEFFECT_MOVE</font>錛屽垯浜х敓涓涓壀鍒囧姩浣滐紱濡傛灉榪斿洖<font face=Tahoma>DROPEFFECT_COPY</font>錛屽垯浜х敓涓涓鍒跺姩浣滐紝濡傛灉榪斿洖<font face=Tahoma>DROPEFFECT_NONE</font>錛屽垯涓嶄細浜х敓鎷栨斁鍔ㄤ綔錛屽洜涓?font face=Tahoma>OnDropEx</font>銆?font face=Tahoma>OnDrop</font>鍑芥暟灝嗕笉浼氳璋冪敤錛?font face=Tahoma>OnDragLeave</font>鍑芥暟浠嶄細琚皟鐢級銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>OnDropEx</font>鍑芥暟浼氬湪<font face=Tahoma>OnDrop</font>鍑芥暟涔嬪墠璋冪敤錛屽鏋?font face=Tahoma>OnDropEx</font>鍑芥暟娌℃湁瀵規嫋鏀懼姩浣滆繘琛屽鐞嗭紝鍒欏簲鐢ㄧ▼搴忔鏋朵細鎺ョ潃璋冪敤<font face=Tahoma>OnDrop</font>鍑芥暟榪涜澶勭悊銆傛墍浠ュ繀欏昏鍦ㄦ淳鐢熺被涓噸杞?font face=Tahoma>OnDropEx</font>鍑芥暟鈥斺斿嵆浣夸粈涔堝姩浣滈兘閮芥病鏈夊仛鈥斺斿惁鍒欐垜浠殑<font face=Tahoma>OnDrop</font>鍑芥暟灝嗕笉浼氳鎵ц鍒幫紝鍥犱負娌℃湁閲嶈澆鐨勮瘽錛屽皢浼氳皟鐢ㄥ熀綾葷殑<font face=Tahoma>OnDropEx</font>鍑芥暟錛岃屽熀綾葷殑<font face=Tahoma>OnDropEx</font>鍑芥暟瀵規嫋鏀炬槸榪涜浜嗗鐞嗙殑鈥斺斿敖綆′笉鏄垜浠墍鎯寵鐨勫姩浣溿傚綋鐒朵綘涔熷彲浠ユ妸瀵規嫋鏀捐繘琛屽鐞嗙殑鍔ㄤ綔鏀懼湪<font face=Tahoma>OnDropEx</font>涓斺旈偅鏍峰氨涓嶉渶瑕侀噸杞?font face=Tahoma>OnDrop</font>浜嗐?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>OnDragLeave</font>鍑芥暟浼氬湪榧犳爣紱誨紑紿楀彛鏃惰璋冪敤錛屽湪姝ゅ彲浠ヨ繘琛屼竴浜涚畝鍗曠殑娓呯悊宸ヤ綔銆傝濡傚湪<font face=Tahoma>OnDragEnter</font>鎴栬?font face=Tahoma>OnDragOver</font>鍑芥暟涓紝鎴戜滑鏀瑰彉浜嗗厜鏍囩殑褰㈡侊紝閭d箞姝ゆ椂鎴戜滑灝卞簲璇ユ妸鍏夋爣鎭㈠榪囨潵銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>榪欎簺鍑芥暟涓渶閲嶈鐨勬槸<font face=Tahoma>OnDrop</font>鍑芥暟錛屾嫋鏀懼姩浣滃皢鍦ㄦ榪涜澶勭悊錛屽畠鐨勫叏閮ㄦ簮鐮佸涓嬶細</font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>BOOL CListCtrlEx::OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point)</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>{</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       UINT              nFileCount = 0;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       HDROP           hDropFiles = NULL;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       HGLOBAL        hMemData = NULL;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma size=2> </font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       AfxMessageBox("OnDrop");</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       if(pDataObject->IsDataAvailable(CF_HDROP)) </font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              hMemData = pDataObject->GetGlobalData(CF_HDROP);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>              hDropFiles = (HDROP)GlobalLock((HGLOBAL)hMemData); //</font>閿佸畾鍐呭瓨鍧?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              if(hDropFiles != NULL)</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                     char chTemp[_MAX_PATH+1] = {0};</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                     nFileCount = DragQueryFile(hDropFiles, 0xFFFFFFFF, NULL, 0);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>                     for(UINT nCur=0; nCur<nFileCount; ++nCur) //</font>閬嶅巻鍙栧緱姣忎釜鏂囦歡鍚?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                     {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                            ZeroMemory(chTemp, _MAX_PATH+1);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                DragQueryFile(hDropFiles, nCur, (LPTSTR)chTemp, _MAX_PATH+1);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                            AddAllFiles(chTemp);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>                     }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              GlobalUnlock(hMemData);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              return TRUE;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       else</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              return FALSE;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>}</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鍦ㄧ浜屼釜綾?font face=Tahoma>COleDropTarget</font>涓坊鍔犲涓嬪搴旂殑鍑芥暟錛?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>    virtual DROPEFFECT OnDragEnter(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>    virtual DROPEFFECT OnDragOver(CWnd* pWnd, COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual DROPEFFECT OnDropEx(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, DROPEFFECT dropList, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual BOOL OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       virtual void OnDragLeave(CWnd* pWnd);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>瀹冧滑鐨勫姩浣滈兘宸笉澶氾細鍏堢敤<font face=Tahoma>RTTI</font>鍒ゆ柇紿楀彛鎸囬拡<font face=Tahoma>pWnd</font>鐨勭被鍨嬶紝濡傛灉鏄?font face=Tahoma>CListCtrlEx</font>錛屽垯璋冪敤<font face=Tahoma>CListCtrlEx</font>涓搴旂殑澶勭悊鍑芥暟錛屽惁鍒欒皟鐢ㄥ熀綾葷殑澶勭悊鍑芥暟銆備互<font face=Tahoma>OnDrop</font>涓轟緥錛?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>BOOL COleDropTargetEx::OnDrop(CWnd* pWnd, COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point)</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>{</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       CListCtrlEx*     pListCtrlEx = NULL;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       </font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       ASSERT_VALID(this);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       ASSERT(IsWindow(pWnd->m_hWnd));</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       </font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       if(pWnd->IsKindOf(RUNTIME_CLASS(CListCtrlEx)))</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              pListCtrlEx = (CListCtrlEx*)pWnd;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              return pListCtrlEx->OnDrop(pWnd, pDataObject, dropEffect, point);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       else</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              return COleDropTarget::OnDrop(pWnd, pDataObject, dropEffect, point);     </font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>}</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2></font></font></span> </p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>//鍊掗湁鐨?4K闄愬埗錛屽彧鑳藉啀鎴柇浜嗭細錛?br><br></font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鑷蟲錛屾垜浠垚鍔熷湴涓?font face=Tahoma>CListCtrlEx</font>娣誨姞浜嗘枃浠舵嫋鍏ユ搷浣滅殑鏀寔銆備竴涓畬鏁寸殑鎷栨斁鎿嶄綔錛岃繕鍖呮嫭鎷栧嚭鍔ㄤ綔錛屾墍浠ュ繀欏昏涓鴻綾誨啀娣誨姞鎷栧嚭鎿嶄綔錛屽嵆錛屽皢鍒楄〃涓殑鏌愪竴欏規垨鑰呭欏規嫋鍑烘垚涓轟竴涓枃浠躲傝繖灝遍渶瑕佺敤鍒板彟涓涓被錛?font face=Tahoma>COleDataSource</font>銆傚叿浣撴楠ゅ涓嬶細<br></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鍦?font face=Tahoma>CListCtrlEx</font>涓姞鍏ヤ竴涓?font face=Tahoma>COleDataSource</font>鐨勫疄渚嬶紝騫舵槧灝勫垪琛ㄦ鐨?font face=Tahoma>LVN_BEGINDRAG</font>娑堟伅澶勭悊鍑芥暟錛屽湪姝ゆ垜浠坊鍔犳嫋鍑烘搷浣滅殑浠g爜銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>瀹炵幇鎷栧嚭闈炲父綆鍗曪紝鍙渶瑕佷緷嬈¤皟鐢?font face=Tahoma>COleDataSource</font>鐨勪笁涓嚱鏁板嵆鍙細<font face=Tahoma>Empty</font>鐢ㄤ簬娓呯┖鍘熷厛瀵硅薄涓紦瀛樼殑鏁版嵁錛?font face=Tahoma>CacheGlobalData</font>鐢ㄦ潵緙撳瓨鏁版嵁浠ヨ繘琛屾嫋鏀炬搷浣滐紝鏈鍚庤皟鐢?font face=Tahoma>DoDragDrop</font>鍚姩鏈鎷栨斁鎿嶄綔銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>浣嗗湪璋冪敤涔嬪墠錛屽繀欏昏鍋氫竴浜涘噯澶囧伐浣溿備富瑕佺殑浠誨姟灝辨槸鍒涘緩涓涓?font face=Tahoma>DROPFILES</font>緇撴瀯浣擄紝騫舵嫹璐濊鎷栨斁鐨勬枃浠跺悕鍒扮粨鏋勪綋鍚庣殑鍐呭瓨涓?font face=Tahoma>DROPFILES</font>緇撴瀯浣撳畾涔変簡<font face=Tahoma>CF_HDROP</font>鍓創鏉挎牸寮忥紝绱ц窡瀹冨悗闈㈢殑鏄竴緋誨垪琚嫋鏀炬枃浠剁殑璺緞鍚嶃傚畠鐨勫畾涔夊涓嬶細</font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>typedef struct _DROPFILES</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>{</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>    DWORD     pFiles;  //</font>鏂囦歡鍚嶈搗濮嬪湴鍧</font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>    POINT      pt;     //</font>榧犳爣鏀句笅鐨勪綅緗紝鍧愭爣鐢?font face=Tahoma>fNC</font>鎴愬憳鎸囧畾</font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>    BOOL        fNC;    //</font>涓?font face=Tahoma>TRUE</font>琛ㄧず閫傜敤灞忓箷鍧愭爣緋伙紝鍚﹀垯浣跨敤瀹㈡埛鍧愭爣緋?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>    BOOL        fWide;  //</font>鏂囦歡鍚嶅瓧絎︿覆鏄惁浣跨敤瀹藉瓧絎?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>} DROPFILES, FAR* LPDROPFILES; </font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鎷栨斁涔嬪墠鐨勫噯澶囧姩浣滅殑浠g爜濡備笅錛?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>uBufferSize = sizeof(DROPFILES) + uBufferSize + 1;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>    hMemData = GlobalAlloc(GPTR,uBufferSize);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>    ASSERT(hMemData != NULL);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       </font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>       lpDropFiles = (LPDROPFILES)GlobalLock(hMemData); //</font>閿佸畾涔?font face=Tahoma>,</font>騫惰緗浉鍏蟲垚鍛?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       ASSERT(lpDropFiles != NULL);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       lpDropFiles->pFiles = sizeof(DROPFILES);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>#ifdef _UNICODE</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       lpDropFiles->fWide = TRUE;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>#else</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       lpDropFiles->fWide = FALSE;</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>#endif</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma size=2> </font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>       //</font>鎶婇変腑鐨勬墍鏈夋枃浠跺悕渚濇澶嶅埗鍒?font face=Tahoma>DROPFILES</font>緇撴瀯浣撳悗闈?font face=Tahoma>(</font>鍏ㄥ眬鍐呭瓨涓?font face=Tahoma>)</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       pItemPos = strSelectedList.GetHeadPosition();</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       pszStart = (char*)((LPBYTE)lpDropFiles + sizeof(DROPFILES));</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       while(pItemPos != NULL)</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       {</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>              lstrcpy(pszStart, (LPCTSTR)strSelectedList.GetNext(pItemPos));</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>        pszStart = strchr(pszStart,'\0') + 1; //</font>涓嬫鐨勮搗濮嬩綅緗槸涓婁竴嬈$粨灝?font face=Tahoma>+1</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       }</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鍑嗗瀹屾瘯涔嬪悗灝卞彲浠ヨ繘琛屾嫋鏀句簡錛屾嫋鏀懼姩浣滄湁<font face=Tahoma>DoDragDrop</font>鍑芥暟瑙﹀彂錛屽叾鍘熷瀷濡備笅錛?/font></span></p> <p><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>DROPEFFECT DoDragDrop( </font></font></span></p> <p><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>DWORD dwEffects = DROPEFFECT_COPY|DROPEFFECT_MOVE|DROPEFFECT_LINK, LPCRECT lpRectStartDrag = NULL, </font></font></span></p> <p><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>COleDropSource* pDropSource = NULL </font></font></span></p> <p><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>榪欓噷錛?font face=Tahoma>dwEffects</font>鎸囧畾浜嗗厑璁告柦鍔犱簬鏈?font face=Tahoma>COleDataSource</font>瀹炰緥涔嬩笂鐨勫姩浣滈泦錛氬壀鍒囥佸鍒舵垨鏃犲姩浣溿?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>    lpRectStartDrag</font>鎸囩ず鎷栨斁鎿嶄綔鐪熸寮濮嬬殑鐭╁艦錛屽鏋滈紶鏍囨病鏈夌Щ鍑鴻鐭╁艦錛屽垯鎷栨斁鎿嶄綔瑙嗕綔鏀懼純澶勭悊銆傚鏋滄湰鎴愬憳璁句負<font face=Tahoma>NULL</font>錛屽垯璇ヨ搗濮嬬煩褰㈠皢涓轟竴涓儚绱犲ぇ灝忋?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>    pDropSource</font>琛ㄦ槑鎷栨斁鎵浣跨敤鐨?font face=Tahoma>COleDataSource</font>瀵硅薄銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鑰岃鍑芥暟鐨勮繑鍥炲鹼紝鍒欒〃鏄庢湰嬈℃嫋鏀炬搷浣滄墍瀹為檯浜х敓鐨勬晥鏋滐紝鑷充簬鍏蜂綋浜х敓浣曠鏁堟灉錛屽垯鐢辯郴緇熷喅瀹氥傝濡傚湪鎷栨斁鏃舵寜浣?font face=Tahoma>Shift</font>閿紝灝嗕駭鐢熷壀鍒囨晥鏋滐紱鎸変綇<font face=Tahoma>Ctrl</font>閿紝灝嗕駭鐢熷鍒舵晥鏋滐紝絳夌瓑銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鎷栨斁鐨勪唬鐮佸涓嬶細</font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       m_oleDataSource.Empty();</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       m_oleDataSource.CacheGlobalData(CF_HDROP, hMemData);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font face=Tahoma><font size=2>       DropResult = m_oleDataSource.DoDragDrop(DROPEFFECT_MOVE|DROPEFFECT_COPY);</font></font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2>鏈鍚庝竴鐐硅娉ㄦ剰鐨勬槸錛屽湪<font face=Tahoma>Windows NT 4.0</font>浠ヤ笂鐨勭郴緇熶腑錛屽嵆浣垮疄闄呬駭鐢熺殑鏄?font face=Tahoma>DROPEFFECT_MOVE</font>鍔ㄤ綔錛?font face=Tahoma>DoDragDrop</font>鍑芥暟涔熷彧榪斿洖<font face=Tahoma>DROPEFFECT_NONE</font>銆備駭鐢熻繖涓棶棰樼殑鍘熷洜鍦ㄤ簬錛?font face=Tahoma>Windows NT 4.0</font>鐨?font face=Tahoma>Shell</font>浼氱洿鎺ョЩ鍔ㄦ枃浠舵湰韜潵瀵圭Щ鍔ㄦ搷浣滆繘琛屼紭鍖栥傝繑鍥炲?font face=Tahoma>DROPEFFECT_MOVE</font>鏈鍒濈殑鍚箟錛屽氨鏄氱煡鎵ц鎷栨斁鎿嶄綔鐨勫簲鐢ㄧ▼搴忓幓鍒犻櫎鍘熶綅緗笂鐨勬枃浠躲備絾鏄洜涓?font face=Tahoma>Shell</font>宸茬粡鏇垮簲鐢ㄧ▼搴忓畬鎴愪簡榪欎釜錛堝垹闄わ級鍔ㄤ綔錛屾墍浠ワ紝鍑芥暟榪斿洖<font face=Tahoma>DROPEFFECT_NONE</font>銆傝鎯崇煡閬撴枃浠舵槸鍚︾湡鐨勮縐誨姩浜嗕篃寰堢畝鍗曪紝鍙鍦ㄥ嚱鏁拌繑鍥炰箣鍚庢鏌ヤ竴涓嬪師浣嶇疆涓婄殑鏂囦歡鏄惁瀛樺湪灝卞彲浠ヤ簡銆?/font></span></p> <p align=left><span id=ArticleContent1_ArticleContent1_lblContent><font size=2><font face=Tahoma>Windows 9x</font>緋誨垪鐨勬搷浣滅郴緇熶篃浼氬縐誨姩榪涜鍚屾牱鐨勪紭鍖栧姩浣滐紝浣嗘槸瀹冧笉浼氳繑鍥?font face=Tahoma>DROPEFFECT_NONE</font>鏉ヤ唬鏇?font face=Tahoma>DROPEFFECT_MOVE</font>銆傝緇嗙殑瑙i噴鍙傝<font face=Tahoma>MS</font>鐭ヨ瘑搴?font face=Tahoma>Q182219</font>銆?/font></span></p> <img src ="http://m.shnenglu.com/justin-shi/aggbug/58866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/justin-shi/" target="_blank">騫藉菇</a> 2008-08-14 19:19 <a href="http://m.shnenglu.com/justin-shi/archive/2008/08/14/58866.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SHGetFileInfo http://m.shnenglu.com/justin-shi/archive/2008/08/13/58782.html騫藉菇騫藉菇Wed, 13 Aug 2008 15:11:00 GMThttp://m.shnenglu.com/justin-shi/archive/2008/08/13/58782.htmlhttp://m.shnenglu.com/justin-shi/comments/58782.htmlhttp://m.shnenglu.com/justin-shi/archive/2008/08/13/58782.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/58782.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/58782.htmlfunction SHGetFileInfo(pszPath: PAnsiChar; dwFileAttributes: DWORD;
  var psfi: TSHFileInfo; cbFileInfo, uFlags: UINT): DWORD; stdcall;
pszPath 鍙傛暟:鎸囧畾鐨勬枃浠跺悕銆?br>褰搖Flags鐨勫彇鍊間腑涓嶅寘鍚?SHGFI_PIDL鏃?鍙洿鎺ユ寚瀹?
褰搖Flags鐨勫彇鍊間腑鍖呭惈 SHGFI_PIDL鏃秔szPath瑕侀氳繃璁$畻鑾峰緱,涓嶈兘鐩存帴鎸囧畾;
dwFileAttributes鍙傛暟:鏂囦歡灞炴с?br>浠呭綋uFlags鐨勫彇鍊間腑鍖呭惈SHGFI_USEFILEATTRIBUTES鏃舵湁鏁?涓鑸笉鐢ㄦ鍙傛暟;
psfi 鍙傛暟:榪斿洖鑾峰緱鐨勬枃浠朵俊鎭?鏄竴涓褰曠被鍨?鏈変互涓嬪瓧孌?
  _SHFILEINFOA = record
    hIcon: HICON;                      { out: icon }  //鏂囦歡鐨勫浘鏍囧彞鏌?br>    iIcon: Integer;                    { out: icon index }     //鍥炬爣鐨勭郴緇熺儲寮曞彿
    dwAttributes: DWORD;               { out: SFGAO_ flags }    //鏂囦歡鐨勫睘鎬у?br>    szDisplayName: array [0..MAX_PATH-1] of  AnsiChar; { out: display name (or path) }  //鏂囦歡鐨勬樉紺哄悕
    szTypeName: array [0..79] of AnsiChar;             { out: type name }      //鏂囦歡鐨勭被鍨嬪悕
  end;
cbFileInfo 鍙傛暟:psfi鐨勬瘮鐗瑰?
uFlags 鍙傛暟:鎸囨槑闇瑕佽繑鍥炵殑鏂囦歡淇℃伅鏍囪瘑絎?甯哥敤鐨勬湁浠ヤ笅甯告暟:
    SHGFI_ICON;           //鑾峰緱鍥炬爣
    SHGFI_DISPLAYNAME;    //鑾峰緱鏄劇ず鍚?br>    SHGFI_TYPENAME;       //鑾峰緱綾誨瀷鍚?br>    SHGFI_ATTRIBUTES;     //鑾峰緱灞炴?br>    SHGFI_LARGEICON;      //鑾峰緱澶у浘鏍?br>    SHGFI_SMALLICON;      //鑾峰緱灝忓浘鏍?br>    SHGFI_PIDL;           // pszPath鏄竴涓爣璇嗙
鍑芥暟SHGetFileInfo()鐨勮繑鍥炲間篃闅弖Flags鐨勫彇鍊煎彉鍖栬屾湁鎵涓嶅悓銆?br>鍙閫氳繃璋冪敤SHGetFileInfo()鍙互鐢眕sfi鍙傛暟寰楀埌鏂囦歡鐨勫浘鏍囧彞鏌勩備絾瑕佹敞鎰忓湪uFlags鍙傛暟涓笉浣跨敤SHGFI_PIDL鏃?SHGetFileInfo()涓嶈兘鑾峰緱“鎴戠殑鐢佃剳”絳夎櫄浼兼枃浠跺す鐨勪俊鎭?br>搴旇娉ㄦ剰鐨勬槸錛屽湪璋冪敤SHGetFileInfo()涔嬪墠錛屽繀欏諱嬌鐢?CoInitialize 鎴栬匫leInitialize 鍒濆鍖朇OM,鍚﹀垯琛ㄩ潰涓婅兘澶熶嬌鐢紝浣嗘槸浼氶犳垚涓嶅畨鍏ㄦ垨鑰呬撫澶遍儴鍒嗗姛鑳姐備緥濡傦紝涓涓父瑙佺殑渚嬪瓙錛氬鏋滀笉鍒濆鍖朇OM,閭d箞璋冪敤璇ュ嚱鏁板氨鏃犳硶寰楀埌.htm/.mht/.xml鏂囦歡鐨勫浘鏍囥?br>浠ヤ笅鏄袱涓緥瀛愶細
1.鑾峰緱緋葷粺鍥炬爣鍒楄〃錛?br>//鍙栧緱緋葷粺鍥炬爣鍒楄〃
uses
ShellAPI
var
  ImageListHandle : THandle;
  FileInfo: TSHFileInfo;
//灝忓浘鏍?
ImageListHandle := SHGetFileInfo('C:\',
                           0,
                           FileInfo,
                           SizeOf(FileInfo),
                           SHGFI_SYSICONINDEX or SHGFI_SMALLICON);
//鎶婂浘鏍囧垪琛ㄥ悓涓涓悕鍙獿istView1鐨凩istView鎺т歡鐨勫皬鍥炬爣鍏寵仈銆?nbsp;                          
SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle);  
//澶у浘鏍?nbsp;  
ImageListHandle := SHGetFileInfo('C:\',
                           0,
                           FileInfo,
                           SizeOf(FileInfo),
                           SHGFI_SYSICONINDEX or SHGFI_LARGEICON);
//鎶婂浘鏍囧垪琛ㄥ悓涓涓悕鍙獿istView1鐨凩istView鎺т歡鐨勫ぇ鍥炬爣鍏寵仈銆?nbsp;                          
SendMessage(ListView1.Handle, LVM_SETIMAGELIST, LVSIL_NORMAL, ImageListHandle);
2.鑾峰緱涓涓枃浠剁殑鏄劇ず鍚嶅拰鍥炬爣
var
  sfi: TSHFileInfo;
IconIndex : Integer;
//鍙栧浘鏍囩殑绱㈠紩鍙風瓑淇℃伅
SHGetFileInfo(PAnsiChar(FileName),
                0,
                sfi,
                sizeof(TSHFileInfo),
                ShellAPI.SHGFI_DISPLAYNAME or ShellAPI.SHGFI_TYPENAME or ShellAPI.SHGFI_LARGEICON or ShellAPI.SHGFI_ICON);
//鏄劇ず鍚嶅拰鍥炬爣鍦ㄧ郴緇熷浘鏍囧垪琛ㄤ腑鐨勭紪鍙峰氨鍒嗗埆鍦╯fi.szDisplayName鍜宻fi.iIcon涓?



騫藉菇 2008-08-13 23:11 鍙戣〃璇勮
]]>
GetSystemMetrics()鐢ㄦ硶http://m.shnenglu.com/justin-shi/archive/2008/08/10/58469.html騫藉菇騫藉菇Sun, 10 Aug 2008 13:42:00 GMThttp://m.shnenglu.com/justin-shi/archive/2008/08/10/58469.htmlhttp://m.shnenglu.com/justin-shi/comments/58469.htmlhttp://m.shnenglu.com/justin-shi/archive/2008/08/10/58469.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/58469.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/58469.html涓嬮潰鏄疓etSystemMetrics鍑芥暟鍙傛暟nIndex鐨勫畾涔夛細

銆銆SM_ARRANGE Flags specifying how the system arranged minimized windows. For more information about minimized windows, see the following Remarks section.

銆銆SM_CLEANBOOT 榪斿洖緋葷粺鍚姩鏂瑰紡:

銆銆0 姝e父鍚姩

銆銆1 瀹夊叏妯″紡鍚姩

銆銆2 緗戠粶瀹夊叏妯″紡鍚姩

銆銆SM_CMOUSEBUTTONS 榪斿洖鍊間負緋葷粺鏀寔鐨勯紶鏍囬敭鏁幫紝榪斿洖0錛屽垯緋葷粺涓病鏈夊畨瑁呴紶鏍囥?br>
銆銆SM_CXBORDER,

銆銆SM_CYBORDER 榪斿洖浠ュ儚绱犲間負鍗曚綅鐨刉indows紿楀彛杈規鐨勫搴﹀拰楂樺害錛屽鏋淲indows鐨勪負3D褰㈡侊紝鍒?br>
銆銆絳夊悓浜嶴M_CXEDGE鍙傛暟

銆銆SM_CXCURSOR,

銆銆SM_CYCURSOR 榪斿洖浠ュ儚绱犲間負鍗曚綅鐨勬爣鍑嗗厜鏍囩殑瀹藉害鍜岄珮搴?br>
銆銆SM_CXDLGFRAME,

銆銆SM_CYDLGFRAME 絳夊悓涓嶴M_CXFIXEDFRAME and SM_CYFIXEDFRAME

銆銆SM_CXDOUBLECLK,

銆銆SM_CYDOUBLECLK 浠ュ儚绱犲間負鍗曚綅鐨勫弻鍑繪湁鏁堢殑鐭╁艦鍖哄煙

銆銆SM_CXEDGE,SM_CYEDGE 浠ュ儚绱犲間負鍗曚綅鐨?D杈規鐨勫搴﹀拰楂樺害

銆銆SM_CXFIXEDFRAME,

銆銆SM_CYFIXEDFRAME 鍥寸粫鍏鋒湁鏍囬浣嗘棤娉曟敼鍙樺昂瀵哥殑紿楀彛錛堥氬父鏄竴浜涘璇濇錛夌殑杈規鐨勫帤搴?br>
銆銆SM_CXFRAME,SM_CYFRAME 絳夊悓浜嶴M_CXSIZEFRAME and SM_CYSIZEFRAME

銆銆SM_CXFULLSCREEN,

銆銆SM_CYFULLSCREEN 鍏ㄥ睆騫曠獥鍙g殑紿楀彛鍖哄煙鐨勫搴﹀拰楂樺害

銆銆SM_CXHSCROLL,

銆銆SM_CYHSCROLL 姘村鉤婊氬姩鏉$殑楂樺害鍜屾按騫蟲粴鍔ㄦ潯涓婄澶寸殑瀹藉害

銆銆SM_CXHTHUMB 浠ュ儚绱犱負鍗曚綅鐨勬按騫蟲粴鍔ㄦ潯涓婄殑婊戝姩鍧楀搴?br>
銆銆SM_CXICON,SM_CYICON 緋葷粺緙虹渷鐨勫浘鏍囩殑楂樺害鍜屽搴︼紙涓鑸負32*32錛?br>
銆銆SM_CXICONSPACING,

銆銆SM_CYICONSPACING 浠ュぇ鍥炬爣鏂瑰紡鏌ョ湅Item鏃跺浘鏍囦箣闂寸殑闂磋窛錛岃繖涓窛紱繪繪槸澶т簬絳変簬

銆銆SM_CXICON and SM_CYICON.

銆銆SM_CXMAXIMIZED,

銆銆SM_CYMAXIMIZED 澶勪簬欏跺眰鐨勬渶澶у寲紿楀彛鐨勭己鐪佸昂瀵?br>
銆銆SM_CXMAXTRACK,

銆銆SM_CYMAXTRACK 鍏鋒湁鍙敼鍙樺昂瀵歌竟妗嗗拰鏍囬鏍忕殑紿楀彛鐨勭己鐪佹渶澶у昂瀵革紝濡傛灉紿楀彛澶т簬榪欎釜

銆銆灝哄錛岀獥鍙f槸涓嶅彲縐誨姩鐨勩?br>
銆銆SM_CXMENUCHECK,

銆銆SM_CYMENUCHECK 浠ュ儚绱犱負鍗曚綅璁$畻鐨勮彍鍗曢変腑鏍囪浣嶅浘鐨勫昂瀵?br>
銆銆SM_CXMENUSIZE,

銆銆SM_CYMENUSIZE 浠ュ儚绱犺綆楃殑鑿滃崟鏍忔寜閽殑灝哄

銆銆SM_CXMIN,SM_CYMIN 紿楀彛鎵鑳借揪鍒扮殑鏈灝忓昂瀵?br>
銆銆SM_CXMINIMIZED,

銆銆SM_CYMINIMIZED 姝e父鐨勬渶灝忓寲紿楀彛鐨勫昂瀵?br>
銆銆SM_CXMINTRACK,

銆銆SM_CYMINTRACK 鏈灝忚窡韙窛紱伙紝褰撲嬌鐢ㄨ呮嫋鍔ㄧ獥鍙gЩ鍔ㄨ窛紱誨皬浜庤繖涓鹼紝紿楀彛涓嶄細縐誨姩銆?br>
SM_CXSCREEN,

銆銆SM_CYSCREEN 浠ュ儚绱犱負鍗曚綅璁$畻鐨勫睆騫曞昂瀵搞?br>
銆銆SM_CXSIZE,SM_CYSIZE 浠ュ儚绱犺綆楃殑鏍囬鏍忔寜閽殑灝哄

銆銆SM_CXSIZEFRAME,

銆銆SM_CYSIZEFRAME 鍥寸粫鍙敼鍙樺ぇ灝忕殑紿楀彛鐨勮竟妗嗙殑鍘氬害

銆銆SM_CXSMICON,

銆銆SM_CYSMICON 浠ュ儚绱犺綆楃殑灝忓浘鏍囩殑灝哄錛屽皬鍥炬爣涓鑸嚭鐜板湪紿楀彛鏍囬鏍忎笂銆?br>
銆銆SM_CXVSCROLL,

銆銆SM_CYVSCROLL 浠ュ儚绱犺綆楃殑鍨傜洿婊氬姩鏉$殑瀹藉害鍜屽瀭鐩存粴鍔ㄦ潯涓婄澶寸殑楂樺害

銆銆SM_CYCAPTION 浠ュ儚绱犺綆楃殑鏅氱獥鍙f爣棰樼殑楂樺害

銆銆SM_CYMENU 浠ュ儚绱犺綆楃殑鍗曚釜鑿滃崟鏉$殑楂樺害

銆銆SM_CYSMCAPTION 浠ュ儚绱犺綆楃殑紿楀彛灝忔爣棰樻爮鐨勯珮搴?br>
銆銆SM_CYVTHUMB 浠ュ儚绱犺綆楃殑鍨傜洿婊氬姩鏉′腑婊氬姩鍧楃殑楂樺害

銆銆SM_DBCSENABLED 濡傛灉涓篢RUE鎴栦笉涓?鐨勫艱〃鏄庣郴緇熷畨瑁呬簡鍙屽瓧鑺傜増鏈殑USER.EXE,涓篎ALSE鎴?鍒欎笉鏄?br>
銆銆SM_DEBUG 濡傛灉涓篢RUE鎴栦笉涓?鐨勫艱〃鏄庣郴緇熷畨瑁呬簡debug鐗堟湰鐨刄SER.EXE,涓篎ALSE鎴?鍒欎笉鏄?br>
銆銆SM_MENUDROPALIGNMENT 濡傛灉涓篢RUE鎴栦笉涓?鐨勫間笅鎷夎彍鍗曟槸鍙沖榻愮殑鍚﹀垯鏄乏瀵歸綈鐨勩?br>
銆銆SM_MOUSEPRESENT 濡傛灉涓篢RUE鎴栦笉涓?鐨勫煎垯瀹夎浜嗛紶鏍囷紝鍚﹀垯娌℃湁瀹夎銆?br>
銆銆SM_MOUSEWHEELPRESENT 濡傛灉涓篢RUE鎴栦笉涓?鐨勫煎垯瀹夎浜嗘粴杞紶鏍囷紝鍚﹀垯娌℃湁瀹夎銆?Windows NT only)

銆銆SM_SWAPBUTTON 濡傛灉涓篢RUE鎴栦笉涓?鐨勫煎垯榧犳爣宸﹀彸閿氦鎹紝鍚﹀垯娌℃湁銆?


騫藉菇 2008-08-10 21:42 鍙戣〃璇勮
]]>
鎶奀++綾繪垚鍛樻柟娉曠洿鎺ヤ綔涓虹嚎紼嬪洖璋冨嚱鏁?/title><link>http://m.shnenglu.com/justin-shi/archive/2008/07/22/56813.html</link><dc:creator>騫藉菇</dc:creator><author>騫藉菇</author><pubDate>Mon, 21 Jul 2008 19:13:00 GMT</pubDate><guid>http://m.shnenglu.com/justin-shi/archive/2008/07/22/56813.html</guid><wfw:comment>http://m.shnenglu.com/justin-shi/comments/56813.html</wfw:comment><comments>http://m.shnenglu.com/justin-shi/archive/2008/07/22/56813.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://m.shnenglu.com/justin-shi/comments/commentRss/56813.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/justin-shi/services/trackbacks/56813.html</trackback:ping><description><![CDATA[<p>鎴戜互鍓嶅啓綰跨▼鏃惰涔堣佽佸疄瀹炵収鐫澹版槑鍐?瑕佷箞浣跨敤C++綾葷殑闈欐佹垚鍛樺嚱鏁版潵浣滀負鍥炶皟鍑芥暟,緇忓父浼氬洜涓虹嚎紼嬩唬鐮佽岀牬鍧忓皝瑁?涔嬪墠铏界劧鐭ラ亾綾繪垚鍛樺嚱鏁扮殑灞曞紑褰㈠紡錛屼絾浠庢病鎯寵繃鍒╃敤榪囧畠錛屾槰澶╃湅娣卞叆ATL鏃舵棤鎰忎腑瀛︿細浜嗚繖涓鎷?) </p> <p>綾繪垚鍛樻柟娉曟槸涓涓瘮杈冪壒孌婄殑鍑芥暟錛屽畠鍦ㄧ紪璇戞椂浼氳杞寲鎴愭櫘閫氬嚱鏁幫紝姣斿鏈塗MyClass綾?<br>class TMyClass{<br>    void Func();<br>};</p> <p>榪欎釜TMyClass::Func鏈緇堜細杞寲鎴?void Func(TMyClass *this); 涔熷氨鏄鍦ㄥ師絎竴涓弬鏁板墠鎻掑叆鎸囧悜瀵硅薄鏈韓鐨則his鎸囬拡銆?/p> <p>鎴戜滑鍙互鍒╃敤榪欎釜鐗規у啓涓涓潪闈欐佺被鎴愬憳鏂規硶鏉ョ洿鎺ヤ綔涓虹嚎紼嬪洖璋冨嚱鏁幫紝鍏堢湅_beginthread鍑芥暟鐨勫畾涔?<br>unsigned long _RTLENTRY _EXPFUNC _beginthread (void (_USERENTRY *__start)(void *),unsigned __stksize, void *__arg);<br>鍏朵腑鐨勭涓涓弬鏁板氨鏄綔涓虹嚎紼嬫墽琛屼富浣撶殑鍥炶皟鍑芥暟銆傚畠鐨勫師鍨嬫槸:void Func(void *)錛岃繖涓獀oid*鍙傛暟鏄綔涓鴻嚜瀹氫箟鏁版嵁浼犲叆鐨勩傚姣斾竴涓嬩笂闈㈡墍璇寸殑TMyClass::Func鐨勬渶緇堝艦寮忥紝瀹冩濂藉彲浠ョ鍚堣繖閲岀殑瑕佹眰銆?/p> <p>鐜板湪鍋氫釜瀹為獙:<br>#include <stdio.h><br>#include <process.h></p> <p>class TMyClass{<br>    int m_nCount;<br>    int m_nId;<br>public:<br>    TMyClass(int nId,int nCount)<br>        :m_nId(nId),m_nCount(nCount)<br>    {<br>    }</p> <p>    void _USERENTRY ThreadProc()            // 綾繪垚鍛樻柟娉?br>    {<br>        for(int i=0; i<m_nCount; i++)       // 鏍規嵁m_nCount鎴愬憳鎵撳嵃涓鎺掓暟瀛?br>        {<br>            printf("Class%d : %d\n",m_nId,i);<br>        }<br>    }<br>};</p> <p>int main(int argc, char* argv[])<br>{<br>    union {                                // 鑱斿悎綾伙紝鐢ㄤ簬杞崲綾繪垚鍛樻柟娉曟寚閽堝埌鏅氬嚱鏁版寚閽堬紙璇曡繃緙栬瘧鍣ㄤ笉鍏佽鍦ㄨ繖涓ょ鍑芥暟涔嬮棿寮哄埗杞崲錛夛紝涓嶇煡閬撴湁娌℃湁鏇村ソ鐨勬柟娉曘?br>        void (_USERENTRY *ThreadProc)(void *);<br>        void (_USERENTRY TMyClass::*MemberProc)();<br>    } Proc;                                // 灝界鑱斿悎閲岀殑涓ょ鍑芥暟綾誨瀷鐜板湪鐪嬭搗鏉ユ湁寰堝ぇ涓嶅悓錛屼絾瀹冧滑鐨勬渶緇堝艦寮忔槸鐩稿悓鐨勩?/p> <p>    TMyClass MyClass1(1,10),MyClass2(2,5); // 浜х敓涓や釜TMyClass瀵硅薄</p> <p>    Proc.MemberProc = &TMyClass::ThreadProc;   // 杞崲錛孭roc.ThreadProc灝辨槸瀵瑰簲鐨勬櫘閫氬嚱鏁版寚閽堜簡</p> <p>    _beginthread(Proc.ThreadProc,4096,&MyClass1);   // 寮濮嬬嚎紼嬶紝榪欓噷鐨凱roc.ThreadProc瀹為檯涓婃槸TMyClass::ThreadProc, 瀹冭鐨則his鎸囬拡鏄垜浠粰鐨?amp;MyClass1銆?br>    _beginthread(Proc.ThreadProc,4096,&MyClass2);<br>    system("pause");<br>    return 0;<br>}</p> <p>榪愯錛佺濂囧惂錛?-)</p> <p>鍏跺疄涓嶆綰跨▼鍥炶皟鍑芥暟錛屽叾瀹炲彧瑕佹槸褰㈠Func(void*,...)鐨勫洖璋冨嚱鏁伴兘鍙互鐢ㄨ繖縐嶆柟娉曠洿鎺ヤ嬌鐢ㄧ被鎴愬憳鏂規硶銆?鍓嶆彁鏄涓涓獀oid*鏄嚜瀹氫箟鏁版嵁錛屼篃灝辨槸璇村畠涓嶈兘鏈夊叾瀹冨姛鑳?銆?br><br>杞嚜:http://blog.csdn.net/waiting4you/archive/2007/12/29/2000796.aspx</p> <img src ="http://m.shnenglu.com/justin-shi/aggbug/56813.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/justin-shi/" target="_blank">騫藉菇</a> 2008-07-22 03:13 <a href="http://m.shnenglu.com/justin-shi/archive/2008/07/22/56813.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>婊氬姩鎺т歡(ScrollBar)http://m.shnenglu.com/justin-shi/archive/2008/07/21/56730.html騫藉菇騫藉菇Mon, 21 Jul 2008 01:57:00 GMThttp://m.shnenglu.com/justin-shi/archive/2008/07/21/56730.htmlhttp://m.shnenglu.com/justin-shi/comments/56730.htmlhttp://m.shnenglu.com/justin-shi/archive/2008/07/21/56730.html#Feedback3http://m.shnenglu.com/justin-shi/comments/commentRss/56730.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/56730.html婊氬姩鎺т歡(ScrollBar)


銆銆婊氬姩鏉?ScrollBar)涓昏鐢ㄦ潵浠庢煇涓棰勫畾涔夊艱寖鍥村唴蹇熸湁鏁堝湴榪涜閫夋嫨銆傛粴鍔ㄦ潯鍒嗗瀭鐩存粴鍔ㄦ潯鍜屾按騫蟲粴鍔ㄦ潯涓ょ銆傚湪婊氬姩鏉″唴鏈変竴涓粴鍔ㄦ錛岀敤鏉ヨ〃紺哄綋鍓嶇殑鍊箋傜敤榧犳爣鍗曞嚮婊氬姩鏉★紝鍙互浣挎粴鍔ㄦ縐誨姩涓欏碉紝榧犳爣鍗曞嚮婊氬姩鏉′袱绔殑鍓ご鍙互浣挎粴鍔ㄦ縐誨姩涓琛岋紝涔熷彲浠ョ洿鎺ユ嫋鍔ㄦ粴鍔ㄦ銆傝澶氱獥鍙f帶浠跺鍒楄〃妗嗗拰緇勫悎妗嗙瓑閮藉甫鏈夋粴鍔ㄦ潯瀛愮獥鍙c俉in32鐨勬粴鍔ㄦ潯鏀寔姣斾緥婊氬姩妗嗭紝鍗崇敤婊氬姩妗嗙殑澶у皬鏉ュ弽鏄犻〉鐩稿浜庢暣涓寖鍥寸殑澶у皬銆?br>銆銆褰揅reateWindowEx鍒涘緩婊氬姩鏉℃椂錛屽叾椋庢牸甯告暟涓甫SBS_VERT涓烘按騫蟲粴鍔ㄦ潯錛屼笉甯BS_VERT鎴栧甫SBS_HORZ涓哄瀭鐩存粴鍔ㄦ潯銆?br>銆銆鍒涘緩鎺т歡鏃跺簲鍒濆鍖栨粴鍔ㄦ潯鐨勫悇縐嶅弬鏁般?br>銆銆搴旂敤紼嬪簭鍙互閫氳繃璋冪敤SendMessage鍚戞帶浠跺彂閫佸涓嬫秷鎭潵璁懼畾鎺т歡鍚勭鍙傛暟銆?br>
uMsg wParam lParam 璇存槑
SBM_ENABLE_ARROWS ESB_DISABLE_BOTH 0 紱佹鍙屽悜婊氬姩鍓ご
ESB_DISABLE_DOWN 0 紱佹鍚戜笅婊氬姩鍓ご
ESB_DISABLE_LTUP 0 紱佹鍚戜笂鍜屽悜宸︽粴鍔ㄥ壀澶?/td>
ESB_DISABLE_LEFT 0 紱佹鍚戝乏婊氬姩鍓ご
ESB_DISABLE_RTDN 0 紱佹鍚戜笅鍜屽悜鍙蟲粴鍔ㄥ壀澶?/td>
ESB_DISABLE_UP 0 紱佹鍚戜笂婊氬姩鍓ご
ESB_ENABLE_BOTH 0 鍏佽鍙屽悜婊氬姩鍓ご(鎾ゆ秷鍚勭紱佹)
SBM_SETPOS 鎸囧畾浣嶇疆 TRUE 璁劇疆婊氬姩妗嗕綅緗紝騫墮噸緇樻帶浠?/td>
FALSE 璁劇疆婊氬姩妗嗕綅緗紝涓嶉噸緇樻帶浠?/td>
SBM_SETRANGE 鏈灝忓?/td> 鏈澶у?/td> 璁劇疆婊氬姩妗嗕綅緗殑鍙樺寲鑼冨洿
SBM_SETRANGEREDRAW 鏈灝忓?/td> 鏈澶у?/td> 璁劇疆婊氬姩妗嗕綅緗殑鍙樺寲鑼冨洿錛屽茍閲嶇粯鎺т歡
SBM_SETSCROLLINFO TRUE鎴朏ALSE SCROLLINFO緇撴瀯鎸囬拡 鏈秷鎭氳繃涓涓猄CROLLINFO緇撴瀯鏉ュ悓鏃舵寚瀹氭帶浠剁殑澶氱鍙傛暟錛屽叿浣撴寚瀹氬摢浜涘弬鏁扮敱緇撴瀯涓殑fMask鎴愬憳紜畾銆倃Param鎸囧畾鏄惁閲嶇粯鎺т歡錛岃瑙?#8220;SCROLLINFO緇撴瀯”
銆銆褰撶敤鎴峰湪婊氬姩鏉℃帶浠朵笂榪涜鍚勭鎿嶄綔鏃訛紝鍏剁埗紿楀彛灝嗘敹鍒癢M_HSCROLL鎴朩M_VSCROLL閫氱煡娑堟伅錛屽悓鏃秝Param鐨勪綆16浣嶅甫鏈夊涓嬭〃鐨勬秷鎭唬鐮?nScrollCode)錛寃Param鐨勯珮16浣嶅甫婊氬姩妗嗙殑鎸囧畾浣嶇疆(nPos)錛岃鍊煎湪娑堟伅浠g爜絳変簬SB_THUMBPOSITION鎴朣B_THUMBTRACK鏃舵墠鏈夋晥銆俵Param甯︽帶浠跺彞鏌?hwndScrollBar)銆?br>銆銆搴旂敤紼嬪簭鍙互鏍規嵁娑堟伅浠g爜鍋氱浉搴旂殑鎿嶄綔錛岄噸鏂拌緗粴鍔ㄦ浣嶇疆錛屾帶浠舵湰韜槸涓嶄細鏀瑰彉婊氬姩妗嗕綅緗殑銆?
娑堟伅浠g爜 鍔ㄤ綔 鍝嶅簲
SB_LINEUP
SB_LINELEFT
鐢ㄦ埛鐐瑰嚮浜嗗悜涓?宸?鍓ご 婊氬姩妗嗕綅緗噺涓錛屽鎴風獥鍙e悜涓?宸?婊氬姩涓琛屻?br>娉細榪欎袱涓唬鐮佹暟鍊肩浉絳夛紝鍥犳鍙互娣風敤錛屼笅鍚屻?/td>
SB_LINEDOWN
SB_LINERIGHT
鐢ㄦ埛鐐瑰嚮浜嗗悜涓?鍙?鍓ご 婊氬姩妗嗕綅緗姞涓錛屽鎴風獥鍙e悜涓?鍙?婊氬姩涓琛屻?/td>
SB_PAGEUP
SB_PAGELEFT
鐢ㄦ埛鐐瑰嚮浜嗘粴鍔ㄦ浠ヤ笂(宸?鍓潌 婊氬姩妗嗕綅緗噺鍘諱竴涓ぇ鍗曚綅錛屽鎴風獥鍙e悜涓?宸?婊氬姩涓欏點?
SB_PAGEDOWN
SB_PAGERIGHT
鐢ㄦ埛鐐瑰嚮浜嗘粴鍔ㄦ浠ヤ笅(鍙?鍓潌 婊氬姩妗嗕綅緗姞涓婁竴涓ぇ鍗曚綅錛屽鎴風獥鍙e悜涓?鍙?婊氬姩涓欏點?
SB_THUMBPOSITION 鐢ㄦ埛鎷栧姩騫墮噴鏀炬粴鍔ㄦ鍒版寚瀹氫綅緗?/td> 璁懼畾婊氬姩妗嗗埌鎸囧畾浣嶇疆銆傚鎴風獥鍙f粴鍔ㄥ埌鎸囧畾浣嶇疆銆?/td>
SB_THUMBTRACK 鐢ㄦ埛姝e湪鎷栧姩婊氬姩妗?/td> 璁懼畾婊氬姩妗嗗埌鎸囧畾浣嶇疆銆傚鎴風獥鍙f粴鍔ㄥ埌鎸囧畾浣嶇疆銆傚鏋滃簲鐢ㄧ▼搴忛渶瑕佸揩閫熸祻瑙堢獥鍙o紝鍙互鍝嶅簲鏈秷鎭噸緇樼獥鍙o紝濡傛灉涓嶉渶瑕佸揩閫熸祻瑙堬紝鍙互絳夊緟鏀跺埌SB_THUMBPOSITION娑堟伅鏃墮噸緇樼獥鍙c?
SB_ENDSCROLL 鐢ㄦ埛閲婃斁鎸変笅鍓ご鎴栧壀鏉嗙殑榧犳爣 鏃犻』鍋氫換浣曞搷搴?
銆銆搴旂敤紼嬪簭鍙互閫氳繃璋冪敤SendMessage鍚戞帶浠跺彂閫佸涓嬫秷鎭潵鍙栧緱褰撳墠鎺т歡鍚勭鍙傛暟銆?
uMsg wParam lParam 璇存槑
SBM_GETPOS 0 0 榪斿洖婊氬姩妗嗗綋鍓嶄綅緗?/td>
SBM_GETRANGE 鏈灝忓煎湴鍧鎸囬拡 鏈澶у煎湴鍧鎸囬拡 鍦ㄦ寚瀹氬湴鍧涓~鍏?2浣嶇殑婊氬姩妗嗕綅緗殑鍙樺寲鑼冨洿
SBM_GETSCROLLINFO 0 SCROLLINFO緇撴瀯鎸囬拡 鍦ㄤ竴涓猄CROLLINFO緇撴瀯涓繑鍥炴帶浠剁殑澶氱鍙傛暟錛屽繀欏諱簨鍏堣瀹氱粨鏋勭殑fMask鎴愬憳鏉ョ‘瀹氬叿浣撹鍙栧緱鍝簺鍙傛暟銆傝瑙?#8220;SCROLLINFO緇撴瀯”
銆銆褰撴帶浠墮渶瑕侀噸鐢繪椂鍚戞瘡鐖剁獥鍙e彂閫乄M_CTLCOLORSCROLLBAR娑堟伅,鍚屾椂鍦╳Param涓甫鎺т歡鐨勮澶囧満鏅彞鏌?hDC)錛宭Param涓甫鎺т歡鍙ユ焺銆傚鏋滃簲鐢ㄧ▼搴忓搷搴旇繖涓秷鎭茍榪斿洖涓涓敾鍒?brush)鍙ユ焺錛屾帶浠跺皢鏍規嵁榪欎釜鍙ユ焺緇樺埗鑳屾櫙鑹層?br>
SCROLLINFO緇撴瀯錛?
SCROLLINFO STRUCT
            cbSize        DWORD      ?
            fMask         DWORD      ?
            nMin          DWORD      ?
            nMax          DWORD      ?
            nPage         DWORD      ?
            nPos          DWORD      ?
            nTrackPos     DWORD      ?
            SCROLLINFO ENDS
鎴愬憳璇存槑錛?br>銆銆cbSize: SCROLLINFO緇撴瀯闀垮害瀛楄妭鏁幫紝璇ュ煎湪璁劇疆鍜屾煡璇㈠弬鏁版椂閮藉繀欏誨~鍐欍?br>銆銆fMask: 鎸囧畾緇撴瀯涓殑鍝簺鎴愬憳鏄湁鏁堬紝璇ュ煎叡鏈夊涓?縐嶉夋嫨錛屽彲浠ラ夋嫨澶氱鐢?#8220;OR”緇勫悎璧鋒潵錛岃鍊煎湪璁劇疆鍜屾煡璇㈠弬鏁版椂閮藉繀欏誨~鍐欍?br>銆銆銆銆SIF_ALL銆銆銆銆銆銆:鏁翠釜緇撴瀯閮芥湁鏁?br>銆銆銆銆SIF_DISABLENOSCROLL:璇ュ間粎鍦ㄨ瀹氬弬鏁版椂浣跨敤錛岃鎺т歡鍙傛暟璁懼畾鐨勯渶瑕佹潵瀵規湰緇撴瀯鐨勬垚鍛樿繘琛屽彇鑸嶃?br>銆銆銆銆SIF_PAGE銆銆銆銆銆 :nPage鎴愬憳鏈夋晥
銆銆銆銆SIF_POS銆銆銆銆銆銆:nPos鎴愬憳鏈夋晥
銆銆銆銆SIF_RANGE銆銆銆銆銆:nMin鍜宯Max鎴愬憳鏈夋晥
銆銆nMin:婊氬姩鑼冨洿鏈灝忓?br>銆銆nMax:婊氬姩鑼冨洿鏈澶у?br>銆銆nPage:欏靛昂瀵革紝鐢ㄦ潵紜畾姣斾緥婊氬姩妗嗙殑澶у皬
銆銆nPos:婊氬姩妗嗙殑浣嶇疆
銆銆nTrackPos:鎷栧姩鏃舵粴鍔ㄦ鐨勪綅緗紝璇ュ弬鏁板彧鑳芥煡璇紝涓嶈兘璁劇疆銆?br>  



騫藉菇 2008-07-21 09:57 鍙戣〃璇勮
]]>
濡備綍璁╃被鐨勬垚鍛樺嚱鏁頒綔涓哄洖璋冨嚱鏁?/title><link>http://m.shnenglu.com/justin-shi/archive/2008/07/06/55448.html</link><dc:creator>騫藉菇</dc:creator><author>騫藉菇</author><pubDate>Sat, 05 Jul 2008 19:58:00 GMT</pubDate><guid>http://m.shnenglu.com/justin-shi/archive/2008/07/06/55448.html</guid><wfw:comment>http://m.shnenglu.com/justin-shi/comments/55448.html</wfw:comment><comments>http://m.shnenglu.com/justin-shi/archive/2008/07/06/55448.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/justin-shi/comments/commentRss/55448.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/justin-shi/services/trackbacks/55448.html</trackback:ping><description><![CDATA[     鎽樿:        涓轟粈涔堢被(class)鐨勬垚鍛樺嚱(member function)鏁頒笉鑳戒綔涓哄洖璋冨嚱鏁?callback function)棣栧厛鏉ョ湅鐪嬪洖璋冨嚱鏁版湁鎬庢牱鐨勭壒鐐廣倃indows涓紝鍥炶皟鍑介兘鏄懼紡(explicit)浣跨敤CALLBACK淇グ絎?decorator)淇グ(decorated)銆傚疄闄呬笂CALLBACK灝辨槸_stdcall鍙傛暟浼?..  <a href='http://m.shnenglu.com/justin-shi/archive/2008/07/06/55448.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/justin-shi/aggbug/55448.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/justin-shi/" target="_blank">騫藉菇</a> 2008-07-06 03:58 <a href="http://m.shnenglu.com/justin-shi/archive/2008/07/06/55448.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍏充簬GetDC涓嶨etWindowDChttp://m.shnenglu.com/justin-shi/archive/2008/06/26/54627.html騫藉菇騫藉菇Thu, 26 Jun 2008 00:27:00 GMThttp://m.shnenglu.com/justin-shi/archive/2008/06/26/54627.htmlhttp://m.shnenglu.com/justin-shi/comments/54627.htmlhttp://m.shnenglu.com/justin-shi/archive/2008/06/26/54627.html#Feedback0http://m.shnenglu.com/justin-shi/comments/commentRss/54627.htmlhttp://m.shnenglu.com/justin-shi/services/trackbacks/54627.html=============================================================

GetDc鍑?/span>鏁幫細鐢ㄤ簬鑾峰緱hWnd鍙傛暟鎵鎸囧畾紿楀彛鐨勫鎴峰尯鍩熺殑涓涓澶囩幆澧冦?/span>

鎵鑾峰緱鐨勮澶囩幆澧冨彲浠ユ槸閫氱敤銆佺被鎴栬呯鏈夌被鍨嬶紝鍏蜂綋鐢辨寚瀹氱獥鍙g殑綾婚鏍煎喅瀹氥傚浜庨氱敤璁懼鐜錛?/span>GetDc鍑芥暟姣忔鑾峰彇涓涓澶囩幆澧冩椂閮戒細鐢ㄩ粯璁ゅ睘鎬у瀹冭繘琛屽垵濮嬪寲銆傝鍑芥暟鑾峰緱鐨勭被鍜岀鏈夎澶囩幆澧冧細涓庡畠浠渶鍚庝竴嬈$殑璁劇疆淇濇寔涓鑷淬傚綋璁懼鐜涓嶅啀闇瑕佹椂錛屽簲璇ヨ皟鐢?/span>ReleaseDC鍑芥暟灝嗗叾閲婃斁銆?/span>   
    
GetWindowDC
鍑芥暟錛氳繑鍥?/span>hWnd鍙傛暟鎵鎸囧畾鐨勭獥鍙g殑璁懼鐜銆?/span>

鑾峰緱鐨勮澶囩幆澧冭鐩栦簡鏁翠釜紿楀彛錛堝寘鎷潪瀹㈡埛鍖猴級錛屼緥濡傛爣棰樻爮銆佽彍鍗曘佹粴鍔ㄦ潯錛屼互鍙婅竟妗嗐傝繖浣垮緱紼嬪簭鑳藉鍦ㄩ潪瀹㈡埛鍖哄煙瀹炵幇鑷畾涔夊浘褰紝渚嬪鑷畾涔夋爣棰樻垨鑰呰竟妗嗐傚綋涓嶅啀闇瑕佽璁懼鐜鏃訛紝闇瑕佽皟鐢?/span>ReleaseDC鍑芥暟閲婃斁璁懼鐜銆傛敞鎰忥紝璇ュ嚱鏁板彧鑾峰緱閫氱敤璁懼鐜錛岃璁懼鐜鐨勪換浣曞睘鎬ф敼鍙橀兘涓嶄細鍙嶆槧鍒扮獥鍙g殑縐佹湁鎴栬呯被璁懼鐜涓紙濡傛灉紿楀彛鏈夌殑璇濓級   
    
   ----------
鎽樿嚜銆?/span>Delphi    Win32鏍稿績API鍙傝冦?/span>

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



騫藉菇 2008-06-26 08:27 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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.com| 欧美婷婷在线| 亚洲精品视频免费| 国产日韩欧美在线视频观看| 欧美国产精品久久| 久久综合国产精品| 蜜臀va亚洲va欧美va天堂| 日韩一二在线观看| 亚洲区在线播放| 亚洲高清久久久| 91久久国产精品91久久性色| 欧美黄色成人网| 欧美不卡视频一区发布| 亚洲大片一区二区三区| 欧美激情视频一区二区三区不卡| 免费在线看成人av| 免费欧美在线| 国产精品久久毛片a| 国产精品久久久| 精品99一区二区| 亚洲一级电影| 免费成人黄色片| 亚洲一区在线播放| 狂野欧美性猛交xxxx巴西| 欧美视频在线免费| 在线视频国内自拍亚洲视频| 99精品黄色片免费大全| 欧美中文在线视频| 日韩一级黄色大片| 欧美大色视频| 国内一区二区三区| 亚洲精品国产精品乱码不99按摩| 亚洲最新视频在线播放| 午夜精品区一区二区三| 男女激情视频一区| 尤物在线观看一区| 久久久久久久久岛国免费| 一区二区三区日韩欧美精品| 嫩模写真一区二区三区三州| 国产欧美一区二区三区在线老狼| 99国产精品一区| 欧美.日韩.国产.一区.二区| 亚洲一区二区视频在线观看| 欧美视频一区二区三区在线观看 | 小黄鸭精品aⅴ导航网站入口| 亚洲精品一区二区在线观看| 欧美性开放视频| 欧美在线综合| 亚洲国产精品va在看黑人| 亚洲自拍另类| 久久精品国产精品亚洲| 亚洲欧美另类在线| 国产精品久久久久久av福利软件| 亚洲人成77777在线观看网| 一区二区三区产品免费精品久久75 | 亚洲高清av在线| 亚洲电影在线| 国产精品劲爆视频| 久久亚洲国产精品日日av夜夜| 在线一区二区视频| 欧美日韩亚洲免费| 久久久精品tv| 国产欧美精品| 亚洲激情不卡| 国产女人aaa级久久久级| 欧美成年人网站| 国产色综合网| 一区二区三区导航| 在线播放亚洲| 欧美一区二区成人| 欧美一区二区免费视频| 欧美伦理视频网站| 免费日韩精品中文字幕视频在线| 亚洲欧美变态国产另类| 欧美风情在线观看| 男人的天堂亚洲| 国产丝袜一区二区三区| 亚洲综合清纯丝袜自拍| 性欧美videos另类喷潮| 欧美日韩亚洲视频一区| 日韩一级欧洲| 亚洲欧美日韩国产中文在线| 欧美日韩成人综合| 亚洲免费观看高清完整版在线观看熊 | 狠狠综合久久av一区二区小说| 亚洲视频1区| 亚洲在线一区| 国产日韩一区二区| 久久久7777| 欧美+日本+国产+在线a∨观看| 一区二区在线视频| 欧美激情女人20p| 亚洲影音一区| 欧美激情精品久久久久久蜜臀 | 国产日韩精品一区二区三区在线| 亚洲一区二区在线| 久久久www成人免费无遮挡大片| 激情成人综合| 欧美网站在线观看| 欧美一区二区三区播放老司机| 另类春色校园亚洲| 欧美77777| 亚洲欧美日韩中文播放| 欧美黄色免费网站| 久久综合给合久久狠狠色| 9久re热视频在线精品| 极品中文字幕一区| 国产喷白浆一区二区三区| 模特精品在线| 欧美大尺度在线观看| 久久成人精品电影| 亚洲国产综合在线| 精品不卡视频| 国模私拍一区二区三区| 国产精品嫩草久久久久| 欧美午夜精品一区二区三区| 欧美日韩国产亚洲一区| 欧美精品 日韩| 欧美国产欧美综合| 欧美精品成人91久久久久久久| 亚洲国产成人在线视频| 欧美高清在线观看| 亚洲人成网站色ww在线| 亚洲日本免费| 欧美一区二区三区四区视频| 午夜伦欧美伦电影理论片| 亚洲摸下面视频| 久久精品夜色噜噜亚洲a∨ | 亚洲国产一区二区a毛片| 久久中文欧美| 欧美激情自拍| 亚洲男人天堂2024| 免费看精品久久片| 欧美午夜美女看片| 亚洲成人在线网站| 亚洲午夜av在线| 久久综合久久综合久久综合| 欧美激情精品久久久久久黑人| 一区二区成人精品| 亚洲欧美日韩中文播放| 欧美电影在线| 一本色道久久综合亚洲精品小说| 欧美成人午夜激情视频| 伊人久久噜噜噜躁狠狠躁| 国产精品区一区二区三| 欧美大秀在线观看| 亚洲视频精选| 黄色成人在线免费| 欧美国产日韩精品免费观看| 久久精品国产第一区二区三区最新章节 | 在线视频欧美日韩精品| 老司机精品久久| 亚洲精品免费网站| 欧美一区在线视频| 欧美视频福利| 亚洲九九九在线观看| 久久一区精品| 老色批av在线精品| 影音先锋亚洲视频| 久久综合中文| 久久久噜噜噜久久久| 国内精品久久久久影院 日本资源| 亚洲网在线观看| 亚洲三级视频| 国产欧美在线观看一区| 亚洲女人天堂成人av在线| 亚洲小少妇裸体bbw| 国产精品一区二区久激情瑜伽| 亚洲欧美日韩精品综合在线观看| 亚洲一区二区四区| 在线看视频不卡| 亚洲免费久久| 国产一区二区三区久久| 欧美国产视频在线| 欧美色区777第一页| 久久久久久网| 亚洲精品久久久蜜桃 | 免费不卡中文字幕视频| 免费成人高清视频| 蜜臀91精品一区二区三区| 亚洲国产精品久久| 免费成人美女女| 欧美四级在线观看| 欧美成人一区二区三区| 国产精品毛片高清在线完整版| 美女精品国产| 国产日韩欧美日韩大片| 一本久久精品一区二区| 夜色激情一区二区| 国产夜色精品一区二区av| 一本大道久久a久久精二百| 一区二区视频免费完整版观看| 亚洲综合欧美日韩| 亚洲影院在线| 国产精品人人做人人爽| 宅男66日本亚洲欧美视频| 中日韩男男gay无套| 欧美日韩高清在线观看|