锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品黄视频,99国产精品久久久久久久成人热,久久精品视频99http://m.shnenglu.com/kyelin/鏀墮泦,璁板綍,鏁寸悊,鍥炴敹zh-cnSun, 16 Nov 2025 14:06:18 GMTSun, 16 Nov 2025 14:06:18 GMT60sqlite澶囧繕http://m.shnenglu.com/kyelin/archive/2011/06/10/148434.html鎴戦鎴戦Fri, 10 Jun 2011 08:08:00 GMThttp://m.shnenglu.com/kyelin/archive/2011/06/10/148434.htmlhttp://m.shnenglu.com/kyelin/comments/148434.htmlhttp://m.shnenglu.com/kyelin/archive/2011/06/10/148434.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/148434.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/148434.htmlint sqlite3_open(
  const char *filename,   /* Database filename (UTF-8) */
  sqlite3 **ppDb          /* OUT: SQLite db handle */
);
鍔熻兘:鎵撳紑鏁版嵁搴?濡傛灉涓嶅瓨鍦ㄥ垯鑷姩鍒涘緩.
PARAM1(IN): 鏁版嵁搴撴枃浠跺悕,UTF-8鏍煎紡
PARAM2(OUT):  榪斿洖鐨勬暟鎹簱鍙ユ焺
榪斿洖鍊?榪斿洖SQLITE_OK鎴愬姛,鍙嶄箣澶辮觸(鏁版嵁搴撳彞鏌刾pDb涓虹┖),澶辮觸鍊艱鍏蜂綋SQLITE_*瀹氫箟.
=====================================================================================

int sqlite3_close(sqlite3 *);
鍔熻兘:鍏抽棴鏁版嵁搴?br />PARAM1(IN):鎵撳紑鐨勬暟鎹簱鍙ユ焺
榪斿洖鍊?榪斿洖SQLITE_OK鎴愬姛,鍙嶄箣澶辮觸.
=====================================================================================

int sqlite3_exec(
  sqlite3*,                     /* An open database */
  const char *sql,              /* SQL to be executed */
  sqlite3_callback,             /* Callback function */
  void *,                       /* 1st argument to callback function */
  char **errmsg                 /* Error msg written here */
);
鍔熻兘:鎵цSQL
PARAM1(IN):鏁版嵁搴撳彞鏌?br />PARAM2(IN):sql璇彞,浠0緇撳熬.
PARAM3(IN):鍥炶皟鍑芥暟
PARAM4(IN):鍥炶皟鍙傛暟
PARAM5(OUT):杈撳嚭閿欒淇℃伅
榪斿洖鍊?SQLITE_OK鎴愬姛,鍙嶄箣澶辮觸,澶辮觸鍚庨敊璇俊鎭PARAM5;
璇存槑錛氬鏋滄湁澶氭潯SQL璇彞,涓棿鐢ㄥ垎鍙?;)闅斿紑.鍥炶皟鍑芥暟鍜屽洖璋冨弬鏁伴氬父鍦ㄦ煡璇㈣鍙ヤ細鐢ㄥ埌,
瀵規瘡鏉℃煡璇㈢粨鏋滅粨鏋滈兘浼氳皟鐢ㄥ洖璋冨嚱鏁頒竴嬈?
鍥炶皟鍑芥暟鏍煎紡:
typedef int(*sqlite3_callback)(void *,int ,char **,char **);
鍙傛暟1:sqlite3_exec涓紶鍏ョ殑鍙傛暟
鍙傛暟2:鎬誨垪鏁?
鍙傛暟3:鍒楁暟鎹?char*)
鍙傛暟4:鍒楀悕縐?char*)

=====================================================================================
int sqlite3_get_table(
  sqlite3*,               /* An open database */
  const char *sql,       /* SQL to be executed */
  char ***resultp,       /* Result written to a char *[]  that this points to */
  int *nrow,             /* Number of result rows written here */
  int *ncolumn,          /* Number of result columns written here */
  char **errmsg          /* Error msg written here */
);
鍔熻兘:鏌ヨ琛?br />PARAM1(IN):鏁版嵁搴撳彞鏌?br />PARAM2(IN):sql璇彞,浠0緇撳熬.
PARAM3(OUT):鏌ヨ緇撴灉
PARAM4(OUT):榪斿洖琛屾暟(澶氬皯鏉℃暟鎹?
PARAM5(OUT):榪斿洖鍒楁暟(澶氬皯瀛楁)
PARAM6(OUT):榪斿洖閿欒淇℃伅
榪斿洖鍊?SQLITE_OK鎴愬姛,鎴垮瓙澶辮觸瑙侀敊璇俊鎭?/p>

=====================================================================================
void sqlite3_free_table(char **result);
鍔熻兘:閲婃斁閫氳繃sqlite3_get_table鏌ヨ淇濆瓨鐨勭粨鏋滄暟鎹?br />PARAM1(IN):瑕侀噴鏀劇殑鏁版嵁鎸囬拡


=====================================================================================
int sqlite3_prepare(
  sqlite3 *db,            /* Database handle */
  const char *zSql,       /* SQL statement, UTF-8 encoded */
  int nBytes,             /* Length of zSql in bytes. */
  sqlite3_stmt **ppStmt,  /* OUT: Statement handle */
  const char **pzTail     /* OUT: Pointer to unused portion of zSql */
);
鍔熻兘:鏋勯犳煡璇?br />PARAM1(IN):鏁版嵁搴撳彞鏌?br />PARAM2(IN):sql璇彞
PARAM3(IN):sql璇彞闀垮害,璁劇疆鎴?1鍒欒嚜鍔ㄦ寜瀛楃涓茶綆梥ql璇彞闀垮害
PARAM4(OUT):淇濆瓨鐨勬煡璇㈢粨鏋勪綋,
PARAM5(OUT):NULL鍗沖彲
榪斿洖鍊?SQLITE_OK鎴愬姛.


=====================================================================================
int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
鍔熻兘:涓烘煡璇㈢粨鏋勪綋緇戝畾鏁版嵁
PARAM1(IN):鏌ヨ緇撴瀯浣?br />PARAM2(IN):緇戝畾絎嚑涓暟鎹?sql璇彞涓殑絎嚑涓棶鍙??))
PARAM3(IN):浜岃繘鍒舵暟鎹寚閽?br />PARAM4(IN):浜岃繘鍒舵暟鎹暱搴?br />PARAM5(IN):鏋愭瀯鍥炶皟鍑芥暟,閫氬父璁劇疆NULL,緇撴潫鍚庤嚜宸遍噴鏀?br />榪斿洖鍊?S_OK鎴愬姛.
璇存槑:緇戝畾鍑芥暟蹇呴』瑕佸湪sqlite3_step鍓?sqlite3_prepare鎴栬卻qlite3_reset涔嬪悗璋冪敤.
鏈粦瀹氱殑鍙傛暟緙虹渷涓篘ULL,綾諱技鐨勭粦瀹氬嚱鏁拌繕鏈変互涓?br />int sqlite3_bind_double(sqlite3_stmt*, int, double);
int sqlite3_bind_int(sqlite3_stmt*, int, int);
int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite_int64);
int sqlite3_bind_null(sqlite3_stmt*, int);
int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);

 

=====================================================================================
int sqlite3_reset(sqlite3_stmt *pStmt);
鍔熻兘:閲嶇疆鎵鏈夌粦瀹氱殑鍊?鍥炲埌鍒氬垰璋冪敤sqlite3_prepare鍚庣殑鐘舵?/p>


=====================================================================================
int sqlite3_step(sqlite3_stmt*);
鍔熻兘:鎵ц鏌ヨ
PARAM1:鏌ヨ緇撴瀯浣?br />榪斿洖鍊?
SQLITE_BUSY:鏁版嵁搴撹閿?鍙互絳夊緟閲婃斁鍚庨噸鏂拌皟鐢ㄨ鍑芥暟
SQLITE_DONE:鎴愬姛
SQLITE_ROW:鎴愬姛騫朵笖鏈夋暟鎹繑鍥?瀵規瘡鏌ヨ鍒頒竴鏉℃暟鎹兘浼氳繑鍥炶鍊?
   鍙互璋冪敤sqlite3_column_*鍑芥暟鑾峰彇鏁版嵁鍚庨噸鏂拌皟鐢ㄥ鐞嗕笅涓鏉℃暟鎹?br />SQLITE_ERROR:澶辮觸
SQLITE_MISUSE:閿欒鐨勮皟鐢?姣斿宸茬粡榪斿洖浜哠QLITE_DONE鎴栬匰QLITE_ERROR鍚庤繕緇х畫璋冪敤璇ュ嚱鏁?/p>


=====================================================================================
int sqlite3_finalize(sqlite3_stmt *pStmt);
鍔熻兘:閲婃斁鏌ヨ緇撴瀯浣?/p>

=====================================================================================
int sqlite3_key(
  sqlite3 *db,                   /* Database to be rekeyed */
  const void *pKey, int nKey     /* The key */
);
鍔熻兘:涓哄姞瀵嗙殑鏁版嵁搴撴寚瀹氬瘑鐮?鏀瑰嚱鏁板湪sqlite3_open涔嬪悗璋冪敤

=====================================================================================
int sqlite3_rekey(
  sqlite3 *db,                   /* Database to be rekeyed */
  const void *pKey, int nKey     /* The new key */
);
鍔熻兘:閲嶈鏁版嵁搴撳瘑鐮?濡傛灉pKey = 0 鎴栬?nKey = 0,榪欐暟鎹簱涓嶅姞瀵?/p>


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

 


const char *sqlite3_libversion(void);
int sqlite3_libversion_number(void);
鍔熻兘:鑾峰彇鐗堟湰鍙?/p>

sqlite_int64 sqlite3_last_insert_rowid(sqlite3*);
鍔熻兘:鑾峰彇鏈鍚庢彃鍏ョ殑琛屾爣紺?

int sqlite3_changes(sqlite3*);
鍔熻兘:鑾峰彇鏈榪戞墽琛岀殑sqlite3_exec褰卞搷鐨勮鏁?

int sqlite3_total_changes(sqlite3*);
鍔熻兘:鑾峰彇鑷粠鏁版嵁搴撴墦寮鍚庢湁鏀瑰姩鐨勫嚱鏁?/p>

void sqlite3_interrupt(sqlite3*);
鍔熻兘:鎵撴柇鎴栧仠姝㈡暟鎹簱褰撳墠鎿嶄綔.

int sqlite3_complete(const char *sql);
鍔熻兘:鍒ゆ柇璇彞鏄惁浠ュ垎鍙?;)緇撳熬

int sqlite3_busy_handler(sqlite3*, int(*)(void*,int), void*);
鍔熻兘:璁劇疆鏌ヨ蹇欑鏃剁殑鍥炶皟澶勭悊
璇存槑:緙虹渷鐨勫洖璋冨嚱鏁頒負絀?濡傛灉鍥炶皟鍑芥暟涓虹┖,琛ㄩ攣瀹氬悗sqlite3_exec()鎵ц浼氱洿鎺ヨ繑鍥濻QLITE_BUSY

int sqlite3_busy_timeout(sqlite3*, int ms);
鍔熻兘:璁劇疆鏌ヨ瓚呮椂鏃墮棿(姣)

 

char *sqlite3_mprintf(const char*,...);
char *sqlite3_vmprintf(const char*, va_list);
char *sqlite3_snprintf(int,char*,const char*, ...);
鍔熻兘:鏍煎紡鍖栧瓧絎?闇瑕佺敤%q鏉ヤ唬鏇?s.(涓昏鏄笉鐢ㄥ鍒嗗彿'榪涜杞箟)


void *sqlite3_malloc(int);
void *sqlite3_realloc(void*, int);
void sqlite3_free(void*);
鍔熻兘:鍐呭瓨鍑芥暟

int sqlite3_set_authorizer(
  sqlite3*,
  int (*xAuth)(void*,int,const char*,const char*,const char*,const char*),
  void *pUserData
);
鍔熻兘:璁劇疆鏁版嵁搴撴巿鏉?/p>

void *sqlite3_trace(sqlite3*, void(*xTrace)(void*,const char*), void*);
void *sqlite3_profile(sqlite3*,
   void(*xProfile)(void*,const char*,sqlite_uint64), void*);

void sqlite3_progress_handler(sqlite3*, int, int(*)(void*), void*);
鍔熻兘:璁劇疆鎵ц鍥炶皟鍑芥暟,sqlite3_exec(),sqlite3_step() ,sqlite3_get_table()鏃朵細璋冪敤

void *sqlite3_commit_hook(sqlite3*, int(*)(void*), void*);
鍔熻兘:璁劇疆浜嬪姟鍥炶皟鍑芥暟

int sqlite3_errcode(sqlite3 *db);
const char *sqlite3_errmsg(sqlite3*);
鍔熻兘:鑾峰彇閿欒鐮佸拰閿欒娑堟伅

int sqlite3_bind_parameter_count(sqlite3_stmt*);
鍔熻兘:榪斿洖闇瑕佺粦瀹氱殑鍙傛暟鏁扮洰(sql璇彞涓棶鍙?鏁伴噺)

const char *sqlite3_bind_parameter_name(sqlite3_stmt*, int);
鍔熻兘:鑾峰彇緇戝畾鍙傛暟鍚嶅瓧,?鍙傛暟榪斿洖NULL

int sqlite3_bind_parameter_index(sqlite3_stmt*, const char *zName);
鍔熻兘:鑾峰彇緇戝畾鍙傛暟绱㈠紩

int sqlite3_clear_bindings(sqlite3_stmt*);
鍔熻兘:娓呴櫎緇戝畾鐨勫弬鏁?/p>


int sqlite3_column_count(sqlite3_stmt *pStmt);
鍔熻兘:鑾峰彇鍒楁暟
const char *sqlite3_column_name(sqlite3_stmt*,int);
鍔熻兘:鑾峰彇鍒楀悕


const char *sqlite3_column_database_name(sqlite3_stmt*,int);
const void *sqlite3_column_database_name16(sqlite3_stmt*,int);
const char *sqlite3_column_table_name(sqlite3_stmt*,int);
const void *sqlite3_column_table_name16(sqlite3_stmt*,int);
const char *sqlite3_column_origin_name(sqlite3_stmt*,int);
const void *sqlite3_column_origin_name16(sqlite3_stmt*,int);
鍔熻兘:榪斿洖鍒椾俊鎭?

const char *sqlite3_column_decltype(sqlite3_stmt *, int i);
鍔熻兘:榪斿洖鍒楁暟鎹被鍨?/p>

int sqlite3_data_count(sqlite3_stmt *pStmt);
鍔熻兘:榪斿洖鏁版嵁鏁伴噺(琛屾暟)

 

const void *sqlite3_column_blob(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes(sqlite3_stmt*, int iCol);
int sqlite3_column_bytes16(sqlite3_stmt*, int iCol);
double sqlite3_column_double(sqlite3_stmt*, int iCol);
int sqlite3_column_int(sqlite3_stmt*, int iCol);
sqlite_int64 sqlite3_column_int64(sqlite3_stmt*, int iCol);
const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
const void *sqlite3_column_text16(sqlite3_stmt*, int iCol);
int sqlite3_column_type(sqlite3_stmt*, int iCol);
int sqlite3_column_numeric_type(sqlite3_stmt*, int iCol);
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
鍔熻兘:鑾峰彇鍒楁暟鎹?/p>


int sqlite3_create_function(
  sqlite3 *,
  const char *zFunctionName,
  int nArg,
  int eTextRep,
  void*,
  void (*xFunc)(sqlite3_context*,int,sqlite3_value**),
  void (*xStep)(sqlite3_context*,int,sqlite3_value**),
  void (*xFinal)(sqlite3_context*)
);
鍔熻兘:

const void *sqlite3_value_blob(sqlite3_value*);
int sqlite3_value_bytes(sqlite3_value*);
int sqlite3_value_bytes16(sqlite3_value*);
double sqlite3_value_double(sqlite3_value*);
int sqlite3_value_int(sqlite3_value*);
sqlite_int64 sqlite3_value_int64(sqlite3_value*);
const unsigned char *sqlite3_value_text(sqlite3_value*);
const void *sqlite3_value_text16(sqlite3_value*);
const void *sqlite3_value_text16le(sqlite3_value*);
const void *sqlite3_value_text16be(sqlite3_value*);
int sqlite3_value_type(sqlite3_value*);
int sqlite3_value_numeric_type(sqlite3_value*);
鍔熻兘:綾諱技sqlite3_column_*鍑芥暟

 

 

 

 



鎴戦 2011-06-10 16:08 鍙戣〃璇勮
]]>
chtmlview鐨勭枒鎯?/title><link>http://m.shnenglu.com/kyelin/archive/2011/04/20/144694.html</link><dc:creator>鎴戦</dc:creator><author>鎴戦</author><pubDate>Wed, 20 Apr 2011 12:08:00 GMT</pubDate><guid>http://m.shnenglu.com/kyelin/archive/2011/04/20/144694.html</guid><wfw:comment>http://m.shnenglu.com/kyelin/comments/144694.html</wfw:comment><comments>http://m.shnenglu.com/kyelin/archive/2011/04/20/144694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/kyelin/comments/commentRss/144694.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/kyelin/services/trackbacks/144694.html</trackback:ping><description><![CDATA[涓涓璇濇欏圭洰涓渶瑕佹樉紺虹綉欏?閬傚垱寤篶htmlview瀵硅薄鍚庡姞杞界綉欏?鏈満win7嫻嬭瘯ok,鐒惰屽埌鏀懼埌xp瑁告満涓婃祴璇?鐩存帴鎶ラ敊.鍒涘緩chtmlview紿楀彛澶辮觸.鑰屽悗嫻嬭瘯鍙戠幇濡傛灉cchtmlview鏄湪涓誨璇濇紿楀彛涓婄殑鍒欏張娌¢棶棰?鍙湁鍦ㄥ瓙瀵硅瘽妗嗕笂鍒涘緩chtmlview鍒欒8鏈轟笂鎶ラ敊.鍘熷洜??? <img src ="http://m.shnenglu.com/kyelin/aggbug/144694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/kyelin/" target="_blank">鎴戦</a> 2011-04-20 20:08 <a href="http://m.shnenglu.com/kyelin/archive/2011/04/20/144694.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>C++ 緇忓吀寮婧愪唬鐮?杞?http://m.shnenglu.com/kyelin/archive/2011/03/24/142660.html鎴戦鎴戦Thu, 24 Mar 2011 09:22:00 GMThttp://m.shnenglu.com/kyelin/archive/2011/03/24/142660.htmlhttp://m.shnenglu.com/kyelin/comments/142660.htmlhttp://m.shnenglu.com/kyelin/archive/2011/03/24/142660.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/142660.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/142660.html

鎴戦 2011-03-24 17:22 鍙戣〃璇勮
]]>
winnt.h(236) : error C2146http://m.shnenglu.com/kyelin/archive/2011/01/27/139397.html鎴戦鎴戦Thu, 27 Jan 2011 01:44:00 GMThttp://m.shnenglu.com/kyelin/archive/2011/01/27/139397.htmlhttp://m.shnenglu.com/kyelin/comments/139397.htmlhttp://m.shnenglu.com/kyelin/archive/2011/01/27/139397.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/139397.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/139397.html聽1>Stdafx.cpp 1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C2146: 璇硶閿欒 : 緙哄皯鈥?鈥?鍦ㄦ爣璇嗙鈥淧VOID64鈥濈殑鍓嶉潰)
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(236) : error C4430: 緙哄皯綾誨瀷璇存槑絎?- 鍋囧畾涓?int銆傛敞鎰? C++ 涓嶆敮鎸侀粯璁?int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C2146: 璇硶閿欒 : 緙哄皯鈥?鈥?鍦ㄦ爣璇嗙鈥淏uffer鈥濈殑鍓嶉潰)
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: 緙哄皯綾誨瀷璇存槑絎?- 鍋囧畾涓?int銆傛敞鎰? C++ 涓嶆敮鎸侀粯璁?int
1>c:\program files\microsoft sdks\windows\v6.0a\include\winnt.h(7818) : error C4430: 緙哄皯綾誨瀷璇存槑絎?- 鍋囧畾涓?int銆傛敞鎰? C++ 涓嶆敮鎸侀粯璁?int

鏌ユ壘鍚庡彂鐜伴棶棰樺嚭鍦╲c鍖呭惈鐩綍欏哄簭闂.
璋冩暣DXSDK/Inclue鍒版渶鍚庨潰,闂瑙e喅.
鍙傝?http://social.msdn.microsoft.com/forums/en-US/vclanguage/thread/51043152-3ab6-4a9e-b3c1-2dba8300d9bb/

鎴戦 2011-01-27 09:44 鍙戣〃璇勮
]]>
ShockwaveFlash鎺т歡璇﹁В(杞澆)http://m.shnenglu.com/kyelin/archive/2010/12/24/137390.html鎴戦鎴戦Fri, 24 Dec 2010 09:27:00 GMThttp://m.shnenglu.com/kyelin/archive/2010/12/24/137390.htmlhttp://m.shnenglu.com/kyelin/comments/137390.htmlhttp://m.shnenglu.com/kyelin/archive/2010/12/24/137390.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/137390.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/137390.htmlShockwaveFlash鎺т歡璇﹁В

鏈枃鐢?a >搴旀湁灝芥湁-搴旀湁灝芥湁緗戜負鎮ㄦ暣鐞嗘彁渚?/p>

銆?span class="t_tag" href="tag.php?name=%CA%F4%D0%D4">灞炴?/span>鏂歸潰

AlignMode 錛堣鍐欙級
璇硶錛欰lignMode As Long
璇存槑錛氬榻愭柟寮忥紝涓?SAlign 灞炴ц仈鍔ㄣ傚綋鎺т歡鐨?闀垮姣斾緥涓庡獎鐗囦笉涓鑷翠笖 WMode 涓嶄負 ExactFit 鏃訛紝褰辯墖 錛堟病鏈夎鏀懼ぇ鐨勶級鍦ㄦ帶浠朵腑鏄劇ず鐨勪綅緗彲鐢ㄨ灞炴ц皟鏁淬?璇ュ睘鎬у肩敱鏍囧織浣嶇粍鎴愩傚鍥撅紝灝嗚灞炴у鹼紙浜岃繘鍒訛級涓浉 搴旂殑浣嶆爣璁頒負 1 灝?span class="t_tag" href="tag.php?name=%C9%E8%D6%C3">璁劇疆浜嗙浉搴旂殑瀵歸綈鏂瑰悜銆?灞炴у間笌鐩稿簲鐨勫榻愭柟寮忋傚悗闈㈡嫭鍙烽噷鏄簩榪涘埗鏁般?br />
1錛氬乏瀵歸綈(0001)
2錛氬彸瀵歸綈(0010)
4錛氶《瀵歸綈(0100)
8錛氬簳瀵歸綈(1000)

涔熷彲浠ョ粍鍚堝悇縐嶅榻愭柟寮忥紝鍚屾椂灝嗕袱涓垨浠ヤ笂鐨勪綅鏍囪涓?1錛屼篃灝辨槸灝嗚繖鍥涗釜鍩烘湰鍊肩粍鍚堢浉鍔犮傛瘮濡傚悓鏃跺乏瀵歸綈 鍜岄《瀵歸綈錛屽睘鎬у煎垯璁句負 5錛?101錛夈?
渚嬪瓙 錛?璁劇疆褰辯墖涓哄彸瀵歸綈錛?
movie.AlignMode = 2

--------------------------------------------------------

SAlign 錛堣鍐欙級
璇硶錛歋Align As String
璇存槑錛氬榻愭ā寮忥紙涓?AlignMode 鑱斿姩錛夈傚綋 AlignMode
浠h〃鍚勫榻愭ā寮忕殑浣嶈緗?鈥濇椂錛孲Align 鍊間篃鐩稿簲琚涓?
鈥淟鈥濓紙Left錛夈佲淭鈥濓紙Top錛夈佲淩鈥濓紙Right錛夈佲淏鈥濓紙Bottom錛夊悇 瀛楃鐨勭粍鍚堛傗楲鈥欍佲楾鈥欍佲楻鈥欍佲楤鈥欑殑鍏堝悗欏哄簭涓嶅彉銆?br />渚嬪瓙錛氳緗獎鐗囦負宸﹀榻愬拰欏跺榻愶細
movie.SAlign = "LT"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

BackgroundColor錛堣鍐欙級
璇硶錛欱ackgroundColor As Long
璇存槑錛氬獎鐗囩殑鑳屾櫙鑹詫紙涓?BGColor 鑱斿姩錛夈備互錛堢孩 脳 65536 錛嬬豢脳 256 錛嬭摑錛夎綆?span class="t_tag" href="tag.php?name=%D1%D5%C9%AB">棰滆壊鍊箋傜孩緇胯摑棰滆壊鍙?鍊艱寖鍥達紙0-255錛夈傞粯璁ょ殑褰辯墖鑳屾櫙鑹蹭負 -1 銆傚鏋滃獎鐗?璁劇疆浜嗗簳鑹叉垨鏈夊浘鐗囧綋浣滆儗鏅紝閭d箞鐪嬩笉鍑烘潵璇ュ睘鎬у肩殑 鏀瑰彉浼氭湁浠涔堝獎鍝嶃?
渚嬪瓙錛氬皢褰辯墖鑳屾櫙鑹茶涓鴻摑鑹?錛?
movie.BackgroundColor = 255

--------------------------------------------------------

BGColor 錛堣鍐欙級
璇硶錛欱GColor As String
璇存槑錛氬獎鐗囩殑鑳屾櫙鑹詫紙涓?BackgroundColor 鑱斿姩錛夈備笌 BackgroundColor 涓嶅悓鐨勬槸錛孊GColor 鏄竴涓叚浣嶇殑鍗佸叚榪涘埗鏁幫紝姣忎袱浣嶅垎鍒唬琛ㄧ孩緇胯摑棰滆壊鍊箋傚錛欶FEEAA 琛ㄧず 綰㈣壊鍊間負 FF銆佺豢鑹插間負 EE 銆佽摑鑹插間負 AA 銆?
渚嬪瓙錛氬皢褰辯墖鑳屾櫙鑹茶涓虹孩鑹詫細
movie.BGColor = "FF0000"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Base 錛堣鍐欙級
璇硶錛欱ase As String
璇存槑錛氭寚瀹氱敤浜?span class="t_tag" href="tag.php?name=%BD%E2%BE%F6">瑙e喅褰辯墖涓墍鏈夌浉瀵?span class="t_tag" href="tag.php?name=%C2%B7%BE%B6">璺緞鐨勫0鏄庣殑鍩?span class="t_tag" href="tag.php?name=%B5%D8%D6%B7">鍦板潃銆傚綋褰辯墖涓庡叾闇瑕佺殑鍏朵粬鏂囦歡涓嶅湪鍚屼竴鐩綍涓殑鏃跺欒 灞炴х壒鍒湁鐢ㄣ傚涓嶇壒鍒寚瀹氾紝Base 鐨勫奸粯璁や負 "."錛屼篃灝?鏄綋鍓嶅獎鐗囨墍鍦ㄧ殑璺緞銆?
渚嬪瓙 錛?
movie.Base = "Http://www.domain.com/pathname1/pathname2"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Movie 錛堣鍐欙級
璇硶錛歁ovie As String
璇存槑錛氳鎾斁鐨勫獎鐗囪礬寰勶紙URL錛夈傝緗灞炴т負 涓涓?SWF 鏂囦歡鐨?URL 灝嗚澆鍏ユ枃浠跺茍鎾斁瀹冦傝嫢褰辯墖鏄湪鏈湴紜洏涓婏紝瑕佸啓鎴愪粠鐩樼寮濮嬬殑緇濆璺緞錛涜嫢褰辯墖鏄湪鏌愮綉绔欎笂錛屼篃瑕佸啓鍏?URL 鍦板潃銆?
渚嬪瓙 錛?
movie.Movie = "http://www.domain.com/path1/path2/filename.swf"
鎴?
movie.Movie = "c:\temp\test.swf"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

DeviceFont 錛堣鍐欙級
璇硶錛欴eviceFont As Boolean
璇存槑 錛?鍐沖畾鏄惁浣跨敤褰辯墖鍐呭祵鐨勫瓧浣擄紝 榛樿鍊間負 False銆傚皢璇ュ睘鎬у艱涓?True 鍒欏己鍒舵挱鏀懼櫒涓嶄嬌鐢ㄥ獎鐗囦腑鐨勫唴宓岀殑瀛椾綋鑰屼嬌鐢ㄦ湰鍦?span class="t_tag" href="tag.php?name=%CF%B5%CD%B3">緋葷粺瀛椾綋銆?
渚嬪瓙錛?br />movie.DeviceFont = True

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

EmbedMovie 錛堣鍐欙級
璇硶錛欵mbedMovie As Boolean
璇存槑錛氬獎鐗囨槸鍚﹁瀛樿串鍒版帶浠舵墍鍦ㄧ殑瀹瑰櫒涓傚綋浣犲凡杞藉叆涓涓獎鐗囧悗灝嗚灞炴ц涓?True錛屾挱鏀懼獎鐗囨椂灝變笉蹇呭啀鍘昏 SWF 鏂囦歡浜嗐傝繖浣垮緱鍦?PowerPoint 綆鎶ユ垨 VB 紼嬪簭 閲屼嬌鐢?Flash 褰辯墖鏇村鏄撱備絾灝嗚灞炴ц涓?True 鍚庯紝鎺т歡鐨?Movie 灞炴у氨涓嶅啀鎺ュ彈鏂扮殑鍊間簡銆傝鎯蟲挱鏀懼彟涓涓獎鐗囷紙緇?Movie 灞炴ц祴鏂板鹼級錛屽繀欏誨厛灝?EmbedMovie 灞?鎬ц涓?False 銆?
渚嬪瓙 錛?
movie.EmbedMovie = True

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

FrameNum 錛堣鍐欙級
璇硶錛欶rameNum As Long
璇存槑錛氬獎鐗囧綋鍓嶅撫鐨勭紪鍙?錛堜粠 0 寮濮嬭鏁幫級銆傝緗?璇ュ睘鎬у煎皢浣垮獎鐗囧仠鍦ㄧ敱 FrameNum 鎸囧畾鐨勫撫澶勩?
渚嬪瓙 錛?鏄劇ず褰撳墠甯ф暟錛?br />MsgBox " 褰撳墠鏄劇ず鐨勬槸絎?" & movie.FrameNum & " 甯с?

浣垮獎鐗囨樉紺虹 10 甯э細
Bomovie.FrameNum = 9

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

TotalFrames錛堝彧璇伙級
璇硶錛歍otalFrames As Long
璇存槑錛氳繑鍥炲獎鐗囦腑鎬誨撫鏁般傝鍙傛暟瑕佸埌褰辯墖杞藉叆瀹屾垚鎵嶆湁鏁堬紙ReadyState=4錛夈?
渚嬪瓙 錛?
If movie.ReadyState = 4 Then MsgBox " 鏈獎鐗囧叡鏈?" & movie.TotalFrames & " 甯с?


======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Loop 錛堣鍐欙級
璇硶錛歀oop As Boolean
璇存槑錛氭槸鍚﹀驚鐜挱鏀俱傝涓?True 鏄驚鐜挱鏀撅紝璁句負 False 鍒欏彧鎾斁涓嬈°?
渚嬪瓙 錛?
movie.Loop = True

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Menu 錛堣鍐欙級
璇硶錛歁enu As Boolean
璇存槑錛氭槸鍚︽樉紺?span class="t_tag" href="tag.php?name=%B2%CB%B5%A5">鑿滃崟銆傝涓?True 鏄劇ず鎵鏈夎彍鍗曪紝璁句負 False 鑿滃崟琚睆钄斤紝浣嗕粛鏈変竴欏光淎bout Macromedia Flash Player...鈥濄傚鏋滀綘瀹炲湪涓嶅枩嬈㈣繖涓彍鍗曪紝搴旇鍦ㄧ▼搴忎腑閫氳繃鎷︽埅榧犳爣娑堟伅鐨勬柟娉曟潵杈懼埌鐩殑銆備笌鍦ㄧ嫭绔嬬殑 Flash 鎾斁鍣ㄤ腑涓嶅悓鐨勬槸錛屽湪鎺т歡鐨勫彸閿彍鍗曢噷鐐孤犅?br />鈥淎bout...鈥濈殑璇濓紝灝變細鎵撳紑嫻忚鍣ㄥ埌 Macromedia 鐨勭綉绔欎笂鍘?鐪?About 銆?img alt="" src="http://www.vbgood.com/images/smilies/default/run.gif" border="0" smilieid="52" />
渚嬪瓙 錛?
movie.Menu = False


======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Playing 錛堝彧璇伙級
璇硶錛歅laying As Boolean
璇存槑錛氬綋鍓嶆挱鏀劇姸鎬併傚鏋滃獎鐗囨鍦ㄦ挱鏀撅紝璇ュ睘鎬?鍊間負 True 錛屽惁鍒欎負 False 銆?
渚嬪瓙 錛?
If movie.Playing = False Then MsgBox " 褰辯墖宸插仠姝㈡挱鏀撅紒"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Quality 錛堣鍐欙級
璇硶錛歈uality As Long
璇存槑錛氱敾闈㈣川閲忥紙涓?Quality2 鑱斿姩錛夈俀uality 鍙互鍙?
0 鈥斺旂浉褰撲簬 Quality2 鍙?"Low"
1 鈥斺旂浉褰撲簬 Quality2 鍙?"High"
2 鈥斺旂浉褰撲簬 Quality2 鍙?"AutoLow"
3 鈥斺旂浉褰撲簬 Quality2 鍙?"AutoHigh"

渚嬪瓙 錛?
movie.Quality = 1

--------------------------------------------------------

Quality2錛堣鍐欙級
璇硶錛歈uality As String
璇存槑錛氱敾闈㈣川閲?涓?Quality 鑱斿姩)銆俀uality2 鍙互鍙栵細
Low錛?/font>鍋忛噸浜庢挱鏀鵑熷害鑰屼笉綆℃樉紺?span class="t_tag" href="tag.php?name=%D0%A7%B9%FB">鏁堟灉錛岃屼笖涓嶅惎鐢?
娑堥敮榻?span class="t_tag" href="tag.php?name=%B9%A6%C4%DC">鍔熻兘 銆?
High錛?/font>鍋忛噸浜庣敾闈㈣屼笉綆℃挱鏀鵑熷害錛屽茍涓旀繪槸鍚敤 娑堥敮榻垮姛鑳姐傚鏋滃獎鐗囦腑涓嶅寘鍚姩鐢誨氨騫蟲粦澶勭悊浣嶅浘錛涘 鏋滄湁鍔ㄧ敾錛岄偅涔堜綅鍥懼氨涓嶈騫蟲粦澶勭悊銆傦紙榪欓噷鐨勫姩鐢誨簲璇?鏄妸涓寮犲浘鐗囧仛騫崇Щ鎴栨棆杞級
AutoLow錛?/font>鍏堢潃閲嶄簬鎾斁閫熷害錛屼絾鍙鏈夊彲鑳藉氨鏀?鍠勬樉紺烘晥鏋溿備竴寮濮嬫挱鏀炬椂鍏堢鐢ㄦ秷閿嬌鍔熻兘銆傚鏋滄挱鏀?鍣ㄦ嫻嬪埌澶勭悊鍣ㄨ兘鎵垮彈寰椾簡 錛屽氨鍚敤娑堥敮榻垮姛鑳?銆?
AutoHigh錛?/font>涓寮濮嬫槸鎾斁閫熷害鍜屾樉紺烘晥鏋滃茍閲嶏紝浣?濡傛湁蹇呰灝辯壓鐗茬敾璐ㄧ‘淇濋熷害銆傚紑濮嬫挱鏀炬椂灝卞惎鐢ㄦ秷閿嬌 鍔熻兘銆備絾濡傛灉瀹為檯鐨勫撫閫熺巼姣旇璁℃椂鎸囧畾鐨勯熺巼鎱簡錛屽氨 紱佺敤娑堥敮榻垮姛鑳芥潵鎻愰珮鎾斁閫熷害銆?
渚嬪瓙 錛?
movie.Quality2 = "High"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

ReadyState錛堝彧璇伙級
璇硶錛歊eadyState As Long
璇存槑錛氬獎鐗囩殑褰撳墠鐘舵併俁eadyState 鍙互鍙栵細
0 鈥斺旀鍦ㄨ澆鍏?
1 鈥斺旀湭鍒濆鍖?
2 鈥斺斿凡杞藉叆
3 鈥斺旀鍦ㄤ氦浜?
4 鈥斺斿畬鎴?渚嬪瓙 錛?
If movie.ReadyState = 4 Then MsgBox " 褰辯墖杞藉叆瀹屾垚錛?


======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Scale 錛堣鍐欙級
璇硶錛歴cale As String
璇存槑錛氱緝鏀炬ā寮忥紙涓?ScaleMode 鑱斿姩錛夈係cale 鍙互 鍙?
ShowAll 鈥斺斿湪鎺т歡鍐呮樉紺哄叏閮ㄥ獎鐗囧尯鍩燂紝淇濇寔褰辯墖 闀垮姣斾緥涓嶅彉錛屽獎鐗囩殑澶у皬鍐沖畾浜庢帶浠墮暱鎴栧涓緝灝忕殑涓 杈?銆?
NoBorder 鈥斺斿湪鎺т歡鍐呮樉紺洪儴鍒嗗獎鐗囧尯鍩燂紝淇濇寔褰辯墖 闀垮姣斾緥涓嶅彉錛屽獎鐗囩殑澶у皬鍐沖畾浜庢帶浠墮暱鎴栧涓緝澶х殑涓 杈?銆?
ExactFit 鈥斺斿湪鎺т歡鍐呮樉紺哄叏閮ㄥ獎鐗囧尯鍩燂紝灝嗗獎鐗囩殑闀?瀹芥瘮渚嬪己鍒剁瓑浜庢帶浠剁殑闀垮姣斾緥銆?
渚嬪瓙 錛?
MsgBox " 褰撳墠鐨勭緝鏀炬ā寮忔槸錛? & movie.Scale

--------------------------------------------------------

17.ScaleMode錛堣鍐欙級
璇硶錛歋caleMode As Long
璇存槑錛氱緝鏀炬ā寮?涓?Scale 鑱斿姩)銆係caleMode 鍙互鍙栵細
0 鈥斺旂浉褰撲簬 Scale 鍙?"ShowAll"
1 鈥斺旂浉褰撲簬 Scale 鍙?"NoBorder"
2 鈥斺旂浉褰撲簬 Scale 鍙?"ExactFit"
渚嬪瓙錛氫嬌褰辯墖鐨勭緝鏀炬ā寮忔敼鎴愨淓xactFit 鈥濓細
movie.ScaleMode = 2

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Stacking 錛堣鍐欙級
璇硶錛歋tacking As String
璇存槑錛氱敤浜?HTML錛屽皢 Flash Player 褰撴垚 HTML 涓?鐨勪竴縐嶁滆涓衡濅嬌鐢ㄦ椂錛岃灞炴у喅瀹?Flash 褰辯墖鐩稿浜庝笌鍏?鍙傜収鐨?HTML 鍐呭濡備綍鏄劇ず銆傦紙鏈夊叧鈥滆涓衡濊鍙傞槄鏍峰紡琛?鐨勮祫鏂欙級銆係tacking 鍙互鍙栵細
none 鈥斺斺滆涓衡濅笉鏄劇ず銆?
replaceall 鈥斺斺滆涓衡濈殑鏄劇ず鍙栦唬鍏ㄩ儴鍏朵粬鍏冪礌鐨勫唴瀹癸紝鍖呮嫭鑳屾櫙 銆?
content 鈥斺斺滆涓衡濈殑鏄劇ず鍙彇浠e叾浠栧厓绱犵殑鍐?瀹廣?
background 鈥斺斺滆涓衡濈殑鏄劇ず鍙彇浠e叾浠栧厓绱犵殑鑳屾櫙 銆?
below 鈥斺斺滆涓衡濆湪鎵鏈夊叾浠栧厓绱犲唴瀹圭殑涓嬮潰鏄劇ず銆?
belowflow 鈥斺斺滆涓衡濅互鍙嶅悜 Z 欏哄簭鏄劇ず鍦ㄥ叾浠栧厓绱?鐨勫瓙瀵硅薄涔嬩笂錛屼絾鍦ㄨ鍏冪礌涓昏鍐呭涔嬩笂銆?
aboveflow 鈥斺斺滆涓衡濅互姝e悜 Z 欏哄簭鏄劇ず鍦ㄥ叾浠栧厓绱?鐨勫瓙瀵硅薄涔嬩笅錛屼絾鍦ㄨ鍏冪礌涓昏鍐呭涔嬩笂銆?
above 鈥斺斺滆涓衡濇樉紺哄湪鎵鏈夊叾浠栧厓绱犵殑鍐呭涔嬩笂銆?
top 鈥斺斺滆涓衡濈殑鏄劇ず緗簬鏁翠釜欏甸潰鍐呭涔嬩笂銆?br />
渚嬪瓙 錛?
movie.Stacking = "below"



======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

20.WMode 錛堣鍐欙級
璇硶錛歐Mode As String
璇存槑錛氭帶浠剁殑紿楀彛妯″紡銆俉Mode 鍙互鍙栵細 Window 鈥斺?WMode 灞炴х殑榛樿鍊鹼紝鎸?Flash 鎾斁鍣?
鍏稿瀷鐨勬柟寮忓伐浣滐紝鍗沖湪鎺т歡鐨勭煩褰㈢獥鍙d腑鎾斁褰辯墖錛岃繖鏍蜂竴 鑸兘鑳芥彁渚涙渶蹇殑鍔ㄧ敾鏁堟灉銆?
Opaque 鈥斺斾嬌褰辯墖涓嶉忔槑銆?Transparent 鈥斺斿垱寤轟竴涓忔槑鐨勫獎鐗囥傚鏋滃獎鐗囦腑鏈?
閫忔槑鐨勭墖孌碉紝鏀懼埌榪欓噷鏃訛紝灝卞彲浠ョ湅鍒版帶浠朵笅闈㈢殑鑳屾櫙銆備絾 浣跨敤姝ゅ睘鎬у鹼紝鍔ㄧ敾鐨勬挱鏀鵑熷害鍙兘浼氭參涓浜涖?
渚嬪瓙 錛?
movie.WMode = "Transparent"


鍐欏埌榪欓噷 绱畫鎴戜簡======

======================================== 鐧介噾鍒嗗壊綰?0.618 ========================================


浜屻佹帶浠舵柟娉?/font>


涓嬮潰涓殑鏂規硶涓嶈繑鍥炲鹼細

Back
璇硶錛欱ack()聽聽
璇存槑 錛?褰辯墖鍚庨涓甯?錛?騫朵笖鍋滄鎾斁 銆?渚嬪瓙 錛?
movie.Back

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Forward
璇硶錛欶orward()
璇存槑 錛?褰辯墖鍓嶈繘涓甯э紝 騫朵笖鍋滄鎾斁銆?br />渚嬪瓙 錛?
movie.Forward

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

GotoFrame
璇硶錛欸otoFrame(FrameNum As Long)
璇存槑錛氬皢褰辯墖璺寵漿鍒扮敱 FrameNum 鎸囧畾鐨勫撫錛屽茍涓斿仠姝㈡挱鏀俱傚鏋滄墍鎸囧畾鐨勫撫榪樻湭杞藉叆錛屾挱鏀懼櫒鍓嶈繘鍒版渶鍚庣殑鍙敤甯у茍鍋滀笅錛屽湪璋冪敤榪囩▼涓細浜х敓鏃犳硶棰勬枡鐨勫悗鏋溿傛渶濂戒嬌鐢?PercentLoaded 鏂規硶鏉ョ‘瀹氭槸鍚﹀凡杞藉叆瓚沖鐨勫獎鐗囨潵鎵ц鏈柟娉曘傚弬鏁?FrameNum 鏄粠 0 寮濮嬬殑錛岃繖鍜?Flash 涓殑 Goto 鍔ㄤ綔涓嶄竴鏍鳳紝瀹冩槸浠?1 寮濮嬬殑銆?
渚嬪瓙錛氳煩杞埌褰辯墖鐨勭 20 甯э細
movie.GotoFrame 20

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

LoadMovie
璇硶錛歀oadMovie(layer As Long, url As String)
璇存槑錛氬皢鐢?url 鎸囧畾鐨勫獎鐗囪澆鍏ュ埌鐢?layer 鎸囧畾鐨勫眰涓娿?
渚嬪瓙錛氬皢 movie.swf 杞藉叆鑷?0 灞傦細
movie.LoadMovie 0, "movie.swf"

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Pan
璇硶錛歅an(x As Long, y As Long, mode As Long)
璇存槑錛氬皢涓涓斁澶ц繃鐨勫獎鐗囧鉤縐葷敱 x 鍜?y 鎸囧畾鐨勮窛紱匯?x 鍜?y 鍧囦負鐩稿鍊箋傚嵆鎺т歡鐩稿浜庡獎鐗囨潵璇村鉤縐葷殑璺濈錛堜綘 鍙互鎯寵薄鎺т歡鏄竴涓獥鎴鳳紝褰辯墖鏄垜浠粠紿楁埛閲岀湅鍒扮殑鏀?鍦ㄥ闈㈢殑甯冩櫙, 鎴戜滑鐪嬪埌紿楁埛鐩稿浜庡竷鏅鉤縐諱簡涓浜涜窛紱伙紝 閭f槸澶栭潰鐨勫竷鏅湪鍔紝鑰岀獥鎴鋒槸涓嶅姩鐨勶級銆傜敤 mode 鍙傛暟 鏉ユ寚瀹?x 鍜?y 鐨勫兼槸鍍忕礌榪樻槸紿楀彛鐨勭櫨鍒嗘瘮錛屽綋 mode=0 鏃?鍧愭爣緋諱互鍍忕礌涓哄崟浣嶏紱mode=1 鏃跺潗鏍囩郴灝變互紿楀彛鐨勭櫨鍒?姣旀潵璁$畻銆?騫崇Щ騫朵笉鑳借秴鍑哄獎鐗囩殑杈規錛屼篃灝辨槸璇達紝寰 涓涓柟鍚戝鉤縐繪渶澶氬埌杈懼獎鐗囩殑杈圭紭涓庢帶浠跺榻愮殑紼嬪害銆?
渚嬪瓙錛氭帶浠剁浉瀵逛簬褰辯墖鍚戝乏鍚戜笂鍚勫鉤縐?5 涓儚绱狅紙褰?鐒舵帶浠朵笉浼氬姩 錛屾槸褰辯墖鍚戝彸鍚戜笅騫崇Щ浜?錛夛細
movie.Pan 5,5,0

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Play
璇硶錛歅lay()
璇存槑錛氬紑濮嬫挱鏀懼獎鐗囥?br />渚嬪瓙錛?br />movie.Play

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

Rewind
璇硶錛歊ewind()
璇存槑錛氬掑甫銆傝繑鍥炲埌褰辯墖鐨勭涓甯с?br />渚嬪瓙錛?br />movie.Rewind

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

SetVariable
璇硶錛歋etVariable(name As String, value As String)
璇存槑錛氬皢鐢?name 鎸囧畾鐨?Flash 鍙橀噺鍊艱涓?value銆?br />渚嬪瓙錛?br />movie.SetVariable "/Form:UserName", "John Smith"

======================================== 鐧介噾鍒嗗壊綰?0.618 ========================================

涓夈佷簨浠舵柟闈?/font>

FSCommand
璇硶錛歋hockwaveFlash1_FSCommand(ByVal command As String, ByVal args As String)
璇存槑錛氬湪flash涓皟鐢╢scommand()瑙﹀彂鐨勪簨浠?br />鍙傛暟錛?br />command 錛氫唬琛?span class="t_tag" href="tag.php?name=%C3%FC%C1%EE">鍛戒護鏍囪瘑
args 錛氫唬琛ㄥ弬鏁?br />
渚嬪瓙錛?br />
Select Case command '榪欓噷鍙互鐢?if
聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽聽 '浣哻ommand澶氫簡涔嬪悗灝變笉濂?if 鐢ㄤ簡
聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽聽 '鎴戞槸鍋氫釜紺鴻寖
聽聽 聽聽聽 Case "command1"
聽聽 聽聽 聽聽
聽聽 聽聽 聽聽 If args = "123" Then
聽聽 聽聽 聽聽 聽聽
聽聽 聽聽 聽聽 聽聽 ...
聽聽 聽聽 聽聽 聽聽
聽聽 聽聽 聽聽 Else
聽聽 聽聽 聽聽 聽聽
聽聽 聽聽 聽聽 聽聽 ...
聽聽 聽聽 聽聽 聽聽
聽聽 聽聽 聽聽 End If
聽聽 聽聽 聽聽
聽聽 聽聽聽 Case ...
聽聽 聽聽聽
End Select


======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================


FlashCall
璇硶錛歋hockwaveFlash1_FlashCall(ByVal request As String)
璇存槑錛氬彲鑳藉緢灝戜漢鐭ラ亾榪欎釜浜嬩歡鐨勭敤澶勶紝鍏跺疄榪欎釜璺?FSCommand 浜嬩歡鏄樊涓嶅鐨勩備笌 FSCommand 涓嶅悓鐨勬槸錛岃繖涓簨浠跺彲浠ユ湁榪斿洖鍊鹼紙涓嬮潰浼氳皥鍒幫級

鍙傛暟鏄竴涓猉ML鏍煎紡鐨勫瓧絎︿覆錛屾牸寮忔槸
"<invoke name='%s' returntype='xml'><arguments><string>%s</string></arguments></invoke>"錛屽幓鏌ユ煡甯姪灝辯煡閬撲簡銆?br />
澶勭悊request錛氭爣鍑哣B娌℃湁澶勭悊XML鐨勫簱錛屼綘鍙互鑷繁鎵炬敮鎸乆ML鐨勬彃浠舵潵鐢ㄣ備笅闈㈠氨鏄寜鐓т釜浜洪渶瑕佸鐞唕equest浜嗐?br />
榪斿洖鍊鹼細
浜嬩歡澶勭悊鍑芥暟鏄病鏈夎繑鍥炲肩殑錛屼絾鏄痜lash player鎻愪緵浜嗕竴涓柟娉曪細ShockwaveFlash1.SetReturnValue() 涓撻棬浼犻掕繑鍥炲鹼紝鏍煎紡鏄?lt;string>%s</string>錛堜篃鍙互鏄埆鐨凙S緇撴瀯錛屽叿浣撶湅甯姪錛夈?br />
渚嬪瓙錛氭垜鍦ㄨ繖緇欏嚭tinyxml鐨勪緥瀛愶細

Private Sub ShockwaveFlash1_FlashCall(ByVal request As String)

Dim request_xml As New TiXmlDocument
Dim request_name As String

request_xml.Parse request
request_name = request_xml.RootElement().Attribute("name")

...鑷繁鍘誨鐞嗗惂

End Sub



======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

OnProgress
璇硶錛歋hockwaveFlash1_OnProgress(ByVal percentDone As Long)
璇存槑錛氫及璁℃槸flash鍦?span class="t_tag" href="tag.php?name=%BC%D3%D4%D8">鍔犺澆榪囩▼涓繘搴︽敼鍙樿Е鍙戠殑鍚э紵
percentDone 鍒欏簲璇ユ槸涓櫨鍒嗘暟~
鍙嶆鎴戣繕娌¢綇榪欎釜浜嬩歡涓嬈?.= =!


======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

OnReadyStateChange
璇硶錛歋hockwaveFlash1_OnReadyStateChange(newState As Long)
璇存槑錛氶【鍚嶆濅箟錛屽氨鏄?ReadyState 鏀瑰彉鏃惰Е鍙戠殑浜嬩歡錛屽叿浣撹鐪嬩笂闈㈠叧浜?ReadyState 灞炴х殑璇存槑錛屾垜鍦ㄨ繖灝變笉搴熻瘽浜?...

======================================== 榛勯噾鍒嗗壊綰?0.618 ========================================

鑷充簬鍏朵粬浜嬩歡錛屾瘮濡?br />GotFocus鍟︺丩ostFocus鍟︼紝鎴戜篃涓嶆兂搴熻瘽浜?..
from:http://y9j9.com/html/jisuanjiyingyong/201003/28-336.html

鎴戦 2010-12-24 17:27 鍙戣〃璇勮
]]>
MFC甯哥敤璋冭瘯鍑芥暟(杞?http://m.shnenglu.com/kyelin/archive/2010/11/25/134628.html鎴戦鎴戦Thu, 25 Nov 2010 07:06:00 GMThttp://m.shnenglu.com/kyelin/archive/2010/11/25/134628.htmlhttp://m.shnenglu.com/kyelin/comments/134628.htmlhttp://m.shnenglu.com/kyelin/archive/2010/11/25/134628.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/134628.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/134628.html AfxCheckMemory聽聽

BOOL AfxCheckMemory( );聽聽聽 // 媯鏌ュ綋鍓嶅垎閰嶇殑鎵鏈夊唴瀛樼殑瀹屾暣鎬?br />
榪斿洖鍊鹼細濡傛灉娌℃湁鍐呭瓨閿欒錛屽垯涓洪潪闆跺鹼紱鍚﹀垯涓?銆?br />
璇存槑錛?br />榪欎釜鍑芥暟浣胯嚜鐢卞唴瀛樻睜鏈夋晥騫跺湪闇瑕佹椂杈撳嚭閿欒淇℃伅銆傚鏋滆繖涓嚱鏁版病鏈夋嫻嬪埌鍐呭瓨鍐茬獊錛屽畠浠涔堜篃涓嶈緭鍑恒?br />褰撳墠鍦ㄥ爢涓垎閰嶇殑鎵鏈夊唴瀛樺潡閮戒細琚鏌ワ紝鍖呮嫭閭d簺鐢?new鍒嗛厤鐨勫唴瀛橈紝浣嗘槸涓嶅寘鎷偅浜涚敤鐩存帴璋冪敤鍐呭瓨鍒嗛厤鍑芥暟鍒嗛厤鐨勫唴瀛橈紝渚嬪malloc鍑芥暟鎴栬匴indows鐨凣lobalAlloc鍑芥暟銆傚鏋滃彂鐜版湁鍐呭瓨鍧楀瓨鍦ㄩ敊璇紝灝變細鍦ㄨ皟璇曞櫒涓婅緭鍑洪敊璇俊鎭?br />濡傛灉浣犲湪紼嬪簭妯″潡涓寘鍚簡涓嬮潰鐨勭▼搴忚錛?br />#define new DEBUG_NEW
鍚庨潰瀵笰fxCheckMemory鐨勮皟鐢ㄩ兘浼氭樉紺哄彂鐢熷唴瀛樺垎閰嶇殑鏂囦歡鍚嶅拰琛屽彿銆?br />娉ㄦ剰錛?br />濡傛灉浣犵殑妯″潡涓寘鍚簡涓涓垨澶氫釜涓茶鍖栫被鐨勫疄鐜幫紝閭d箞浣犲繀欏誨湪鏈鍚庝竴涓狪MPLEMENT_SERIAL瀹忎箣鍚庡寘鍚?define紼嬪簭琛屻傝繖涓嚱鏁頒粎鍦∕FC鐨勮皟璇曠増鏈腑璧蜂綔鐢ㄣ?br />
紺轟緥錛?br />// AfxCheckMemory鐨勪緥瀛?br />CAge* pcage = new CAge( 21 ); // CAge 鏄粠 CObject.緇ф壙鑰屾潵鐨?br />Age* page = new Age( 22 ); // Age 涓嶆槸浠?CObject.緇ф壙鐨?br />*(((char*) pcage) - 1) = 99; // 鐮村潖鍓嶉潰鐨勪繚鎶ゅ瓧鑺?br />*(((char*) page) - 1) = 99; // 鐮村潖鍓嶉潰鐨勪繚鎶ゅ瓧鑺?br />AfxCheckMemory();

紼嬪簭鐨勭粨鏋滃涓嬶細
memory check error at $0067495F = $63, should be $FD
DAMAGE: before Non-Object block at $00674960
Non-Object allocated at file test02.cxx(48)
Non-Object located at $00674960 is 2 bytes long
memory check error at $00674905 = $63, should be $FD
DAMAGE: before Object block at $00674906
Object allocated at file test02.cxx(47)
Object located at $00674906 is 6 bytes long

AfxDump

void AfxDump(const CObject* pOb);聽聽聽 // 濡傛灉鍦ㄨ皟璇曞櫒鍐呰皟鐢紝鍒欒漿瀛樺璞$殑鐘舵?br />
鍙傛暟錛?pOb 鎸囧悜鐢盋Object緇ф壙鐨勭被鐨勫璞$殑鎸囬拡銆?

璇存槑錛?br />鍦ㄨ皟璇曞櫒涓皟鐢ㄨ繖涓嚱鏁頒互鍦ㄨ皟璇曟椂杞偍瀵硅薄鐨勭姸鎬併侫fxDump璋冪敤涓涓璞$殑Dump鍑芥暟騫朵笖灝嗕俊鎭彂閫佸埌afxDump鍙橀噺鎸囧畾鐨勪綅緗侫fxDump浠呰兘鍦∕FC鐨勮皟璇曠増鏈腑浣跨敤銆?br />浣犵殑紼嬪簭浠g爜涓嶅簲璇ヨ皟鐢ˋfxDump錛岃屾槸搴旇璋冪敤閫傚綋瀵硅薄鐨凞ump鎴愬憳鍑芥暟銆?/p>

AfxDumpStack

void AFXAPI AfxDumpStack(DWORD dwTarget = AFX_STACK_DUMP_TARGET_DEFAULT); // 鐢熸垚褰撳墠鏍堢殑涓涓槧鍍忥紝璇ュ嚱鏁伴氬父琚潤鎬侀摼鎺?br />
鍙傛暟錛?dwTarget 鎸囧嚭杞偍杈撳嚭鐨勭洰鏍囥傚叾鍙栧煎彲浠ョ敤浣嶆垨鎿嶄綔絎︼紙|錛夌粍鍚堣搗鏉ワ紝鍙兘鍊煎涓嬶細 路 AFX_STACK_DUMP_TARGET_TRACE 閫氳繃TRACE瀹忚緭鍑恒俆RACE浠呬粎鍦ㄨ皟璇曠増鏈腑浜х敓杈撳嚭錛屽湪鍙戣鐗堟湰涓笉浜х敓杈撳嚭銆傚悓鏃訛紝TRACE鍙互琚噸瀹氬悜鍒拌皟璇曞櫒浠ュ鐨勭洰鏍囥?

路 AFX_STACK_DUMP_TARGET_DEFAULT 灝嗚漿鍌ㄨ緭鍑哄彂閫佸埌緙虹渷鐩爣銆傚浜庤皟璇曠増鏈紝杈撳嚭鍙戦佺粰TRACE瀹忋傚湪鍙戣鐗堟湰涓紝杈撳嚭鍙戦佸埌鍓創鏉褲?

路 AFX_STACK_DUMP_TARGET_CLIPBOARD 杈撳嚭浠呭彂閫佸埌鍓創鏉褲傛暟鎹皢鎸塁F_TEXT鏍煎紡浠ユ櫘閫氭枃鏈殑褰㈠紡鏀懼湪鍓創鏉夸笂銆?

路 AFX_STACK_DUMP_TARGET_BOTH 鍚屾椂灝嗚緭鍑哄彂閫佸埌鍓創鏉垮拰TRACE瀹忋?

路 AFX_STACK_DUMP_TARGET_ODS 閫氳繃Win32鍑芥暟OutputDebugString()鐩存帴灝嗚緭鍑哄彂閫佺殑璋冭瘯鍣ㄣ傚鏋滆繛鎺ヤ簡璋冭瘯鍣紝瀹冨湪璋冭瘯鐗堟湰鍜屽彂琛岀増鏈腑閮戒細浜х敓璋冭瘯鍣ㄨ緭鍑恒侫FX_STACK_DUMP_TARGET_ODS 閫氬父鍒拌揪璋冭瘯鍣紙濡傛灉榪炴帴浜嗚皟璇曞櫒錛夛紝騫朵笖涓嶈兘琚噸瀹氬悜銆?

璇存槑錛?br />
榪欎釜鍏ㄥ眬鍑芥暟鍙互琚敤鏉ョ敓鎴愬綋鍓嶆爤鐨勪竴涓槧璞°備笅闈㈢殑渚嬪瓙鍙嶆槧浜哅FC瀵硅瘽妗嗗簲鐢ㄧ▼搴忎腑鎸夐挳澶勭悊鍑芥暟璋冪敤AfxDumpStack鎵浜х敓鐨勫崟琛岃皟璇曡緭鍑猴細

=== begin AfxDumpStack output ===
...

BFF928E0: WINDOWS\SYSTEM\KERNERL32.DLL! UTUnRegister + 2492 bytes

=== end AfxDumpStack() output ===

BFF928E0錛?鏈榪戜竴嬈″嚱鏁拌皟鐢ㄧ殑榪斿洖鍦板潃

WINDOWS\SYSTEM\KERNEL32.DLL! 鍖呭惈鍑芥暟璋冪敤鐨勬ā鍧楃殑瀹屾暣璺緞鍚?

UTUnRegister 璋冪敤鐨勫嚱鏁板師鍨?

+ 2492 bytes 浠ュ瓧鑺備負鍗曚綅鐨勪粠鍑芥暟鍘熷瀷鍦板潃錛堣繖涓緥瀛愪腑涓篣TUnregister錛夊埌榪斿洖鍦板潃錛堣繖涓緥瀛愪腑涓築EF928E0錛夌殑鍋忕Щ

AfxDumpStack鍦∕FC搴撶殑璋冭瘯鐗堟湰鍜岄潪璋冭瘯鐗堟湰涓兘鍙互浣跨敤銆備絾鏄紝榪欎釜鍑芥暟閫氬父鏄潤鎬佽繛鎺ョ殑錛屽嵆浣夸綘鐨勫彲鎵ц鏂囦歡浠ュ叡浜獶LL鐨勬柟寮忎嬌鐢∕FC銆?br />
鍦ㄥ叡浜簱鐨勫疄鐜頒腑錛屽彲浠ュ湪MFCS42.LIB搴擄紙浠ュ強瀹冪殑鍙樺寲褰㈠紡錛変腑鎵懼埌榪欎釜鍑芥暟銆?br />
涓轟簡鎴愬姛鍦頒嬌鐢ㄨ繖涓嚱鏁幫細
聽聽聽聽聽聽聽 路 鍦ㄤ綘鐨勮礬寰勪腑蹇呴』鍖呭惈IMAGEHLP.DLL鏂囦歡銆傚鏋滀綘娌℃湁榪欎釜DLL鏂囦歡錛岃繖涓嚱鏁頒細鏄劇ず涓鏉¢敊璇俊鎭侷MAGEHLP.DLL鏄殢Win32 SDK鍜學indows涓璧峰彂鍞殑鍙暎鍙戠殑DLL銆傚湪C:\[Windows]\system[32]涓嬫煡鎵懼畠銆傛湁鍏矷MAGEHLP鎻愪緵鐨勫嚱鏁伴泦鐨勪粙緇嶅彲浠ュ弬鑰冣滃彲縐繪鐨勫彲鎵ц鏂囦歡鐨勬搷浣溾濅竴鏂囥?

聽聽聽聽聽聽聽 路 鍏鋒湁鏍堟鏋剁殑妯″潡蹇呴』鍖呭惈璋冭瘯淇℃伅銆傚鏋滃畠涓嶅寘鍚皟璇曚俊鎭紝榪欎釜鍑芥暟浠嶇劧浼氱敓鎴愬鏍堢殑璺熻釜錛屼絾鏄繖縐嶈窡韙槸寰堢畝鐣ョ殑銆?/p>

AfxEnableMemoryTracking

BOOL AfxEnableMemoryTracking(BOOL bTrack); // 鎵撳紑鎴栧叧闂唴瀛樿窡韙?br />
榪斿洖鍊鹼細浠ュ墠鐨勮窡韙厑璁哥姸鎬佽緗?br />
鍙傛暟錛?bTrack 灝嗚繖涓艱涓篢RUE鏃跺氨鎵撳紑浜嗗唴瀛樿窡韙壒鎬с傚鏋滄槸FALSE鍒欏皢鍏跺叧闂?

璇存槑錛?br />璇婃柇鍐呭瓨璺熻釜閫氬父鍦∕FC鐨勮皟璇曠増鏈腑鏈夋晥銆傚埄鐢ㄨ繖涓嚱鏁板浣犵殑浠g爜涓紜垎閰嶅唴瀛樼殑閮ㄥ垎紱佹璺熻釜銆?br />鏈夊叧AfxEnableMemoryTracking鐨勬洿澶氫俊鎭鍙傝銆奦isual C++紼嬪簭鍛樻寚鍗椼嬩腑鐨勨淢FC璋冭瘯鏀寔鈥濄?br />娉ㄦ剰錛氳繖涓嚱鏁頒粎鍦∕FC鐨勮皟璇曠増鏈腑璧蜂綔鐢ㄣ?/p>

AfxIsMemoryBlock

BOOL AfxIsMemoryBlock( const void* p, UINT nBytes, LONG* plRequestNumber = NULL ); // 媯楠屼竴涓唴瀛樺潡鏄惁琚紜殑鍒嗛厤

榪斿洖鍊鹼細
濡傛灉鍐呭瓨鍧楁槸鐜板湪鍒嗛厤鐨勶紝騫朵笖鍏墮暱搴︿篃鏄紜殑錛屽垯榪斿洖闈為浂鍊箋傚惁鍒欎負0銆?br />
鍙傛暟錛?p 鎸囧悜灝嗚嫻嬭瘯鐨勫唴瀛樺潡銆?
nBytes 鍖呭惈浜嗕互瀛楄妭涓哄崟浣嶇殑鍐呭瓨鍧楅暱搴︺?
plRequestNumber 鎸囧悜涓涓暱鏁存暟錛屽畠灝嗚璁句負鍐呭瓨鍧楃殑鍒嗛厤緋誨垪鍙風爜銆傜敱plRequestNumber鎸囧悜鐨勮繖涓彉閲忓彧鏈夊綋AfxIsMemoryBlock榪斿洖闈為浂鍊兼椂鎵嶄細琚~鍏呫?

璇存槑錛?br />媯嫻嬩竴涓唴瀛樺湴鍧錛岀‘淇濆畠浠h〃浜嗕竴涓敱new鐨勮瘖鏂増鏈垎閰嶇殑媧誨姩鐨勫唴瀛樺潡銆傚畠鍚屾椂涔熸楠屾寚瀹氱殑澶у皬鏄惁涓庢渶鍒濆垎閰嶇殑澶у皬鐩哥銆傚鏋滆繖涓嚱鏁拌繑鍥為潪闆跺鹼紝鍒嗛厤鐨勭郴鍒楀彿鐮佸皢鍦╬lRequestNumber涓繑鍥炪傝繖涓彿鐮佷唬琛ㄤ簡榪欎釜鍐呭瓨鍧楃浉瀵逛簬鍏跺畠鎵鏈夊唴瀛樺垎閰嶇殑欏哄簭銆?br />
紺轟緥錛?br />// AfxIsMemoryBlock鐨勪緥瀛?br />CAge* pcage = new CAge( 21 ); // CAge is derived from CObject.
ASSERT( AfxIsMemoryBlock( pcage, sizeof( CAge ) ) )

AfxIsValidString

BOOL AfxIsValidString( LPCSTR lpsz, int nLength = -1 ); // 媯楠屼竴涓瓧絎︿覆鎸囬拡鏄惁鏈夋晥


濡傛灉緇欏畾鐨勬寚閽堟寚鍚戜竴涓粰瀹氬ぇ灝忕殑瀛楃涓插垯榪斿洖闈為浂鍊鹼紝鍚﹀垯榪斿洖0銆?br />
鍙傛暟錛?lpsz 瑕佹祴璇曠殑鎸囬拡銆?
nLength 鎸囧畾瑕佹祴璇曠殑瀛楃涓茬殑闀垮害錛屼互瀛楄妭涓哄崟浣嶃傚鏋滃間負錛?錛岃〃紺哄瓧絎︿覆鏄互null緇撳熬鐨勩?

璇存槑錛?br />浣跨敤榪欎釜鍑芥暟鏉ョ‘瀹氭寚鍚戝瓧絎︿覆鐨勬寚閽堟槸鍚︽湁鏁堛?/p>

AfxSetAllocHook

AFX_ALLOC_HOOK AfxSetAllocHook( AFX_ALLOC_HOOK pfnAllocHook ); // 鍏佽鍦ㄦ瘡嬈¤繘琛屽唴瀛樺垎閰嶄簨璋冪敤涓涓嚱鏁?br />
濡傛灉浣犲笇鏈涘厑璁稿垎閰嶏紝鍒欒繑鍥為潪闆跺箋傚惁鍒欒繑鍥?銆?br />
鍙傛暟錛?pfnAllocHook 鎸囧畾瑕佽皟鐢ㄧ殑鍑芥暟鍚嶃傚弬鑰冨叧浜庡垎閰嶅嚱鏁扮殑鍘熷瀷鐨勮鏄庛?

璇存槑錛?br />榪欎釜鍑芥暟璁劇疆涓涓挬瀛愶紝浣挎瘡嬈″垎閰嶅唴瀛樹箣鍓嶉兘浼氳皟鐢ㄤ竴涓寚瀹氱殑鍑芥暟銆傚井杞熀紜綾誨簱涓殑璋冭瘯鍐呭瓨鍒嗛厤鍑芥暟鑳藉璋冪敤涓涓敤鎴峰畾涔夌殑閽╁瓙鍑芥暟錛屼嬌鐢ㄦ埛鑳藉鐩戞帶鍐呭瓨鍒嗛厤騫舵帶鍒舵槸鍚﹀厑璁稿垎閰嶅唴瀛樸傚唴瀛樺垎閰嶇殑閽╁瓙鍑芥暟鐨勫師鍨嬪涓嬶細
BOOL AFXAPI AllocHook( size_t nSize, BOOL bObject, LONG lRequestNumber );

nSize 璁″垝鍒嗛厤鐨勫唴瀛樺ぇ灝忋?
bObject 濡傛灉鏄涓轟竴涓狢Object媧劇敓綾誨璞″垎閰嶅唴瀛樺垯涓篢RUE錛屽惁鍒欎負FALSE銆?
lRequestNumber 鍐呭瓨鍒嗛厤鐨勭郴鍒楀彿銆?br />娉ㄦ剰錛孉FXAPI璋冪敤綰﹀畾鎰忓懗鐫璋冪敤鑰呭繀欏諱粠鏍堜腑娓呴櫎鍙傛暟銆?/p>

AfxDoForAllClasses

void AFXAPI AfxDoForAllClasses(
void (* pfn)(const CRuntimeClass* pClass, void* pContext),
void* pContext
); //瀵規墍鏈変粠CObject緇ф壙鐨勬敮鎸佽繍琛屾椂媯鏌ョ殑綾繪墽琛屼竴涓壒瀹氱殑鍔熻兘

鍙傛暟錛?pfn 鎸囧悜姣忎釜綾婚兘浼氳皟鐢ㄧ殑閲嶅鍑芥暟銆傝繖涓弬鏁版槸涓涓寚鍚慍RuntimeClass瀵硅薄鐨勬寚閽堜互鍙婃寚鍚戣皟鐢ㄨ呮彁渚涚粰鍑芥暟鐨勯檮鍔犳暟鎹殑void鎸囬拡銆?
pContext 鎸囧悜璋冪敤鑰呮彁渚涚粰閲嶅鍑芥暟鐨勫彲閫夋暟鎹殑鎸囬拡銆傝繖涓寚閽堝彲浠ユ槸NULL銆?

璇存槑錛?br />鍦ㄥ簲鐢ㄧ▼搴忕殑鍐呭瓨絀洪棿涓紝涓烘墍鏈変粠CObject緇ф壙鐨勫彲涓茶鍖栫殑綾昏皟鐢ㄦ寚瀹氱殑閲嶅鍑芥暟銆備粠CObject緇ф壙鐨勫彲涓茶鍖栫殑綾繪槸浠ECLARE_SERIAL瀹忕戶鎵跨殑銆傛瘡嬈¤皟鐢ㄦ寚瀹氱殑閲嶅鍑芥暟鏃訛紝閮戒細灝嗗湪pContext涓紶閫掔粰AfxDoForAllClasses鐨勬寚閽堜紶閫掔粰閲嶅鍑芥暟銆?br />娉ㄦ剰錛氳繖涓嚱鏁頒粎鍦∕FC鐨勮皟璇曠増鏈腑璧蜂綔鐢ㄣ?/p>

AfxDoForAllObjects

void AfxDoForAllObjects(
void (* pfn)(CObject* pObject, void* pContext),
void* pContext
); // 瀵規墍鏈変粠CObject緇ф壙鐨勭敤new鍒嗛厤鍐呭瓨瀵硅薄鎵ц涓涓寚瀹氱殑鍔熻兘

鍙傛暟錛歱fn 鎸囧悜姣忎釜瀵硅薄閮芥墽琛岀殑閲嶅鍑芥暟銆傚嚱鏁扮殑鍙傛暟鏄竴涓寚鍚慍Object鐨勬寚閽堜互鍙婃寚鍚戣皟鐢ㄨ呮彁渚涚粰鍑芥暟鐨勯檮鍔犳暟鎹殑void鎸囬拡銆?
pContext 鎸囧悜璋冪敤鑰呮彁渚涚粰鍑芥暟鐨勯檮鍔犳暟鎹殑鎸囬拡銆傝繖涓寚閽堝彲浠ヤ負NULL銆?

璇存槑錛?br />瀵規瘡涓敤new鍒嗛厤鐨勪粠CObject緇ф壙鐨勫璞℃墽琛屾寚瀹氱殑閲嶅鍑芥暟銆傛爤銆佸叏灞鍙橀噺鎴栧祵鍏ュ璞′笉鍖呮嫭鍦ㄥ唴銆傛瘡嬈¤皟鐢ㄦ寚瀹氱殑閲嶅鍑芥暟鏃訛紝閮戒細灝嗗湪pContext涓紶閫掔粰AfxDoForAllObjects鐨勬寚閽堜紶閫掔粰閲嶅鍑芥暟銆?br />娉ㄦ剰錛氳繖涓嚱鏁頒粎鍦∕FC鐨勮皟璇曠増鏈腑璧蜂綔鐢ㄣ?br />
from:http://hi.baidu.com/ice_water/blog/item/7cef04f73475c42a720eec98.html



鎴戦 2010-11-25 15:06 鍙戣〃璇勮
]]>
CRichEditCtrl浣跨敤澶у叏http://m.shnenglu.com/kyelin/archive/2010/11/03/132300.html鎴戦鎴戦Wed, 03 Nov 2010 07:51:00 GMThttp://m.shnenglu.com/kyelin/archive/2010/11/03/132300.htmlhttp://m.shnenglu.com/kyelin/comments/132300.htmlhttp://m.shnenglu.com/kyelin/archive/2010/11/03/132300.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/132300.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/132300.htmlrichedit 甯歌浣跨敤闂
涓.甯歌闂
a.鍙互緙栬瘧,涓嶈兘鎵ц鐨?/p>


鍦ㄩ渶瑕佸湪鐩稿簲鐨勫璇濇涓姞涓奍nitInstance錛坴oid錛夊嚱鏁頒腑娣誨姞

AfxInitRichEdit();

b.鍗囩駭榛樿鐨凴iched鐗堟湰(榛樿鐨勬湁涓浜沚ug)錛屽
鍙湪InitInstance涓坊鍔?br />LoadLibrary("RICHED20.DLL")
鏈鍚庢敞鎰?FreeLibrary

濡傛灉鏄疌RichEditView鍩虹被鐨勫彲鐢?br />BOOL CXXXXXXView::PreCreateWindow(CREATESTRUCT& cs)
{
//瑁呭叆rich edit version 2.0
if (LoadLibraryA("RICHED20.DLL") == NULL)
{
AfxMessageBox(_T("Fail to load \"riched20.dll\"."),MB_OK | MB_ICONERROR);
PostMessage(WM_QUIT,0,0);
return FALSE;
}

m_strClass = RICHEDIT_CLASSA;//for 2.0 class

return CRichEditView::PreCreateWindow(cs);
}

c.鏈鍚庤拷鍔犺
richeditctrl.SetSel(-1, -1);
richeditctrl.ReplaceSel( (LPCTSTR)str );

d.瀛楁暟闄愬埗
CRichEditCtrl::LimitText(long nChars)

e.鎹㈣鍒囨崲
CRichEditView鐨凮nInitialUpdate()鍑芥暟涓姞鍏ヤ笅闈袱鍙ワ細
m_nWordWrap = WrapNone;
WrapChanged();
WrapChanged瀹為檯涓婁篃鏄皟鐢?br />ctrl.SetTargetDevice(NULL, 1); //m_nWordWrap == WrapNone
ctrl.SetTargetDevice(NULL, 0); //m_nWordWrap == WrapToWindow
榪樻湁涓嶅父鐢ㄧ殑 m_nWordWrap == WrapToTargetDevice
ctrl.SetTargetDevice(m_dcTarget, GetPrintWidth());
濡傛灉鏄湪Dialog涓紝鍙嬌鐢⊿etTargetDevice錛屾敞鎰忓湪灞炴ч噷闈㈠姞涓妛ant return

f.鏈夋椂鍊欎笉甯屾湜甯︽牸寮忕殑鏁版嵁綺樿創錛屽彲閫氳繃PasteSpecial閫夋嫨鎬х矘璐?br />pmyRichEditCtrl->PasteSpecial(CF_TEXT);

g.闅忕潃杈撳叆闅忕潃鑷姩婊氬姩鏉℃粴鍔ㄥ埌鏈鍚庝竴琛?br />int nFirstVisible = pmyRichEditCtrl->GetFirstVisibleLine();
if (nFirstVisible > 0)
{
聽聽聽 pmyRichEditCtrl->LineScroll(-nFirstVisible, 0);
}
鎴?br />m_cRichEdit.PostMessage(WM_VSCROLL, SB_BOTTOM,0);


h.璁劇疆UNDO鐨勬鏁?鍙兘鐢ㄥ湪RICHED20浠ヤ笂錛屽嵆榛樿涓嶆敮鎸侊紝蹇呴』鍗囩駭)
SendMessage(EM_SETTEXTMODE,TM_MULTILEVELUNDO,0);
TM_MULTILEVELUNDO 鏀寔澶氬彇娑?榛樿鍊?.鍙氳繃EM_SETUNDOLIMIT璁劇疆鏈澶ф鏁?
SendMessage(EM_SETUNDOLIMIT,100,0);

i.鍝嶅簲OnChange
EM_SETEVENTMASK 璁劇疆 ENM_CHANGE
long lMask = GetEventMask();
lMask |= ENM_CHANGE;
lMask &= ~ENM_PROTECTED;
SetEventMask(lMask);

j.璁劇疆鍙
CRichEditCtrl::SetReadOnly( BOOL bReadOnly = TRUE );
閫氳繃璁劇疆PROTECTED瀹炵幇閫変腑鐨勬枃鏈彧璇伙紝鍙傝
http://www.codeguru.com/Cpp/controls/richedit/article.php/c2401/


浜?鍑芥暟搴旂敤
a.璁劇疆瀛椾綋錛堜富瑕佹槸閫氳繃SetSelectionCharFormat錛?br />CHARFORMAT cf;
rich.GetSelectionCharFormat(cf);
cf.dwMask|=CFM_BOLD;
cf.dwEffects|=CFE_BOLD;//璁劇疆綺椾綋錛屽彇娑堢敤cf.dwEffects&=~CFE_BOLD;
cf.dwMask|=CFM_ITALIC;
cf.dwEffects|=CFE_ITALIC;//璁劇疆鏂滀綋錛屽彇娑堢敤cf.dwEffects&=~CFE_ITALIC;
cf.dwMask|=CFM_UNDERLINE;
cf.dwEffects|=CFE_UNDERLINE;//璁劇疆鏂滀綋錛屽彇娑堢敤cf.dwEffects&=~CFE_UNDERLINE;
cf.dwMask|=CFM_COLOR;
cf.crTextColor = RGB(255,0,0);//璁劇疆棰滆壊
cf.dwMask|=CFM_SIZE;
cf.yHeight =200;//璁劇疆楂樺害
cf.dwMask|=CFM_FACE;
strcpy(cf.szFaceName ,_T("闅朵功"));//璁劇疆瀛椾綋
rich.SetSelectionCharFormat(cf);

b.璁劇疆瀛椾綋鐨勮闂磋窛
瑕佺敤richedit2.0浠ヤ笂
璇曡瘯
PARAFORMAT2 pf;
pf.cbSize = sizeof(PARAFORMAT2);
pf.dwMask = PFM_NUMBERING | PFM_OFFSET;
pf.wNumbering = PFN_BULLET;//娉ㄦ剰PFM_NUMBERING
pf.dxOffset = 10;
VERIFY(SetParaFormat(pf));
甯哥敤鐨刣wMask鏈?br />PFM_NUMBERING 鎴愬憳 wNumbering 鎵嶈搗浣滅敤錛岄」鐩鍙鳳紝榛樿鐢≒FN_BULLET
2 浣跨敤闃挎媺浼暟瀛?(1, 2, 3, ...).聽
3 浣跨敤灝忓啓瀛楁瘝 (a, b, c, ...).聽
4 浣跨敤澶у啓瀛楁瘝 (A, B, C, ...).聽
5 浣跨敤灝忓啓緗楅┈鏁板瓧 (i, ii, iii, ...).聽
6 浣跨敤澶у啓緗楅┈鏁板瓧 (I, II, III, ...).聽
7 鑷畾涔夛紝瀛楃瑙佹垚鍛?wNumberingStart.聽
PFM_OFFSET 鎴愬憳 dxOffset 鎵嶈搗浣滅敤錛岀緝榪涳紝鍗曚綅twips
PFM_STARTINDENT 鎴愬憳 dxStartIndent 鎵嶈搗浣滅敤錛岄琛岀緝榪?br />PFM_SPACEAFTER 鎴愬憳 dySpaceAfter 鎵嶈搗浣滅敤錛屾闂磋窛
PFM_LINESPACING 鎴愬憳 dyLineSpacing 鎵嶈搗浣滅敤錛岃闂磋窛

c.璁劇疆CRichEditCtrl(2.0)鑳屾櫙閫忔槑
long style = ::GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE);
style &= WS_EX_TRANSPARENT;
::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, style);
鎴?CreateEx錛岀劧鍚庢妸WS_EX_TRANSPARENT鏍峰紡鍔犱笂

e.寰楀埌鍐呭鏈変笁縐?br />1)GetWindowText
2)浣跨敤EM_GETTEXTEX
GETTEXTEX gt;
gt.cb = 200;
gt.flags = GT_DEFAULT;
gt.codepage = CP_ACP ;
gt.lpDefaultChar = NULL;
gt.lpUsedDefChar = NULL;
SendMessage(EM_GETTEXTEX,(WPARAM)&gt,(LPARAM)text);
3)StreamOut(涓昏鐢ㄤ簬RTF絳夋牸寮忚緭鍑?
static DWORD CALLBACK
MyStreamOutCallback(DWORD dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{
聽聽聽 CFile* pFile = (CFile*) dwCookie;

聽聽聽 pFile->Write(pbBuff, cb);
聽聽聽 *pcb = cb;

聽聽聽 return 0;
}


聽聽聽 CFile cFile(TEXT("myfile.rtf"), CFile::modeCreate|CFile::modeWrite);
聽聽聽 EDITSTREAM es;
聽聽聽 es.dwCookie = (DWORD) &cFile;//璁劇疆鐢ㄤ緥鍙傛暟,浠ヤ究鍥炶皟鍑芥暟璋冪敤
聽聽聽 es.pfnCallback = MyStreamOutCallback;
聽聽聽 pmyRichEditCtrl->StreamOut(SF_RTF, es);
璇誨叆鍙互姝ょ被鎺紝SetWindowText,EM_SETTEXTEX,StreamIn

f.鏌ユ壘瀛楃涓?br />FINDTEXTEX ft;
ft.chrg.cpMin = 0;
ft.chrg.cpMax = -1;
ft.lpstrText = "|";
long lPos = FindText(0, &ft);

濡傛灉瑕佺戶緇煡鎵撅紝淇敼cpMin,濡?br />int nCount = 0;
do
{
long lPos = GetRichEditCtrl().FindText(0, &ft);
if( -1 == lPos) break;
ft.chrg.cpMin = lPos + strlen(ft.lpstrText);
++nCount;
}while(TRUE);

g.浠tml鏍煎紡淇濆瓨
鐩墠鍋氭硶鍙厛杞負RTF鏍煎紡錛屽啀閫氳繃RTF-to-HTML Converter

http://www.codeguru.com/Cpp/controls/richedit/conversions/article.php/c5377/

h.閲嶈澆OnProtected鍑芥暟寰楀埌瀵瑰簲鐨勬秷鎭紝濡傜矘璐寸瓑
void CMYichEditorView::OnProtected(NMHDR* pNMHDR, LRESULT* pResult)
{
ENPROTECTED* pEP = (ENPROTECTED*)pNMHDR;

switch (pEP->msg) {
case WM_KEYDOWN://鎸夐敭錛屽垽鏂璸EP->wParam
case WM_PASTE://綺樿創
case WM_CUT://鍓垏
case EM_SETCHARFORMAT:
default:
聽聽 break;
};

*pResult = FALSE;
}

涓?鑱婂ぉ甯哥敤聽
a.LINK 閾炬帴鍔熻兘
1.聽聽 LoadLibrary(_T("Riched20.dll"));
2. 鍒涘緩RichEdit2.0鎺т歡
CreateEx(0, _T("RichEdit20A"), NULL, WS_CHILD|WS_VISIBLE|WS_VSCROLL|WS_TABSTOP
|ES_READONLY|ES_WANTRETURN|ES_MULTILINE,
聽聽聽聽聽聽聽聽聽聽 rect.left, rect.top, cx, cy,
聽聽 pParentWnd->m_hWnd, (HMENU)nID, NULL);
3. 璁懼畾閫変腑鐨勬枃瀛椾負閾炬帴鏄劇ず
CHARFORMAT2 cf2;
ZeroMemory(&cf2, sizeof(CHARFORMAT2));//
cf2.cbSize = sizeof(CHARFORMAT2);
cf2.dwMask = CFM_LINK;
cf2.dwEffects |= CFE_LINK;
m_cRichEdit.SendMessage(EM_SETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf2);
4.鏀寔閾炬帴鐨勭偣鍑誨搷搴?br />m_cRichEdit.SetEventMask(ENM_LINK);
5.鍝嶅簲閾炬帴鐨勭偣鍑籈N_LINK

BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)
ON_NOTIFY_REFLECT(EN_LINK,OnURL)
END_MESSAGE_MAP()
......

void CMyRichEdit::OnURLClick(NMHDR *pNmhdr, LRESULT *pResult)
{
TCHAR LinkChar[512];
ENLINK *pLink = (ENLINK *)pNmhdr;
if (pLink->msg == WM_LBUTTONUP)
{
SetSel(penLink->chrg);//榪欐槸閾炬帴鐨勬枃瀛楄寖鍥?br />long Res = GetSelText((char *)LinkChar);//榪欐槸閾炬帴鏂囧瓧
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //鍚庨潰鏄綘鐨勫鐞嗚繃紼?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ......
聽聽聽聽聽聽聽聽聽 }
}

b.鎻掑叆浣嶅浘
http://www.codeguru.com/Cpp/controls/richedit/article.php/c2417/
http://www.codeguru.com/Cpp/controls/richedit/article.php/c5383/

鑷畾涔夊湪RichEdit涓彃鍏ュ璞$殑鍥炬爣
http://www.blogcn.com/user3/jiangsheng/blog/1319738.html
鏂規硶鍩烘湰鍚孠nowledge Base鏂囩珷Q220844 HOWTO: Insert a Bitmap Into an RTF Document Using the RichEdit Control
鍙槸鍦ㄦ渶鍚庢彃鍏ヤ箣鍓嶈皟鐢ㄤ竴涓婭OleCache::SetData,鐢ㄤ竴涓狧GLOBAL浣滀負鍙傛暟錛孒GLOBAL閲岄潰鐨勬暟鎹槸涓涓狹ETAFILEPICT緇撴瀯錛屽寘鍚嚜宸辨彁渚涚殑鍥劇墖

浣跨敤CRichEditView::InsertFileAsObject灝卞彲浠ユ彃鍏ュ浘鍍忋俈C++甯︽湁涓涓緥瀛怶ordPad銆?br />鍙﹀鍙互鍙傝冣淚nsert any HBITMAP (Bitmap) in your RichEdit Control鈥?http://www.codeguru.com/richedit/richeditrc.html)銆?/p>

c.鏄劇ずGIF鍔ㄧ敾
甯哥敤鐨勬槸閫氳繃qq鐨刬mageole.dll(涔熸湁鐢℅if89.dll鐨?
http://www.xiaozhou.net/cooldog/blogview.asp?logID=82
http://www.codeproject.com/richedit/AnimatedEmoticon.asp

鍦╮ichedit鎺т歡涓彃鍏ュ姩鎬丟IF (Native C++鐗?
http://blog.joycode.com/jiangsheng/archive/2004/12/15/41209.aspx

d.IRichEditOleCallback鐨勪嬌鐢?br />http://61.186.252.131/Expert/topic/905/905844.xml?temp=.8379022

綾諱技 MSN 淇℃伅鍙戦佹鐨勫埗浣?涓?
http://www.vckbase.com/document/viewdoc/?id=1087
鍐呭鍖呭惈錛氬疄鐜板彸閿彍鍗曪紝鍥劇墖鎻掑叆錛岃鍙?鍐欏叆RTF鏍煎紡瀛楃涓?/p>

鑷畾涔?CRichEditCtrl 鎺т歡
http://www.vckbase.com/document/viewdoc/?id=328
鍐呭鍖呭惈錛氶紶鏍囧彸閿秷鎭紝娑堟伅鏄犲皠錛屽瓧浣撳彉鎹?/p>

PS.richedit鎺т歡鍗囩駭鍒?.0鍚庯紝鍏堟妸瀛椾綋璁句負妤蜂綋錛岃緭鍏ユ眽瀛楁病鏈夐棶棰橈紝浣嗚緭鍏ュ瓧姣嶆椂錛屽瓧姣嶈嚜鍔ㄨ煩杞負Arial瀛椾綋錛岃?.0鍗存病鏈夎繖涓枃棰橈紝浠嶇劧鏄敤妤蜂綋鏄劇ず瀛楁瘝
鏄竴涓笓闂ㄧ殑璁捐 Dual-font, Smart font apply, 鍙傝 http://61.186.252.131/Expert/topic/913/913807.xml?temp=.3753778

涓嶈兘鏄劇ず鍥劇墖絳夊叾浠朞LE瀵硅薄

MFC鎻愪緵鐨凜RichEditCtrl娌℃湁鎻愪緵鐩存帴鏄劇ず鍥劇墖絳塐LE瀵硅薄鐨勫睘鎬ф垨鏂規硶璁劇疆錛屼絾鏄彁渚涗簡涓涓帴鍙etOLECallback( IRichEditOleCallback* pCallback );
瑕佽CRichEditCtrl鏄劇ず鍥劇墖錛屽氨寰楀湪IRichEditOleCallback涓婁笅鍔熷か銆?br />IRichEditOleCallback鏄痺indows涓殑鎺ュ彛錛屽畠鐨勫畾涔夊涓嬶細
ContextSensitiveHelp:
聽聽聽 閫氳繃璇ユ柟娉曢氱煡搴旂敤紼嬪簭瀹冨皢浠ヤ笂涓嬫枃鍏寵仈鏂瑰紡璋冨害甯姪銆?br />DeleteObject:
聽聽聽 閫氳繃璇ユ柟娉曞彂鍑洪氱煡錛氫竴涓璞″嵆灝嗕粠RichEdit鎺т歡涓垹闄?br />GetClipboardData:
聽聽聽 閫氳繃璇ユ柟娉曞厑璁窻ichEdit鐨勫鎴風錛堣皟鐢ㄧ▼搴忥級鎻愪緵鑷繁鐨勭矘璐村璞?br />GetContextMenu:
聽聽聽 閫氳繃璇ユ柟娉曞悜搴旂敤紼嬪簭鎻愬嚭閫氳繃榧犳爣鍙抽敭浜嬩歡鏉ヨ幏鍙栦笂涓嬫枃鑿滃崟鐨勮姹?br />GetDragDropEffect:
聽聽聽 閫氳繃璇ユ柟娉曞厑璁窻ichEdit鐨勫鎴風錛堣皟鐢ㄧ▼搴忥級璁劇疆鎷栧姩鎿嶄綔鐨勬晥鏋?br />GetInPlaceContext:
聽聽 閫氳繃璇ユ柟娉曟彁渚涗簡搴旂敤紼嬪簭綰у拰鏂囨。綰ф帴鍙o紝浠ュ強蹇呰鐨勬敮鎸両n-place嬋媧葷殑淇℃伅
GetNewStrorage:
聽聽聽 閫氳繃璇ユ柟娉曞瓨鍌ㄤ粠綺樿創鏉挎垨瓚呮枃鏈祦(RTF)涓鍙栫殑鏂板璞?br />QueryAcceptData:
聽聽聽 閫氳繃璇ユ柟娉曞喅瀹氬湪綺樿創鎿嶄綔鎴栨嫋鏀炬搷浣滀腑寮曞叆鐨勬暟鎹槸鍚﹀彲浠ヨ鎺ュ彈銆?br />QueryInsertObject:
聽聽聽 閫氳繃璇ユ柟娉曞悜搴旂敤紼嬪簭璇㈤棶鏌愪釜瀵硅薄鏄惁鍙互琚彃鍏?br />ShowContainerUI:
聽聽聽 閫氳繃璇ユ柟娉曞憡鐭ュ簲鐢ㄧ▼搴忔槸鍚︽樉紺鴻嚜宸辯殑鎿嶄綔鐣岄潰

澶ц嚧浜嗚В浜咺RichEditOleCallback鎺ュ彛鍚庯紝灝卞簲璇ユ竻妤氾紝瑕佹樉紺哄浘鐗囩瓑ole瀵硅薄錛岃嚦灝戝簲璇ュ疄鐜癎etNewStorage鏂規硶錛屽洜涓鴻鏂規硶鏄瓨鍌╫le瀵硅薄鐨勬帴鍙f柟娉曘?/p>

浠ヤ笅鏄帴鍙e0鏄庣殑浠g爜錛?br />聽聽聽 interface IExRichEditOleCallback;聽聽 // forward declaration (see below in this header file)

聽聽 IExRichEditOleCallback* m_pIRichEditOleCallback;
聽聽 BOOL m_bCallbackSet;
聽聽
聽聽
聽聽 interface IExRichEditOleCallback : public IRichEditOleCallback
聽聽 {
聽聽 public:
聽聽聽聽聽聽 IExRichEditOleCallback();
聽聽聽聽聽聽 virtual ~IExRichEditOleCallback();
聽聽聽聽聽聽 int m_iNumStorages;
聽聽聽聽聽聽 IStorage* pStorage;
聽聽聽聽聽聽 DWORD m_dwRef;

聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE GetNewStorage(LPSTORAGE* lplpstg);
聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void ** ppvObject);
聽聽聽聽聽聽 virtual ULONG STDMETHODCALLTYPE AddRef();
聽聽聽聽聽聽 virtual ULONG STDMETHODCALLTYPE Release();
聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE GetInPlaceContext(LPOLEINPLACEFRAME FAR *lplpFrame,
聽聽聽聽聽聽聽聽聽聽 LPOLEINPLACEUIWINDOW FAR *lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE ShowContainerUI(BOOL fShow);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE DeleteObject(LPOLEOBJECT lpoleobj);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT FAR *lpcfFormat,
聽聽聽聽聽聽聽聽聽聽 DWORD reco, BOOL fReally, HGLOBAL hMetaPict);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL fEnterMode);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE GetClipboardData(CHARRANGE FAR *lpchrg, DWORD reco, LPDATAOBJECT FAR *lplpdataobj);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect);
聽聽聽聽聽聽聽 virtual HRESULT STDMETHODCALLTYPE GetContextMenu(WORD seltyp, LPOLEOBJECT lpoleobj, CHARRANGE FAR *lpchrg,
聽聽聽聽聽聽聽聽聽聽 HMENU FAR *lphmenu);
聽聽 };

-----------------------------------------------------------------------

娉細
聽聽聽聽聽聽聽 m_edit1浠h〃ID涓篒DC_EDIT1鐨凜Edit鎺т歡鐨刢ontrol綾誨瀷鐨勫彉閲?br />聽聽聽聽聽聽聽 m_richedit1浠h〃ID涓篒DC_RICHEDIT1鐨凜RichEditCtrl鎺т歡鐨刢ontrol綾誨瀷鐨勫彉閲?/p>


--------------------------------------------------------------------------------
1.璁劇疆edit鍙灞炴?/p>

聽聽聽 鏂規硶涓錛?br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 m_edit1.SetReadOnly(TRUE);
聽聽聽 鏂規硶浜岋細
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 ::SendMessage(m_edit1.m_hWnd, EM_SETREADONLY, TRUE, 0);


--------------------------------------------------------------------------------
2.鍒ゆ柇edit涓厜鏍囩姸鎬佸茍寰楀埌閫変腑鍐呭(richedit鍚屾牱閫傜敤)

聽聽聽聽聽聽聽 int nStart, nEnd;
聽聽聽聽聽聽聽 CString strTemp;

聽聽聽聽聽聽聽 m_edit1.GetSel(nStart, nEnd);
聽聽聽聽聽聽聽 if(nStart == nEnd)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 strTemp.Format(_T("鍏夋爣鍦?d"), nStart);
聽聽聽聽聽聽聽聽聽聽聽 AfxMessageBox(strTemp);
聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽 else
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 //寰楀埌edit閫変腑鐨勫唴瀹孤犅犅?
聽聽聽聽聽聽聽聽聽聽聽 m_edit1.GetWindowText(strTemp);
聽聽聽聽聽聽聽聽聽聽聽 strTemp = strTemp.Mid(nStart) - strTemp.Mid(nEnd);
聽聽聽聽聽聽聽聽聽聽聽 AfxMessageBox(strTemp);
聽聽聽聽聽聽聽 }
聽聽聽 娉細GetSel鍚庯紝濡傛灉nStart鍜宯End錛岃〃鏄庡厜鏍囧浜庢煇涓綅緗紙鐩磋鏉ョ湅灝辨槸鍏夋爣鍦ㄩ棯鍔級錛?br />聽聽聽聽聽聽聽聽聽聽聽聽 濡傛灉nStart鍜宯End涓嶇浉絳夛紝琛ㄦ槑鐢ㄦ埛鍦╡dit涓変腑浜嗕竴孌靛唴瀹廣?/p>


--------------------------------------------------------------------------------
3.鍦╡dit鏈鍚庢坊鍔犲瓧絎︿覆

聽聽聽聽聽聽聽 CString str;
聽聽聽聽聽聽聽 m_edit1.SetSel(-1, -1);
聽聽聽聽聽聽聽 m_edit1.ReplaceSel(str);


--------------------------------------------------------------------------------
4.闅忚緭鍏ヨ嚜鍔ㄦ粴鍔ㄥ埌鏈鍚庝竴琛?richedit鍚屾牱閫傜敤)

聽聽聽 鏂規硶涓錛氾紙鎽樿嚜msdn錛?br />聽聽聽聽聽聽聽 // The pointer to my edit.
聽聽聽聽聽聽聽 extern CEdit* pmyEdit;
聽聽聽聽聽聽聽 int nFirstVisible = pmyEdit->GetFirstVisibleLine();

聽聽聽聽聽聽聽 // Scroll the edit control so that the first visible line
聽聽聽聽聽聽聽 // is the first line of text.
聽聽聽聽聽聽聽 if (nFirstVisible > 0)
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 pmyEdit->LineScroll(-nFirstVisible, 0);
聽聽聽聽聽聽聽 }
聽聽聽 鏂規硶浜岋細
聽聽聽聽聽聽聽 m_richedit.PostMessage(WM_VSCROLL, SB_BOTTOM, 0);


--------------------------------------------------------------------------------
5.濡備綍闄愬埗edit杈撳叆鎸囧畾瀛楃

聽聽 鍙互浠嶤Edit媧劇敓涓涓被錛屾坊鍔燱M_CHAR娑堟伅鏄犲皠銆備笅闈竴涓緥瀛愬疄鐜頒簡闄愬畾杈撳叆16榪涘埗瀛楃鐨勫姛鑳姐?/p>

聽聽 void CMyHexEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
聽聽 {
聽聽聽聽聽聽聽 if ( (nChar >= '0' && nChar <= '9') ||
聽聽聽聽聽聽聽聽聽聽聽聽 (nChar >= 'a' && nChar <= 'f') ||
聽聽聽聽聽聽聽聽聽聽聽聽 (nChar >= 'A' && nChar <= 'F') ||
聽聽聽聽聽聽聽聽聽聽聽聽聽 nChar == VK_BACK ||
聽聽聽聽聽聽聽聽聽聽聽聽聽 nChar == VK_DELETE)聽聽聽 //msdn鐨剉irtual key
聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽 CEdit::OnChar(nChar, nRepCnt, nFlags);
聽聽聽聽聽聽聽 }聽聽聽聽
聽聽 }


--------------------------------------------------------------------------------
6.濡備綍浣跨敤richedit

聽聽聽 娣誨姞AfxInitRichEdit();
聽聽聽聽聽聽 CxxxApp::InitInstance()
聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽 AfxInitRichEdit();
聽聽聽聽聽聽聽聽聽 .............
聽聽聽聽聽聽 }

聽聽 AfxInitRichEdit()鍔熻兘錛氳杞?RichEdit 1.0 Control (RICHED32.DLL).


--------------------------------------------------------------------------------
7.濡備綍浣跨敤richedit2.0 or richedit3.0

聽聽聽 浣跨敤鍘熷洜錛氱敱浜嶳ichEdit2.0A鑷姩涓哄瀛楃錛圵ideChar錛夛紝鎵浠ュ畠鍙互瑙e喅涓枃涔辯爜浠ュ強涓浜涙眽瀛楅棶棰?/p>

聽聽聽 鏂規硶涓錛氾紙msdn涓婄殑鍋氭硶錛岄傜敤浜庣敤VC.NET鍙婁互鍚庣増鏈垱寤虹殑宸ョ▼錛?br />聽聽聽聽聽聽聽聽聽聽聽 To update rich edit controls in existing Visual C++ applications to version 2.0,
聽聽聽聽聽聽聽聽聽聽聽 open the .RC file as text, change the class name of each rich edit control from聽聽 "RICHEDIT" to聽 "RichEdit20a".
聽聽聽聽聽聽聽聽聽聽聽 Then replace the call to AfxInitRichEdit with AfxInitRichEdit2.
聽聽聽 鏂規硶浜岋細浠ュ璇濇涓轟緥錛?br />聽聽聽聽聽聽 (1)聽聽聽 澧炲姞涓鍏ㄥ眬鍙橀噺 HMODULE hMod;
聽聽聽聽聽聽 (2)聽聽聽 鍦–xxxApp::InitInstance()涓坊鍔犱竴鍙Mod = LoadLibrary(_T("riched20.dll"));
聽聽聽聽聽聽聽聽聽聽聽聽聽 鍦–xxxApp::ExitInstance()涓坊鍔犱竴鍙reeLibrary(hMod);
聽聽聽聽聽聽 (3)聽聽聽聽聽 鍦ㄥ璇濇涓婃斁涓涓猺ichedit錛屾枃鏈柟寮忔墦寮.rc鏂囦歡淇敼璇ichedit鎺т歡鐨勭被鍚?RICHEDIT" to聽 "RichEdit20a".
聽聽聽聽聽聽 (4)聽聽聽聽聽 鍦ㄥ璇濇澶存枃浠舵坊鍔?CRichEditCtrl m_richedit;
聽聽聽聽聽聽聽聽聽聽聽聽聽 鍦∣nInitDialog涓坊鍔?m_richedit.SubclassDlgItem(IDC_RICHEDIT1, this);


--------------------------------------------------------------------------------
8.鏀瑰彉richedit鎸囧畾鍖哄煙鐨勯鑹插強瀛椾綋

聽聽聽聽聽聽聽 CHARFORMAT cf;
聽聽聽聽聽聽聽 ZeroMemory(&cf, sizeof(CHARFORMAT));
聽聽聽聽聽聽聽 cf.cbSize = sizeof(CHARFORMAT);
聽聽聽聽聽聽聽 cf.dwMask = CFM_BOLD | CFM_COLOR | CFM_FACE |
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 CFM_ITALIC | CFM_SIZE | CFM_UNDERLINE;
聽聽聽聽聽聽聽 cf.dwEffects = 0;
聽聽聽聽聽聽聽 cf.yHeight = 12*12;//鏂囧瓧楂樺害
聽聽聽聽聽聽聽 cf.crTextColor = RGB(200, 100, 255); //鏂囧瓧棰滆壊
聽聽聽聽聽聽聽 strcpy(cf.szFaceName ,_T("闅朵功"));//璁劇疆瀛椾綋
聽聽聽
聽聽聽聽聽聽聽 m_richedit1.SetSel(1, 5); //璁劇疆澶勭悊鍖哄煙
聽聽聽聽聽聽聽 m_richedit1.SetSelectionCharFormat(cf);


--------------------------------------------------------------------------------
9.璁劇疆琛岄棿璺濓紙鍙傜敤浜巖ichedit2.0錛?/p>

聽聽聽聽聽聽聽 PARAFORMAT2 pf;
聽聽聽聽聽聽聽 pf2.cbSize = sizeof(PARAFORMAT2);
聽聽聽聽聽聽聽 pf2.dwMask = PFM_LINESPACING | PFM_SPACEAFTER;
聽聽聽聽聽聽聽 pf2.dyLineSpacing = 200;
聽聽聽聽聽聽聽 pf2.bLineSpacingRule聽 = 4;
聽聽聽聽聽聽聽 m_richedit.SetParaFormat(pf2);


--------------------------------------------------------------------------------
10.richedit鎻掑叆浣嶅浘

Q220844錛欻ow to insert a bitmap into an RTF document using the RichEdit control in Visual C++ 6.0
http://support.microsoft.com/default.aspx?scid=kb;en-us;220844
http://www.codeguru.com/Cpp/controls/richedit/article.php/c2417/
http://www.codeguru.com/Cpp/controls/richedit/article.php/c5383/


--------------------------------------------------------------------------------
11.richedit鎻掑叆gif鍔ㄧ敾

http://www.codeproject.com/richedit/AnimatedEmoticon.asp


--------------------------------------------------------------------------------
12.richedit宓屽叆ole瀵硅薄

http://support.microsoft.com/kb/141549/en-us


--------------------------------------------------------------------------------
13.浣縭ichedit閫変腑鍐呭鍙

http://www.codeguru.com/cpp/controls/richedit/article.php/c2401/


--------------------------------------------------------------------------------
14.鎵撳嵃richedit

http://www.protext.com/MFC/RichEdit3.htm


--------------------------------------------------------------------------------
15.richeidt鐢ㄤ簬鑱婂ぉ娑堟伅紿楀彛

http://www.vckbase.com/document/viewdoc/?id=1087
http://www.codeproject.com/richedit/chatrichedit.asp
http://www.codeguru.com/Cpp/controls/richedit/article.php/c2395/


--------------------------------------------------------------------------------
16.瑙e喅richedit鐨凟N_SETFOCUS鍜孍N_KILLFOCUS鏃犲搷搴旂殑闂

http://support.microsoft.com/kb/181664/en-us


--------------------------------------------------------------------------------
17.richedit鎷煎啓媯鏌?/p>

http://www.codeproject.com/com/AutoSpellCheck.asp


--------------------------------------------------------------------------------
18.鏀瑰彉edit鑳屾櫙鑹?/p>

Q117778錛欻ow to change the background color of an MFC edit control
http://support.microsoft.com/kb/117778/en-us


--------------------------------------------------------------------------------
19.褰揺dit鎺т歡鐨勭埗紿楀彛灞炴ф槸甯︽爣棰樻爮WS_CAPTION鍜屽瓙紿楀彛WS_CHILD鏃訛紝涓嶈兘璁劇疆鐒︾偣SetFocus

Q230587錛歅RB: Can't Set Focus to an Edit Control When its Parent Is an Inactive Captioned Child Window

http://support.microsoft.com/kb/230587/en-us

--------------------------------------------------------------------------------
20. 鍦‥dit涓洖杞︽椂錛屼細閫鍑哄璇濇

閫変腑Edit鐨勯鏍糤ant Return銆?/p>

MSDN鐨勮В閲婂涓嬶細
ES_WANTRETURN聽聽 Specifies that a carriage return be inserted when the user presses the ENTER key while entering text into a multiple-line edit control in a dialog box. Without this style, pressing the ENTER key has the same effect as pressing the dialog box's default pushbutton. This style has no effect on a single-line edit control.


--------------------------------------------------------------------------------
21. 鍔ㄦ佸垱寤虹殑edit娌℃湁杈規鐨勯棶棰?/p>

聽聽聽 m_edit.Create(....);
聽聽聽 m_edit.ModifyStyleEx(0, WS_EX_CLIENTEDGE, SWP_DRAWFRAME);

--------------------------------------------------------------------------------
22. 涓涓兘鏄劇ずRTF錛宱le錛堝寘鎷琯if錛?wmv錛宔xcel 錛宲pt錛夌殑渚嬪瓙

http://www.codeproject.com/richedit/COleRichEditCtrl.asp


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/qsycn/archive/2009/11/10/4793461.aspx

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/abcpanpeng/archive/2010/04/21/5509680.aspx



鎴戦 2010-11-03 15:51 鍙戣〃璇勮
]]>
涓涓獂p緋葷粺dll璇存槑緗戠珯http://m.shnenglu.com/kyelin/archive/2010/10/29/131756.html鎴戦鎴戦Fri, 29 Oct 2010 07:33:00 GMThttp://m.shnenglu.com/kyelin/archive/2010/10/29/131756.htmlhttp://m.shnenglu.com/kyelin/comments/131756.htmlhttp://m.shnenglu.com/kyelin/archive/2010/10/29/131756.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/131756.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/131756.html
http://xpdll.nirsoft.net/

鎴戦 2010-10-29 15:33 鍙戣〃璇勮
]]>
Dump鏂囦歡鐢熸垚(杞?http://m.shnenglu.com/kyelin/archive/2010/10/13/129758.html鎴戦鎴戦Wed, 13 Oct 2010 08:35:00 GMThttp://m.shnenglu.com/kyelin/archive/2010/10/13/129758.htmlhttp://m.shnenglu.com/kyelin/comments/129758.htmlhttp://m.shnenglu.com/kyelin/archive/2010/10/13/129758.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/129758.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/129758.html鐢熸垚minidump鐩殑鏄繚瀛樼▼搴忓紓甯告椂鐨勮皟鐢ㄦ爤淇℃伅錛屼究浜庡鎵鵑棶棰樺師鍥犮?/p>

1, 娣誨姞涓嬮潰寰楀嚱鏁幫紝

#include <dbghelp.h>
#include <shellapi.h>
#include <shlobj.h>

LONG WINAPI GenerateDump(struct _EXCEPTION_POINTERS *pExceptionPointers)
{
LONG ret = EXCEPTION_EXECUTE_HANDLER;
BOOL bMiniDumpSuccessful;
TCHAR szPath[MAX_PATH];
TCHAR szFileName[MAX_PATH];
TCHAR* szAppName = TEXT(鈥淎ppName鈥?;
TCHAR* szVersion = TEXT(鈥渧1.0鈥?;
DWORD dwBufferSize = MAX_PATH;
HANDLE hDumpFile;
SYSTEMTIME stLocalTime;
MINIDUMP_EXCEPTION_INFORMATION ExpParam;

GetLocalTime( &stLocalTime );
GetTempPath( dwBufferSize, szPath );

_stprintf( szFileName, TEXT(鈥?s%s鈥?, szPath, szAppName );
CreateDirectory( szFileName, NULL );

_stprintf( szFileName, TEXT(鈥渃:\\aaaa.dmp鈥?);
hDumpFile = CreateFile(szFileName, GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);

ExpParam.ThreadId = GetCurrentThreadId();
ExpParam.ExceptionPointers = pExceptionPointers;
ExpParam.ClientPointers = TRUE;

bMiniDumpSuccessful = MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),
hDumpFile, MiniDumpWithDataSegs, &ExpParam, NULL, NULL);

int i = GetLastError();
HRESULT hr = HRESULT_FROM_WIN32(i);

return ret;
}

2錛屽湪project setting涓姞鍏bghelp.lib浣滀負library鐨刬nput錛岃繖鏄疢iniDumpWriteDump闇瑕佺殑銆?strong>鍦―ebug Information Format璁劇疆Program Database (/Zi)銆傝緗?strong>Generate Debug Info涓?strong>Yes (/DEBUG)銆傚湪Optimization璁劇疆References涓?Eliminate Unreferenced Data (/OPT:REF)銆傝緗?Enable COMDAT Folding涓?Remove Redundant COMDATs (/OPT:ICF)銆傚悗闈袱欏硅緗彲浠ュぇ澶х緝灝廵xe鏂囦歡澶у皬銆?/p>

3錛屼嬌鐢ㄥ涓嬶細

void SomeFunction()
{
int *pBadPtr = NULL;
*pBadPtr = 0;
}
void Ctest2Dlg::OnBnClickedButton1()
{
__try
{
SomeFunction();
}
__except(GenerateDump(GetExceptionInformation()))
{
}
}

4錛屼嬌鐢╳indbg鎵撳紑dmp鏂囦歡錛屽氨鍙互鐪嬪埌鍑洪敊鏃剁殑call stack浜嗐?/p>

鍑犵偣瑕佹敞鎰忕殑錛?錛夌綉涓婃湁鏂囩珷浠嬬粛浣跨敤 SetUnhandledExceptionFilter璁劇疆寮傚父榪囨護錛屼繚璇佸嚭鐜板紓甯告椂鑳借皟鐢╩inidump鍑芥暟錛屼絾鏄繖鏈変簺闂錛岃繖涓嚱鏁頒細瀵艱嚧debugger澶辨晥錛岃屼笖濂藉儚璺焏rwatson鏈変簺鍐茬獊錛屾劅瑙夌敤璧鋒潵姣旇緝鍗遍櫓銆傚湪紼嬪簭鐨勫叧閿儴鍒嗗姞鍏_try 鈥?__exception錛岃繖鏍風緝灝忔崟鎹夎寖鍥達紝搴旇灝辮凍澶熺敤浜嗐?錛夊繀欏繪槸鐢╛_try 鈥?__exception榪欐牱鐨勫艦寮忥紝鎵嶈兘淇濊瘉GetExceptionInformation()鑳芥甯鎬嬌鐢ㄣ?錛塎iniDumpWithDataSegs榪欎釜鍙傛暟鎴戣瘯鐫鎹㈡垚鍙﹀鍑犱釜錛屽ソ鍍忛兘涓嶅ソ鐢ㄣ傝繑鍥炲奸兘鏄?錛岀粡榪囪В鏋恖asterror閮芥槸E_INVALIDARG錛屽鎬?/p>

update: 鍏充簬浣跨敤windbg

windbg涓嬭澆鍦板潃鍦ㄨ繖閲?a >http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx

涓嬭澆瀹夎鏈鏂扮増鏈嵆鍙紝鎴戞病鏈夋悶娓呮鐨勪竴鐐規槸蹇呴』瑕佽緗畐indows鐨剆ymbol鐩綍錛屽惁鍒欏厜鏈塸db鏄病娉曠湅鍒拌皟鐢ㄦ爤淇℃伅鐨勩?/p>

浣跨敤windbg榪囩▼濡備笅錛氬畨瑁呫傜劧鍚庢墦寮鑿滃崟file-> symbol file path錛屾坊鍔犲涓?/p>

srv*c:\symbol_local*http://msdl.microsoft.com/download/symbols;c:\debug

鍏朵腑srv*c:\symbol_local*http://msdl.microsoft.com/download/symbols;鎸囨槑浠庣綉涓婁笅杞芥搷浣滅郴緇熶嬌鐢ㄧ殑symbol瀛樻斁鍒癱鐩榮ymbol_local鐩綍錛屽彟澶栫▼搴忕殑symbol錛坧db鏂囦歡錛夊彲浠ユ斁鍦╟鐩榙ebug鐩綍涓嬨?/p>

windbg浼氭樉紺轟竴孌墊椂闂碽usy鎴栬卹etrieving..錛岀劧鍚庡氨鍙互鐪嬪埌璇︾粏鐨刣ump淇℃伅浜?/p>

鎴戦 2010-10-13 16:35 鍙戣〃璇勮
]]>
VC++ SMTP鍗忚鐢靛瓙閭歡浼犻佸墫鏋?杞?http://m.shnenglu.com/kyelin/archive/2010/10/11/129427.html鎴戦鎴戦Mon, 11 Oct 2010 06:05:00 GMThttp://m.shnenglu.com/kyelin/archive/2010/10/11/129427.htmlhttp://m.shnenglu.com/kyelin/comments/129427.htmlhttp://m.shnenglu.com/kyelin/archive/2010/10/11/129427.html#Feedback0http://m.shnenglu.com/kyelin/comments/commentRss/129427.htmlhttp://m.shnenglu.com/kyelin/services/trackbacks/129427.html
銆銆鍓嶈█

銆銆鐢靛瓙閭歡鏈嶅姟浣滀負Internet涓婂簲鐢ㄦ渶澶氬拰鏈騫跨殑鏈嶅姟欏圭洰寰楀埌浜嗛潪甯稿箍娉涚殑搴旂敤錛屽湪緗戠粶搴旂敤涓篃璧峰埌闈炲父閲嶈鐨勪綔鐢ㄣ傚鍚屽叾浠栫殑緗戠粶鏈嶅姟錛岀數瀛愰偖浠剁郴緇熶篃鏈夊叾浣跨敤鐨勪紶杈撳崗璁紝鍖呮嫭SMTP錛圫imple Mail Transfer Protocol錛岀畝鍗曢偖浠朵紶杈撳崗璁級銆丳OP錛圥ost Office Protocol錛岄偖灞鍗忚錛夊拰IMAP錛圛nternet Message Access Protocal錛屾秷鎭闂崗璁級絳夛紝榪欎簺鍗忚搴旂敤浜庣數瀛愰偖浠剁殑鍙戦佸拰鎺ユ敹銆備竴浜涢偖浠跺鐞嗚蔣浠跺OutLook Express鍜孎oxMail絳夊氨鏄寜鐓MTP鍜孭OP3 鍗忚緇撳悎Windows Sockets濂楁帴瀛楄繘琛岃璁℃潵鏀跺彂閭歡鐨勩傛湰鏂囦互SMTP鍗忚涓虹爺絀跺璞★紝鍦╒isual C++ 6.0緙栫▼鐜涓嬫寜鐓MTP鍗忚閫氳繃濂楁帴瀛楀彂閫丼MTP鍛戒護錛屾帴鏀跺茍澶勭悊閭歡鏈嶅姟鍣ㄧ殑鍙嶉淇℃伅錛屼粠鑰屽疄鐜板鐢靛瓙閭歡鐨勫彂閫併?br />
銆銆SMTP鍗忚鐨勯氳妯″瀷鍜屼細璇濇祦紼?/font>

銆銆SMTP鍗忚閫氳妯″瀷

銆銆SMTP鍗忚鏄疶CP/IP鍗忚鏃忎腑鐨勪竴鍛橈紝涓昏瀵瑰浣曞皢鐢靛瓙閭歡浠庡彂閫佹柟鍦板潃浼犻佸埌鎺ユ敹鏂瑰湴鍧錛屼篃鍗蟲槸瀵逛紶杈撶殑瑙勫垯鍋氫簡瑙勫畾銆係MTP鍗忚鐨勯氫俊妯″瀷騫朵笉澶嶆潅錛屼富瑕佸伐浣滈泦涓湪鍙戦丼MTP鍜屾帴鏀禨MTP涓婏細棣栧厛閽堝鐢ㄦ埛鍙戝嚭鐨勯偖浠惰姹傦紝鐢卞彂閫丼MTP寤虹珛涓鏉¤繛鎺ュ埌鎺ユ敹SMTP鐨勫弻宸ラ氳閾捐礬錛岃繖閲岀殑鎺ユ敹SMTP鏄浉瀵逛簬鍙戦丼MTP鑰岃█鐨勶紝瀹為檯涓婂畠鏃㈠彲浠ユ槸鏈緇堢殑鎺ユ敹鑰呬篃鍙互鏄腑闂翠紶閫佽呫傚彂閫丼MTP璐熻矗鍚戞帴鏀禨MTP鍙戦丼MTP鍛戒護錛岃屾帴鏀禨MTP鍒欒礋璐f帴鏀跺茍鍙嶉搴旂瓟銆傚彲澶ц嚧鐢ㄤ笅闈㈢殑閫氳妯″瀷紺烘剰鍥炬潵琛ㄧず錛?br />

銆銆SMTP鍗忚鐨勫懡浠ゅ拰搴旂瓟

銆銆浠庡墠闈㈢殑閫氳妯″瀷鍙互鐪嬪嚭SMTP鍗忚鍦ㄥ彂閫丼MTP鍜屾帴鏀禨MTP涔嬮棿鐨勪細璇濇槸闈犲彂閫丼MTP鐨?SMTP鍛戒護鍜屾帴鏀禨MTP鍙嶉鐨勫簲絳旀潵瀹屾垚鐨勩傚湪閫氳閾捐礬寤虹珛鍚庯紝鍙戦丼MTP鍙戦丮AIL鍛戒護鎸囦護閭歡鍙戦佽咃紝鑻ユ帴鏀禨MTP姝ゆ椂鍙互鎺ユ敹閭歡鍒欎綔鍑篛K鐨勫簲絳旓紝鐒跺悗鍙戦丼MTP緇х畫鍙戝嚭RCPT鍛戒護浠ョ‘璁ら偖浠舵槸鍚︽敹鍒幫紝濡傛灉鎺ユ敹鍒板氨浣滃嚭OK鐨勫簲絳旓紝鍚﹀垯灝卞彂鍑烘嫆緇濇帴鏀跺簲絳旓紝浣嗚繖騫朵笉浼氬鏁翠釜閭歡鎿嶄綔閫犳垚褰卞搷銆傚弻鏂瑰姝ゅ弽澶嶅嬈★紝鐩磋嚦閭歡澶勭悊瀹屾瘯銆係MTP鍗忚鍏卞寘鍚?0涓猄MTP鍛戒護錛屽垪琛ㄥ涓嬶細

SMTP鍛戒護鍛戒護璇存槑
HELLO 錛渄omain錛?錛淐RLF錛?/td>璇嗗埆鍙戦佹柟鍒版帴鏀禨MTP鐨勪竴涓狧ELLO鍛戒護
MAIL FROM:錛渞everse-path錛烇紲CRLF錛?錛渞everse-path錛炰負鍙戦佽呭湴鍧銆傛鍛戒護鍛婅瘔鎺ユ敹鏂逛竴涓柊閭歡鍙戦佺殑寮濮嬶紝騫跺鎵鏈夌殑鐘舵佸拰緙撳啿鍖鴻繘琛屽垵濮嬪寲銆傛鍛戒護寮濮嬩竴涓偖浠朵紶杈撳鐞嗭紝鏈緇堝畬鎴愬皢閭歡鏁版嵁浼犻佸埌涓涓垨澶氫釜閭涓?/td>
RCPT TO:錛渇orward-path錛烇紲CRLF錛?錛渇orward-path錛炴爣璇嗗悇涓偖浠舵帴鏀惰呯殑鍦板潃
DATA 錛淐RLF錛?
鎺ユ敹SMTP灝嗘妸鍏跺悗鐨勮涓虹湅浣滈偖浠舵暟鎹幓澶勭悊錛屼互錛淐RLF錛?錛淐RLF錛炴爣璇嗘暟鎹殑緇撳熬銆?/td>
REST 錛淐RLF錛?/td>閫鍑?澶嶄綅褰撳墠鐨勯偖浠朵紶杈?/td>
NOOP 錛淐RLF錛?/td>瑕佹眰鎺ユ敹SMTP浠呭仛OK搴旂瓟銆傦紙鐢ㄤ簬嫻嬭瘯錛?/td>
QUIT 錛淐RLF錛?/td>瑕佹眰鎺ユ敹SMTP榪斿洖涓涓狾K搴旂瓟騫跺叧闂紶杈撱?/td>
VRFY 錛渟tring錛?錛淐RLF錛?楠岃瘉鎸囧畾鐨勯偖綆辨槸鍚﹀瓨鍦紝鐢變簬瀹夊叏鍥犵礌錛屾湇鍔″櫒澶氱姝㈡鍛戒護銆?/td>
EXPN 錛渟tring錛?錛淐RLF錛?楠岃瘉緇欏畾鐨勯偖綆卞垪琛ㄦ槸鍚﹀瓨鍦紝鎵╁厖閭鍒楄〃錛屼篃甯哥姝嬌鐢ㄣ?/td>
HELP 錛淐RLF錛?/td>鏌ヨ鏈嶅姟鍣ㄦ敮鎸佷粈涔堝懡浠?/td>

娉細錛淐RLF錛炰負鍥炶濺銆佹崲琛岋紝ASCII鐮佸垎鍒負13銆?0錛堝崄榪涘埗錛夈?br />
銆銆SMTP鍗忚鐨勬瘡涓涓懡浠ら兘浼氳繑鍥炰竴涓簲絳旂爜錛屽簲絳旂爜鐨勬瘡涓涓暟瀛楅兘鏄湁鐗瑰畾鍚箟鐨勶紝濡傜涓浣嶆暟瀛椾負2鏃惰〃紺哄懡浠ゆ垚鍔燂紱涓?琛ㄥけ璐ワ紱3琛ㄦ病鏈夊畬鎴愩備竴浜涜緝澶嶆潅鐨勯偖浠剁▼搴忓埄鐢ㄨ鐗圭偣錛岄鍏堟鏌ュ簲絳旂爜鐨勯鏁板瓧錛屽茍鏍規嵁鍏跺兼潵鍐沖畾涓嬩竴姝ョ殑鍔ㄤ綔銆備笅闈㈠皢SMTP鐨勫簲絳旂爜鍒楄〃濡備笅錛?br />
搴旂瓟鐮?/td>璇存槑
501 鍙傛暟鏍煎紡閿欒
502 鍛戒護涓嶅彲瀹炵幇
503 閿欒鐨勫懡浠ゅ簭鍒?/td>
504 鍛戒護鍙傛暟涓嶅彲瀹炵幇
211 緋葷粺鐘舵佹垨緋葷粺甯姪鍝嶅簲
214 甯姪淇℃伅
220錛渄omain錛炴湇鍔″氨緇?/td>
221 錛渄omain錛炴湇鍔″叧闂?/td>
421 錛渄omain錛炴湇鍔℃湭灝辯華錛屽叧闂紶杈撲俊閬?/td>
250瑕佹眰鐨勯偖浠舵搷浣滃畬鎴?/td>
251 鐢ㄦ埛闈炴湰鍦幫紝灝嗚漿鍙戝悜錛渇orward-path錛?/td>
450 瑕佹眰鐨勯偖浠舵搷浣滄湭瀹屾垚錛岄偖綆變笉鍙敤
550 瑕佹眰鐨勯偖浠舵搷浣滄湭瀹屾垚錛岄偖綆變笉鍙敤
451 鏀懼純瑕佹眰鐨勬搷浣滐紱澶勭悊榪囩▼涓嚭閿?/td>
551 鐢ㄦ埛闈炴湰鍦幫紝璇峰皾璇曪紲forward-path錛?
452 緋葷粺瀛樺偍涓嶈凍錛岃姹傜殑鎿嶄綔鏈墽琛?/td>
552 榪囬噺鐨勫瓨鍌ㄥ垎閰嶏紝瑕佹眰鐨勬搷浣滄湭鎵ц
553 閭鍚嶄笉鍙敤錛岃姹傜殑鎿嶄綔鏈墽琛?/td>
354 寮濮嬮偖浠惰緭鍏ワ紝浠?."緇撴潫
554 鎿嶄綔澶辮觸
銆銆鍦ㄥ簲鐢ㄧ▼搴忎腑浣跨敤SMTP鍗忚

銆銆SMTP鍗忚鐨勪細璇濇祦紼?/b>

銆銆鍦ㄨ繘琛岀▼搴忚璁′箣鍓嶆湁蹇呰寮勬竻SMTP鍗忚鐨勪細璇濇祦紼嬶紝鍏跺疄鍓嶉潰浠嬬粛鐨勫唴瀹瑰凡緇忓彲浠ュぇ鑷村嬀鍕掑嚭鐢⊿MTP鍙戦侀偖浠剁殑妗嗘灦浜嗭紝瀵逛簬涓嬈℃櫘閫氱殑閭歡鍙戦侊紝鍏惰繃紼嬪ぇ鑷翠負錛氬厛寤虹珛TCP榪炴帴錛岄殢鍚庡鎴風鍙戝嚭HELLO鍛戒護浠ユ爣璇嗗彂浠朵漢鑷繁鐨勮韓浠斤紝騫剁戶緇敱瀹㈡埛绔彂閫丮AIL鍛戒護錛屽鏈嶅姟鍣ㄥ簲絳斾負"OK"錛屽彲緇х畫鍙戦丷CPT鍛戒護鏉ユ爣璇嗙數瀛愰偖浠剁殑鏀朵歡浜猴紝鍦ㄨ繖閲屽彲浠ユ湁澶氫釜RCPT琛岋紝鑰屾湇鍔″櫒绔垯琛ㄧず鏄惁鎰挎剰涓烘敹浠朵漢鎺ュ彈璇ラ偖浠躲傚湪鍙屾柟鍗忓晢緇撴潫鍚庯紝鐢ㄥ懡浠ATA灝嗛偖浠跺彂閫佸嚭鍘伙紝鍏朵腑瀵硅〃紺虹粨鏉熺殑"."涔熶竴騫跺彂閫佸嚭鍘匯傞殢鍚庣粨鏉熸湰嬈″彂閫佽繃紼嬶紝浠UIT鍛戒護閫鍑恒備笅闈㈤氳繃涓涓疄渚嬶紝浠巐angrui@sohu.com鍙戦侀偖浠跺埌renping@sina.com鏉ユ洿璇︾粏鐩磋鍦版弿榪版浼氳瘽嫻佺▼錛?br />
R:220 sina.com Simple Mail Transfer Service Ready
S:HELLO sohu.com
R:250 sina.com
S:MAIL FROM:錛渓angrui@sohu.com錛?br />R:250 OK
S:RCPT TO:錛渞enping@sina.com錛?br />R:250 OK
S:DATA
R:354 Start mail input;end with "錛淐RLF錛?錛淐RLF錛?
S:鈥︹?br />R:250 OK
S:QUIT
R:221 sina.com Service closing transmission channel

銆銆閭歡鐨勬牸寮忓寲

銆銆鐢變簬鐢靛瓙閭歡緇撴瀯涓婄殑鐗規畩鎬э紝鍦ㄤ紶杈撴椂鏄笉鑳藉綋浣滅畝鍗曠殑鏂囨湰鏉ョ洿鎺ュ鐞嗙殑錛岃屽繀欏繪寜鐓т竴瀹氱殑鏍煎紡瀵歸偖浠跺ご鍜岄偖浠朵綋榪涜鏍煎紡鍖栧鐞嗕箣鍚庢墠鍙互琚彂閫併傞渶瑕佽繘琛屾牸寮忓寲鐨勯儴鍒嗕富瑕佹湁錛氬彂浠朵漢鍦板潃銆佹敹浠朵漢鍦板潃銆佷富棰樺拰鍙戦佹棩鏈熺瓑銆傚湪RFC鏂囨。鐨凴FC 822閲屽閭歡鐨勬牸寮忓寲鏈夎灝界殑璇存槑錛屾湁鍏寵鎯呰鍙傞槄璇ユ枃妗c備笅闈㈤氳繃VC++6.0鎸夌収RFC 822鏂囨。瑙勫畾灝嗘牸寮忓寲閭歡鐨勯儴鍒嗙紪鍐欏涓嬶紙閮ㄥ垎浠g爜錛夛細

//閭歡澶村噯澶?br />strTemp = _T( "From: " ) + m_strFrom; file://鍙戜歡浜哄湴鍧
add_header_line( (LPCTSTR)strTemp );
strTemp = _T( "To: " ) + m_strTo; file://鏀朵歡浜哄湴鍧
add_header_line( (LPCTSTR)strTemp );
m_tDateTime = m_tDateTime.GetCurrentTime();//鍙戦佹椂闂?br />strTemp = _T( "Data: " );
strTemp += m_tDateTime.Format( "%a, %d %b %y %H:%M:%S %Z" );
add_header_line( (LPCTSTR)strTemp );
strTemp = _T( "Subject: " ) + m_strSubject; file://涓婚
add_header_line( (LPCTSTR)strTemp );
file://閭歡澶寸粨鏉?br />m_strHeader += _T( "\r\n" );
file://閭歡浣撳噯澶?br />if( m_strBody.Right( 2 ) != _T( "\r\n" ) ) file://紜鏈鍚庝互鍥炶濺鎹㈣緇撴潫
m_strBody += _T( "\r\n" );

銆銆鍏朵腑add_header_line(LPCTSTR szHeaderLine)鍑芥暟鐢ㄤ簬鎶妔zHeaderLine鎸囧悜鐨勫瓧涓茶拷鍔犲埌m_strHeader鍚庨潰銆傚叾涓紝鏍煎紡鍖栧悗鐨勯偖浠跺ご淇濆瓨鍦╩_strHeader閲岋紝鏍煎紡鍖栧悗鐨勯偖浠朵綋淇濆瓨鍦╩_strBody涓?br />
銆銆鐢盨ocket濂楁帴瀛椾負SMTP鎻愪緵緗戠粶閫氳鍩虹

銆銆璁稿緗戠粶紼嬪簭閮芥槸閲囩敤Socket濂楁帴瀛楀疄鐜扮殑錛屽浜庝竴浜涙爣鍑嗙殑緗戠粶鍗忚濡侶TTP銆丗TP鍜孲MTP絳夊崗璁殑緙栫▼涔熸槸鍩轟簬濂楁帴瀛楃▼搴忕殑錛屽彧鏄鍙e彿涓嶅啀鏄殢鎰忚瀹氳岃鐢卞崗璁潵鎸囧畾錛屾瘮濡侶TTP绔彛鍦?0銆丗TP鏄?1錛岃孲MTP鍒欐槸25銆係ocket鍙槸鎻愪緵鍦ㄦ寚瀹氱殑绔彛涓婂悓鎸囧畾鐨勬湇鍔″櫒浠庝簨緗戠粶涓婄殑閫氳鑳藉姏錛岃嚦浜庡鎴峰拰鏈嶅姟鍣ㄤ箣闂存槸濡備綍閫氳鐨勫垯鐢辯綉緇滃崗璁潵瑙勫畾錛岃繖瀵逛簬濂楁帴瀛楁槸瀹屽叏閫忔槑鐨勩傚洜姝ゅ彲浠ヤ嬌鐢⊿ocket濂楁帴瀛椾負紼嬪簭鎻愪緵緗戠粶閫氳鐨勮兘鍔涳紝鑰屽浜庣綉緇滈氳榪炶礬寤虹珛濂戒箣鍚庨噰鍙栦粈涔堟牱鐨勯氳搴旂瓟鍒欒鎸塖MTP鍗忚鐨勮瀹氬幓鎵ц浜嗐係ocket濂楁帴瀛楃綉緇滅紪紼嬫柟闈㈢殑鏂囩珷璧勬枡闈炲父涓板瘜錛岄檺浜庢湰鏂囩瘒騫咃紝鍦ㄦ涓嶅啀璧樿堪錛屾湁鍏寵鎯呰鍙傞槄鐩稿叧鏂囨。銆備負綆渚胯搗瑙侊紝娌℃湁閲囩敤緙栧啓杈冨鏉傜殑Windows Sockets API榪涜緙栫▼錛岃屾槸浣跨敤緇忚繃杈冨ソ灝佽鐨凪FC 鐨凜Socket綾匯傚湪姝e紡浣跨敤濂楁帴瀛椾箣鍓嶏紝涔熻鍏堢敤AfxSocketInit()鍑芥暟瀵瑰鎺ュ瓧榪涜鍒濆鍖栵紝鐒跺悗鐢–reate()鍒涘緩濂楁帴瀛楀璞★紝騫剁敱璇ュ鎺ュ瓧閫氳繃Connect錛堬級寤虹珛鍚岄偖浠舵湇鍔″櫒鐨勮繛鎺ャ傚鏋滀竴鍒囨甯革紝鍐嶅悗緇殑宸ヤ綔涓氨鏄伒寰猄MTP鍗忚鐨勭害瀹氭潵浣跨敤Send錛堬級銆丷eceive()鍑芥暟鏉ュ彂閫丼MTP鍛戒護鍜屾帴鏀墮偖浠舵湇鍔″櫒鍙戞潵鐨勫簲絳旂爜浠ュ畬鎴愬閭歡鐨勪紶閫併?br />
銆銆SMTP浼氳瘽搴旂瓟鐨勫疄鐜?/b>

銆銆鍦ㄥ悓閭歡鏈嶅姟鍣ㄥ緩绔嬪ソ閾捐礬榪炴帴鍚庡氨鍙互鎸夊墠闈粙緇嶈繃鐨勪細璇濇祦紼嬭繘琛岀▼搴忚璁′簡錛屽浜嶴MTP鍛戒護鐨勫彂閫侊紝鍙寜鍛戒護鏍煎紡灝嗗叾緇勫撫瀹屾瘯鍚庣敤CSocket綾葷殑Send()鍑芥暟灝嗗叾鍙戦佸埌鏈嶅姟鍣紝騫墮氳繃CSocket綾葷殑Receive()鍑芥暟鎺ユ敹浠庨偖浠舵湇鍔″櫒鍙戞潵鐨勫簲絳旂爜錛屽茍鏍規嵁SMTP鍗忚鐨勫簲絳旂爜琛ㄥ鍏跺仛鍑哄搷搴旂殑澶勭悊銆備笅闈㈡槸鐢ㄤ簬鎺ユ敹搴旂瓟鐮佺殑鍑芥暟get_response()鐨勯儴鍒嗗疄鐜頒唬鐮侊細

BOOL CSMTP::get_response( UINT response_expected )//杈撳叆鍙傛暟涓哄笇鏈涚殑搴旂瓟鐮?br />{
鈥︹?br />// m_wsSMTPServer涓篊Socket鐨勭被瀵硅薄錛岃皟鐢≧eceive()灝嗗簲絳旂爜鎺ユ敹鍒扮紦瀛?br />// response_buf涓?br />m_wsSMTPServer.Receive( response_buf, RESPONSE_BUFFER_SIZE )
sResponse = response_buf;
sscanf( (LPCTSTR)sResponse.Left( 3 ), _T( "%d" ), &response );
pResp = &response_table[ response_expected ];
file://媯楠屾敹鍒扮殑搴旂瓟鐮佹槸鍚︽槸鎵甯屾湜寰楀埌鐨?br />if( response != pResp-錛瀗Response )
{
鈥︹?/涓嶇浉絳夌殑璇濊繘琛岄敊璇鐞?br />return FALSE;
}
return TRUE;
}

銆銆浼氳瘽鐨勫悇涓儴鍒嗘瘮杈冪被浼鹼紝閮芥槸鍛戒護--搴旂瓟鏂瑰紡錛岃屼笖鍧囨垚瀵瑰嚭鐜幫紝涓嬮潰鏄湰鏂囩殑閲嶇偣涔熸槸瀹炵幇鐨勫叧閿儴鍒?-鍦ㄧ▼搴忔帶鍒朵笅瀹屾垚瀵筍MTP鍛戒護鐨勬牸寮忓寲浠ュ強瀵瑰懡浠ょ殑鍙戦佸拰瀵歸偖浠舵湇鍔″櫒搴旂瓟鐮佺殑媯楠屽鐞嗭細

//鏍煎紡鍖栧茍鍙戦丠ELLO鍛戒護錛屽茍鎺ユ敹銆侀獙璇佹湇鍔″櫒搴旂瓟鐮?br />gethostname( local_host, 80 );
sHello.Format( _T( "HELO %s\r\n" ), local_host );
m_wsSMTPServer.Send( (LPCTSTR)sHello, sHello.GetLength() );
if( !get_response( GENERIC_SUCCESS ) ) file://媯楠屽簲絳旂爜鏄惁涓?50
{
鈥︹?br />return FALSE;
}
file://鏍煎紡鍖栧茍鍙戦丮AIL鍛戒護錛屽茍鎺ユ敹銆侀獙璇佹湇鍔″櫒搴旂瓟鐮?br />sFrom.Format( _T( "MAIL From: 錛?s錛瀄r\n" ), (LPCTSTR)msg-錛瀖_strFrom );
m_wsSMTPServer.Send( (LPCTSTR)sFrom, sFrom.GetLength() );
if( !get_response( GENERIC_SUCCESS ) ) file://媯楠屽簲絳旂爜鏄惁涓?50
return FALSE;
file://鏍煎紡鍖栧茍鍙戦丷CPT鍛戒護錛屽茍鎺ユ敹銆侀獙璇佹湇鍔″櫒搴旂瓟鐮?br />sEmail=(LPCTSTR)msg-錛瀖_strTo;
sTo.Format( _T( "RCPT TO: 錛?s錛瀄r\n" ), (LPCTSTR)sEmail );
m_wsSMTPServer.Send( (LPCTSTR)sTo, sTo.GetLength() );
if(!get_response( GENERIC_SUCCESS )) file://媯楠屽簲絳旂爜鏄惁涓?50
return FALSE;
file://鏍煎紡鍖栧茍鍙戦丏ATA鍛戒護錛屽茍鎺ユ敹銆侀獙璇佹湇鍔″櫒搴旂瓟鐮?br />sTemp = _T( "DATA\r\n" );
m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
if( !get_response( DATA_SUCCESS ) ) file://媯楠屽簲絳旂爜鏄惁涓?54
return FALSE;
file://鍙戦佹牴鎹甊FC 822鏂囨。瑙勫畾鏍煎紡鍖栬繃鐨勯偖浠跺ご
m_wsSMTPServer.Send( (LPCTSTR)msg-錛瀖_strHeader, msg-錛瀖_strHeader.GetLength() );
鈥︹?br />file://鍙戦佹牴鎹甊FC 822鏂囨。瑙勫畾鏍煎紡鍖栬繃鐨勯偖浠朵綋
sTemp = msg-錛瀖_strBody;
if( sTemp.Left( 3 ) == _T( ".\r\n" ) )
sTemp = _T( "." ) + sTemp;
while( (nPos = sTemp.Find( szBad )) 錛?-1 )
{
sCooked = sTemp.Mid( nStart, nPos );
sCooked += szGood;
sTemp = sCooked + sTemp.Right( sTemp.GetLength() - (nPos + nBadLength) );
}
m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
file://鍙戦佸唴瀹規暟鎹粨鏉熸爣蹇?錛淐RLF錛?錛淐RLF錛?錛屽茍媯楠岃繑鍥炲簲絳旂爜
sTemp = _T( "\r\n.\r\n" );
m_wsSMTPServer.Send( (LPCTSTR)sTemp, sTemp.GetLength() );
if( !get_response( GENERIC_SUCCESS ) )// 媯楠屽簲絳旂爜鏄惁涓?50
return FALSE;

銆銆鍒版涓烘錛屽凡鍩烘湰鍦ㄧ▼搴忎腑浣撶幇鍑轟簡SMTP鍗忚鐨勪細璇濇祦紼嬶紝鑳藉湪Socket濂楁帴瀛楁墍鎻愪緵鐨勭綉緇滈氳鑳藉姏鍩虹涔嬩笂瀹炵幇浠MTP鍛戒護鍜孲MTP搴旂瓟鐮佷負鍩烘湰浼氳瘽鍐呭鐨勯氳浜や簰榪囩▼錛屼粠鑰屾渶緇堝疄鐜癝MTP鍗忚瀵圭數瀛愰偖浠剁殑鍙戦併?br />
銆銆緇撹

銆銆鐢靛瓙閭歡綾昏蔣浠朵綔涓篒nternet涓婄殑搴旂敤杞歡錛屽叾璁捐寮鍙戝繀欏葷鍚圛nternet涓婃垚鐔熺殑鎶鏈鑼冿紙濡俁FC鏂囨。緋誨垪瑙勮寖錛夊拰鐩稿叧鍗忚錛堝POP銆丼MTP銆両MAP浠ュ強LDAP絳夛級銆傚彧鏈夊湪閬靛驚浜嗕笂榪拌鑼冨拰鍗忚鐨勫熀紜涓婅繘琛岀紪紼嬫墠鑳界湡姝e疄鐜伴偖浠剁被杞歡浜у搧鍜屾湇鍔$殑寮鏀炬у拰鏍囧噯鍖栥傛湰鏂囩潃閲嶅SMTP鍗忚鍙婂叾鍦╒C++緙栫▼涓殑搴旂敤鍋氫簡浠嬬粛錛屽茍鎸夌収SMTP鍗忚瀵圭數瀛愰偖浠剁殑鍙戦佽繘琛屼簡寮鏀炬у拰鏍囧噯鎬ц緝濂界殑紼嬪簭璁捐銆傛湰鏂囨墍榪扮▼搴忓湪Windows 98涓嬶紝鐢盡icrosoft Visual C++ 6.0緙栬瘧閫氳繃銆?/span>,

鎴戦 2010-10-11 14:05 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              国产一区白浆| 久久一区二区三区四区| 性亚洲最疯狂xxxx高清| 一本色道久久综合亚洲91| 99国产欧美久久久精品| 日韩视频一区二区在线观看 | 免费一区视频| 欧美激情第9页| 国产精品爱久久久久久久| 国产伦精品一区二区| 黄色成人免费网站| 亚洲精品少妇网址| 欧美亚洲视频在线观看| 欧美wwwwww| 夜夜夜久久久| 久久精品国产精品亚洲精品| 男人的天堂成人在线| 欧美日韩国产不卡| 国产性做久久久久久| 日韩视频免费在线观看| 久久不射网站| 日韩视频免费| 久久裸体艺术| 国产精品国产成人国产三级| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲影院在线| 国产日韩av在线播放| 亚洲精品国产拍免费91在线| 中日韩美女免费视频网址在线观看 | 欧美性大战久久久久久久蜜臀| 国内精品久久久久影院优| 亚洲最新中文字幕| 老司机午夜精品| 亚洲一区区二区| 欧美日韩国产综合网 | 欧美日韩国产一区精品一区| 韩日成人av| 亚洲欧美另类国产| 亚洲成色最大综合在线| 亚洲一区二区三区四区在线观看 | 91久久极品少妇xxxxⅹ软件| 欧美专区在线观看| aⅴ色国产欧美| 欧美精品久久久久久久免费观看 | 你懂的一区二区| 欧美夜福利tv在线| 国产精品推荐精品| 亚洲一区在线视频| 日韩网站在线观看| 欧美精品成人| 亚洲精选中文字幕| 亚洲国产裸拍裸体视频在线观看乱了中文| 午夜精品视频在线观看| 国产精品视区| 欧美在线播放高清精品| 亚洲在线观看视频网站| 国产精品高潮呻吟| 亚洲欧美一区二区精品久久久| 亚洲美女性视频| 欧美日韩一二区| 亚洲男人影院| 午夜精品久久久久久久白皮肤| 国产精品拍天天在线| 午夜精品偷拍| 免费亚洲网站| 国产精品国产三级国产专区53| 亚洲图片欧洲图片av| 亚洲国产乱码最新视频| 欧美精品少妇一区二区三区| 一区二区三区产品免费精品久久75| 亚洲欧洲美洲综合色网| 欧美精品导航| 亚洲一二三级电影| 亚洲欧美日韩区| 一区二区三区无毛| 亚洲国产精品va| 国产精品sss| 久久不见久久见免费视频1| 久久久xxx| 99re在线精品| 午夜一级久久| 亚洲人体偷拍| 亚洲免费久久| 国产一区二区毛片| 亚洲国产合集| 国产精品视频999| 久久中文字幕一区| 欧美激情精品久久久久| 亚洲欧美在线x视频| 久久国产精品一区二区三区四区| 伊人成人在线| 亚洲图片欧洲图片日韩av| 国产综合18久久久久久| 亚洲国产精品久久人人爱蜜臀| 国产精品成人一区二区| 免费不卡视频| 国产精品美女| 欧美激情一区三区| 国产精品私房写真福利视频| 欧美激情四色| 国产婷婷成人久久av免费高清| 91久久极品少妇xxxxⅹ软件| 国产丝袜美腿一区二区三区| 日韩一区二区精品| 亚洲高清影视| 欧美一区二区日韩一区二区| 日韩视频在线观看| 久久精品中文| 欧美在线地址| 欧美亚州一区二区三区| 亚洲福利国产精品| 国产亚洲欧美日韩一区二区| 中文在线资源观看网站视频免费不卡 | 欧美日韩大片一区二区三区| 久久久人成影片一区二区三区观看| 欧美欧美午夜aⅴ在线观看| 美日韩丰满少妇在线观看| 国产乱理伦片在线观看夜一区| 亚洲国产网站| 亚洲日本激情| 老妇喷水一区二区三区| 久久久久综合网| 久久久欧美精品| 欧美一区久久| 亚洲欧美成人一区二区三区| 欧美激情aⅴ一区二区三区| 欧美一区二区三区在线视频| 欧美日韩一区在线观看| 亚洲国产小视频在线观看| 国外成人在线| 欧美一区二区三区视频免费播放| 亚洲影音一区| 欧美视频手机在线| 日韩视频永久免费| 夜夜狂射影院欧美极品| 欧美激情第二页| 91久久夜色精品国产网站| 亚洲欧洲一二三| 欧美国产日韩免费| 亚洲日本va午夜在线电影 | 在线观看欧美日韩| 久久久另类综合| 欧美不卡福利| 亚洲精品视频免费观看| 欧美日韩123| 亚洲视频狠狠| 久久精品99无色码中文字幕 | 久久精品亚洲| 国产综合网站| 两个人的视频www国产精品| 米奇777超碰欧美日韩亚洲| 亚洲高清一区二区三区| 欧美激情一二三区| 中文网丁香综合网| 久久aⅴ国产欧美74aaa| 一区二区三区中文在线观看| 快射av在线播放一区| 亚洲激情一区| 性欧美xxxx视频在线观看| 国产自产女人91一区在线观看| 久久一区二区精品| 日韩视频永久免费| 久久久久久久激情视频| 亚洲国产婷婷综合在线精品| 欧美喷水视频| 久久国产精品99国产| 欧美激情一区二区三区四区| 亚洲午夜久久久| 狠狠狠色丁香婷婷综合激情| 欧美国产日韩一区| 亚洲欧美综合精品久久成人| 欧美ed2k| 欧美亚洲系列| 亚洲乱码国产乱码精品精天堂| 欧美日韩一区自拍| 久久久久国产成人精品亚洲午夜| 亚洲日本久久| 久久亚洲精选| 亚洲欧美日韩国产精品 | 国产精品国产三级国产a| 久久福利影视| 一本久道久久综合中文字幕| 毛片基地黄久久久久久天堂| 在线视频中文亚洲| 亚洲福利免费| 国产偷自视频区视频一区二区| 欧美乱大交xxxxx| 欧美一区二区黄色| 狠狠色狠狠色综合日日tαg| 欧美日韩国产高清| 久久人人爽国产| 亚洲欧美大片| 亚洲美女精品成人在线视频| 蜜臀91精品一区二区三区| 亚洲男人av电影| 日韩小视频在线观看| 伊人久久婷婷色综合98网| 欧美日韩福利| 欧美电影美腿模特1979在线看| 久久国产精品久久国产精品|