;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
VC.NET缂栫▼璁插骇涔嬩笁 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VC.NET >> VC.NET鏁欑▼ >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

VC.NET缂栫▼璁插骇涔嬩笁

鍙戝竷: 2008-6-26 23:05 |  浣滆: admin |   鏌ョ湅: 87娆

绗簩璁 鏂囨。鏁版嵁鐨勮鍙栧拰鏄剧ず

銆銆鎽樿

銆銆鏈鍏堟潵浠嬬粛绋嬪簭鍚勪釜绫荤殑鍏宠仈鏈哄埗锛岀劧鍚庤璁烘枃妗g殑璇昏繃绋嬪強璇绘搷浣滐紝鏈鍚庤璁烘枃妗f暟鎹殑鏄剧ず鏂规硶鍜屾妧宸с

銆銆绋嬪簭涓悇鐢ㄦ埛绫荤殑鍏宠仈

銆銆鍦ㄤ笂涓璁蹭腑锛屾垜浠娇鐢∕FC搴旂敤绋嬪簭鍚戝鍒涘缓涓涓崟鏂囨。椤圭洰TextViewer銆傜幇鍦紝鎴戜滑鎵撳紑璇ラ」鐩傚彲浠ョ湅鍑猴紝鍚戝涓篢extViewer椤圭洰鍒涘缓浜嗕互涓嬪嚑涓被锛

銆銆搴旂敤绋嬪簭绫籆TextViewerApp锛屽簲鐢ㄧ▼搴忓繀椤荤殑杩愯鍏ュ彛锛屽湪涓婁竴璁插凡缁忚璁鸿繃銆

銆銆涓绘鏋剁獥鍙g被CMainFrame锛岀敤鏉ヨ礋璐g獥鍙g殑鏍囬鏍忋佽彍鍗曘佸伐鍏锋爮鍙婄姸鎬佹爮绛夌晫闈㈠厓绱犵殑鎿嶄綔銆

銆銆鏂囨。绫籆TextViewerDoc锛岀敤鏉ヨ礋璐f枃妗f暟鎹殑璇诲彇鍜屼繚瀛

銆銆瑙嗗浘绫籆TextViewerView绫伙紝鐢ㄦ潵鏄剧ず鏂囨。鏄剧ず锛屽苟鍙搷搴斿悇绉嶇被鍨嬬殑杈撳叆(渚嬪閿洏杈撳叆)浠ュ強瀹炵幇鎵撳嵃鍜屾墦鍗伴瑙堢瓑銆

銆銆杩樻湁涓涓璇濇绫籆AboutDlg锛岀敤鏉ユ樉绀鸿搴旂敤绋嬪簭鐨勭増鏈俊鎭紝鏄竴涓"鍏充簬"瀵硅瘽妗嗐

銆銆闇瑕佽鏄庣殑鏄紝Visual C .NET灏嗗悇涓被鐨勫0鏄庝繚瀛樺湪澶存枃浠朵腑锛屽嵆浠.h涓烘墿灞曞悕锛岃屽皢绫荤殑瀹炵幇浠g爜淇濆瓨鍦ㄤ互.cpp涓烘墿灞曞悕鐨勫疄鐜版枃浠朵腑銆

銆銆閭d箞锛屽湪MFC涓笂杩扮殑涓绘鏋剁獥鍙g被銆佹枃妗g被鍜岃鍥剧被鐨勫叧绯绘槸鎬庢牱鍛紵鎴戜滑鏉ョ湅涓涓嬨

銆銆灏嗚В鍐虫柟妗堢鐞嗗櫒鍒囨崲鍒"绫昏鍥"锛屽睍寮CTextViewerApp绫荤殑鎵鏈夎妭鐐癸紝鍙屽嚮"InitInstance( void )"锛屾墦寮璇ュ嚱鏁颁唬鐮併傜敱浜嶸isual C .NET鐨勪唬鐮佹敞閲婃槸涓枃鐨勶紝鍥犳鎴戜滑杩欓噷浠呯粰鍑哄鍥1鎵绀虹殑浠g爜銆

鍥1 InitInstance鍑芥暟涓殑閮ㄥ垎浠g爜

銆銆浠g爜涓紝CSingleDocTemplate鏄粠CDocTemplate娲剧敓鐨勫崟鏂囨。绫伙紝瀹冨崗璋冧簡鏂囨。绐楀彛銆佹枃妗e拰瑙嗗浘鐨勫叧绯伙紝骞舵妸涓夎呰仈绯昏捣鏉ャ傝绫荤殑鏋勯犲嚱鏁伴渶瑕佹寚瀹氬洓涓弬鏁帮紝鍒嗗埆涓鸿〃绀鸿彍鍗曞拰鍔犻熼敭绛夌殑璧勬簮ID鍙蜂互鍙婁笁涓敱瀹廟UNTIME_CLASS鎸囧畾鐨凜RuntimeClass缁撴瀯瀵硅薄鎸囬拡锛屽畠浠垎鍒槸绋嬪簭鐨勬枃妗g被銆佹鏋剁獥鍙g被鍜岃鍥剧被鐨勭粨鏋勬寚閽堛

銆銆CRuntimeClass缁撴瀯鍙嶆槧涓涓繍琛屾椂绫荤殑淇℃伅锛岄氬父鐢ㄥ畯RUNTIME_CLASS鏉ヨ幏鍙栦竴涓被鐨凜RuntimeClass缁撴瀯鎸囬拡銆俈isual C 鍊熷姪CRuntimeClass绫荤粨鏋勮兘鍦ㄥ簲鐢ㄧ▼搴忚繍琛岃繃绋嬩腑鑾峰緱璇ョ被瀵硅薄鍙婂叾鍩虹被鐨勭浉鍏充俊鎭紝浠庤屽彲浠ュ疄鐜拌繍琛屾椂绫诲瀷妫鏌(Run Time Type Inspection锛孯TTI)銆

銆銆AddDocTemplate鐢ㄦ潵灏嗘寚瀹氱殑鍗曟枃妗fā鏉挎垨澶氭枃妗fā鏉挎寚閽堟坊鍔犲埌绋嬪簭鎵鍖呭惈鍐呴儴鐨勬枃妗fā鏉挎寚閽堝垪琛ㄤ腑銆

銆銆鏂囨。鐨勮杩囩▼

銆銆鍦ㄥ悜瀵煎垱寤虹殑搴旂敤绋嬪簭涓紝绋嬪簭鐨勯粯璁よ彍鍗曟湁"鏂囦欢"銆"缂栬緫"銆"瑙嗗浘"鍜"甯姪"銆傚綋杩愯绋嬪簭鍚庯紝鎵撳紑"鏂囦欢"鑿滃崟涓殑"鎵撳紑"鍛戒护鏃讹紝搴旂敤绋嬪簭浼氳嚜鍔ㄦ墦寮鐩稿簲鐨"鎵撳紑"鏂囦欢閫氱敤瀵硅瘽妗嗐備箣鎵浠ユ湁杩欏姛鑳斤紝鏄洜涓哄悜瀵煎垱寤虹殑搴旂敤绋嬪簭妗嗘灦涓紝鑷姩灏"鎵撳紑"鑿滃崟鍛戒护涓嶤WinApp鐨凮nFileOpen鎴愬憳鍑芥暟鐩稿叧鑱斻傝繖绉嶅叧鑱旀槸閫氳繃"娑堟伅鏄犲皠"鏉ュ疄鐜扮殑锛屽湪CTextViewerApp绫荤殑瀹炵幇鏂囦欢TextViewer.cpp鍓嶉潰鏈夎繖鏍风殑浠g爜锛屽鍥2鎵绀恒

鍥2 搴旂敤绋嬪簭绫荤殑娑堟伅鏄犲皠

銆銆"娑堟伅鏄犲皠"鏄疢FC涓殑涓涓寒鐐广傚湪Windows鎿嶄綔鐜涓紝鏃犺鏄郴缁熶骇鐢熺殑鍔ㄤ綔鎴栨槸鐢ㄦ埛杩愯搴旂敤绋嬪簭浜х敓鐨勫姩浣滐紝閮界О涓轰簨浠(Events)浜х敓鐨勬秷鎭(Message)銆備緥濡傦紝鐢ㄦ埛閫夋嫨鑿滃崟鏃舵墍浜х敓鐨勬秷鎭О涓"鍛戒护"娑堟伅锛岃岄紶鏍囨敼鍙樼獥鍙g姸鎬佹椂鎵浜х敓鐨勬秷鎭槸"绐楀彛"娑堟伅銆傚彧瑕佹槸娑堟伅锛岄兘鍙互閫氳繃MFC鐨"娑堟伅鏈哄埗"鏉ユ槧灏勩傛槧灏勭殑鐩殑鏄皢娑堟伅鍜屾煇涓嚱鏁扮浉鍏宠仈锛岃繖鏍蜂竴鏃﹁娑堟伅浜х敓灏变細鎵ц鐩稿叧鑱旂殑鍑芥暟銆

銆銆鍥2浠g爜涓紝BEGIN_MESSAGE_MAP鍜孍ND_MESSAGE_MAP鏄疢FC寮濮嬪拰缁撴潫娑堟伅鏄犲皠瀹忥紝ON_COMMAND鏄笓闂ㄧ敤鏉ユ槧灏勫儚鑿滃崟鐨勪竴浜涘懡浠ゆ秷鎭畯锛屽畠鏈変袱涓弬鏁帮紝绗竴涓弬鏁扮敤鏉ユ寚瀹氬懡浠ゆ爣璇嗭紝MFC涓瘡涓彍鍗曢」閮芥湁涓涓爣璇嗗硷紝"鎵撳紑"鑿滃崟鐨勬爣璇咺D涓篒D_FILE_OPEN锛岀浜屼釜鍙傛暟鏄敤鏉ユ寚瀹氬叧鑱旂殑鍑芥暟銆(娑堟伅鏄犲皠浠ュ悗杩樹細璁插埌)

銆銆褰撶敤鎴峰湪閫氱敤"鎵撳紑"鏂囦欢瀵硅瘽妗嗕腑鎸囧畾涓涓枃浠跺悗锛屽簲鐢ㄧ▼搴忓皢璋冪敤鏂囨。瀵硅薄鐨 CDocument::OnOpenDocument铏氭垚鍛樺嚱鏁般傝鍑芥暟灏嗘墦寮鏂囦欢锛屽苟璋冪敤DeleteContents娓呴櫎鏂囨。瀵硅薄鐨勫唴瀹癸紝鐒跺悗鍒涘缓涓涓狢Archive(褰掓。绫)瀵硅薄鐢ㄤ簬鏁版嵁鐨勮鍙栵紝鎺ョ潃鍙堣嚜鍔ㄨ皟鐢⊿erialize鍑芥暟銆備箣鍚庝究璋冪敤瑙嗗浘瀵硅薄鐨凜View::OnInitialUpdate铏氭垚鍛樺嚱鏁般

銆銆鍦ㄨ繖涓繃绋嬩腑锛屾垜浠彲鑳芥湁寰堝鍦版柟涓嶇悊瑙c備絾鎴戜滑浠旂粏鎯充竴鎯冲氨浼氭槑鐧借澶氥傚亣濡傝鍥句腑宸叉湁鏂囨。鏁版嵁鏄剧ず锛屼负浜嗚兘蹇熸樉绀哄拰淇敼杩欎簺鏁版嵁锛屾樉鐒惰繖浜涙暟鎹瀛樺偍鍦ㄤ笓闂ㄧ殑鍐呭瓨绌洪棿涓紝CArchive绫诲璞″氨璧峰埌浜嗚繖涓綔鐢ㄣ傚綋鎵撳紑鍙︿竴涓枃妗f椂锛屼互鍓嶅湪鍐呭瓨涓瓨鍌ㄧ殑鏁版嵁瑕佹竻闄わ紝杩欏氨鏄疍eleteContents浣滅敤锛岃屼笖杩樿浣胯鍥捐兘鍙婃椂鏇存柊鏄剧ず锛屾墍浠ヨ璋冪敤OnInitialUpdate鍑芥暟銆

銆銆涓婅堪鐨凷erialize鍑芥暟鏄竴涓緢鐗瑰埆鐨勫嚱鏁帮紝瀹冩棦鍙互浠庝腑璇诲彇鏂囨。鏁版嵁锛屼篃鍙互淇濆瓨鏂囨。鏁版嵁锛岀О涓"搴忓垪鍖"鍑芥暟銆傚畠琚坊鍔犵敤鎴风殑鏂囨。绫讳腑锛岀敤鏉ユ牴鎹瓹Archive鍐呴儴鐨勪竴涓爣蹇楁潵鍐冲畾鏂囨。鏁版嵁鐨勬祦鍚(璇绘垨鍐)锛屽鍥3鎵绀恒

鍥3 Serialize鍑芥暟浠g爜

銆銆鏂囨。鏁版嵁鐨勮鎿嶄綔

銆銆瀵逛簬涓婅堪杩囩▼锛屾垜浠墍鍋氱殑浠呬粎鏄湪鏂囨。绫荤殑Serialize鍑芥暟涓坊鍔犳枃妗f暟鎹鍙(鍔犺浇)鍜屽瓨鍌ㄧ殑浠g爜銆傞渶瑕佽鏄庣殑鏄紝Serialize鍑芥暟鐨勫弬鏁癮r鏄竴涓狢Archive绫荤殑寮曠敤瀵硅薄銆侰Archive绫绘彁渚涗簡"<<"鍜">>"杩愮畻绗︼紝鍒嗗埆鍙互鍚戞枃妗e璞″啓鍏ユ暟鎹垨浠庢枃妗e璞′腑璇诲彇鏁版嵁銆傚畠浠殑鍚箟涓嶤 涓殑"<<"鍜">>"杩愮畻绗︾浉鍚岋紝鍙笉杩嘋Archive鏀寔鏇村鐨勬暟鎹被鍨嬶紝濡傦細CObject銆丆String绛夈傞櫎姝や箣澶朇Archive绫昏繕鎻愪緵ReadString鍜學riteString鎴愬憳鍑芥暟鏉ヨ鍐欐枃妗d腑鐨勪竴琛屾枃鏈備笅闈㈢殑杩囩▼鐢ㄦ潵灏嗘枃妗g殑鏂囨湰鍐呭璇诲嚭骞朵繚瀛樺埌涓涓瓧绗︿覆闆嗗悎绫诲璞′腑銆

銆銆(1) 灏嗚В鍐虫柟妗堢鐞嗗櫒绐楀彛鍒囨崲鍒"绫昏鍥"锛屽睍寮鎵鏈夌殑绫伙紝鍙冲嚮绫诲悕"CTextViewerDoc"锛屼粠寮瑰嚭鐨勫揩鎹疯彍鍗曚腑閫夋嫨"娣诲姞"->"娣诲姞鍙橀噺"锛屽脊鍑"娣诲姞鎴愬憳鍙橀噺鍚戝"瀵硅瘽妗嗭紝鍦"鍙橀噺绫诲瀷"妗嗕腑杈撳叆CStringArray锛屽湪"鍙橀噺鍚"妗嗕腑杈撳叆m_strContent锛屽鍥4鎵绀恒傚崟鍑"瀹屾垚"鎸夐挳銆

銆銆CStringArray鏄"瀛楃涓查泦鍚堢被"锛屽畠灏佽浜咰String鏁扮粍瀵硅薄鐨勫叏閮ㄦ搷浣溿傜被浼肩殑杩樻湁瀵笲YTE銆乁INT銆乄ORD鍜孌WORD绛夌被鍨嬬殑鏁扮粍鎿嶄綔鐨勯泦鍚堢被CByteArray銆丆UIntArray銆丆WordArray鍜孋DWordArray銆傝繖浜涢泦鍚堢被閮芥湁鐩镐技鐨勬搷浣滐紝濡侫dd(娣诲姞)銆丷emoveAll(鍒犻櫎鍏ㄩ儴鍏冪礌)銆丟etAt(鑾峰彇鎸囧畾鏁扮粍涓嬫爣鐨勫厓绱)绛夈

鍥4 娣诲姞鎴愬憳鍙橀噺

銆銆(2) 鍦–TextViewerDoc::Serialize鍑芥暟涓坊鍔犺鍙栨枃妗f枃鏈唴瀹逛唬鐮侊紝濡傚浘5鎵绀恒

鍥5 娣诲姞鐨勮鍙栨枃妗f枃鏈唴瀹逛唬鐮

銆銆浠g爜涓紝ReadString鏄鍙栨墦寮鐨勬枃妗g殑涓琛屾枃鏈紝褰撴垚鍔熻鍑烘椂锛屽嚱鏁拌繑鍥濼RUE锛屽綋鏂囨湰杈惧埌鏂囨。缁撳熬鏃讹紝鍑芥暟杩斿洖FALSE銆傝繖鏍凤紝閫氳繃while寰幆鍙互灏嗘枃妗g殑鏂囨湰鍐呭鍏ㄩ儴璇诲彇骞朵繚瀛樺埌m_strContent涓

銆銆(3) 鐢变簬鍙︿竴涓枃妗f墦寮鏃讹紝闇瑕佸皢m_strContent涓殑鍐呭娓呴櫎锛屾墍浠ユ垜浠渶瑕佽窡韪狣eleteContents鍑芥暟銆傚湪CTextViewerDoc绫荤殑灞炴х獥鍙o紝鍗曞嚮"閲嶅啓"鎸夐挳锛屽湪鍒楄〃妗嗕腑鎵惧埌DeleteContents鍑芥暟椤癸紝鍗曞嚮鍙宠竟鐨勭┖鏍煎悗鍐嶅崟鍑诲彸渚х殑涓嬫媺鎸夐挳锛屽嚭鐜颁竴涓笅鎷夊垪琛紝濡傚浘6鎵绀恒

鍥6 娣诲姞DeleteContents鍑芥暟鐨勯噸鍐

銆銆(4) 鍗曞嚮"<娣诲姞>DeleteContents"锛岃鍑芥暟鐨勯噸鍐欏氨娣诲姞濂戒簡銆傝繖鏍凤紝妗嗘灦鍦ㄨ嚜鍔ㄦ墽琛岃鍑芥暟鏃跺氨浼氬皢鑷繁娣诲姞鍦ㄨ繖涓嚱鏁颁腑鐨勪唬鐮佷篃浼氳鎵ц銆

銆銆(5) 鍦―eleteContents涓坊鍔犲鍥7鎵绀虹殑鍔犳浠g爜銆

鍥7 鍦―eleteContents鍑芥暟涓坊鍔犵殑浠g爜

銆銆杩欏氨鏄枃妗f枃鏈唴瀹圭殑鏁翠釜璇诲彇杩囩▼銆傞渶瑕佽鏄庣殑鏄紝涔熷彲浠ュ皢"m_strContent.RemoveAll();"璇彞鐩存帴娣诲姞鍦ㄥ浘5涓殑while寰幆璇彞涔嬪墠锛屼粠鑰屽彲浠ョ渷鐣(5)鍜(6)鐨勬楠ゃ

銆銆鏂囨。鏁版嵁鐨勬樉绀烘柟娉曞拰鎶宸

銆銆鐢ㄦ埛鐨勮鍥剧被鏄礋璐f樉绀烘枃妗f暟鎹殑锛岀洰鍓嶅父鐢ㄧ殑鏄剧ず鏂规硶鏈変笁涓細涓鏄娇鐢–EditView鏈哄埗鏉ユ樉绀猴紝浜屾槸鍦ㄨ鍥剧殑瀹㈡埛鍖轰腑浣跨敤缂栬緫鎺т欢锛屼笁鏄洿鎺ヨ皟鐢–DC绫荤殑鏂囨湰杈撳嚭鍑芥暟缁樺埗鎵鏈夌殑鏂囨湰鍐呭銆備笅闈㈠氨鏉ヤ粙缁嶃

銆銆1. 浣跨敤CEditView鏈哄埗

銆銆鍦∕FC鏂囨。搴旂敤绋嬪簭涓紝鍏跺唴閮ㄦ湁涓涓鍥炬寚閽堝垪琛ㄥ彉閲弇_viewList锛岀敱浜嶤EditView鏀寔鏂囨。鐨勫簭鍒楀寲锛屽洜姝ゆ垜浠彲浠ヤ娇鐢ㄤ笅鍒楄鍙ユ潵杩涜锛

((CEditView*)m_viewList.GetHead())->SerializeRaw(ar);

銆銆鍏蜂綋杩囩▼濡備笅锛

銆銆(1) 鍦↖nitInstance鍑芥暟涓紝鏀瑰啓妗嗘灦绐楀彛绫汇佹枃妗g被鍜岃鍥剧被鐨勫叧鑱旓紝濡傚浘8鎵绀虹殑鍔犳閮ㄥ垎銆

鍥8 鍦ㄦ枃妗fā鏉夸腑鏀瑰彉鍏宠仈鐨勮鍥剧被

銆銆CEditView瑙嗗浘绫绘彁渚涗簡绠鍗曠殑鏂囨湰缂栬緫鍔熻兘锛屽鎵撳嵃銆佹煡鎵惧苟鏇挎崲銆佸壀璐存澘鐨勫壀鍒囥佸鍒跺拰绮樿创绛夈

銆銆(2) 鍦–TextViewerDoc::Serialize鍑芥暟涓坊鍔犲簭鍒楀寲浠g爜锛屽鍥9鎵绀虹殑鍔犳閮ㄥ垎銆

鍥9 娣诲姞鐨勫簭鍒楀寲浠g爜

銆銆(3) 杩愯绋嬪簭锛屾墦寮涓涓枃妗o紝鐪嬬湅鏄笉鏄彲浠ユ樉绀哄嚭鏂囨。鐨勫唴瀹癸紵(鏄剧ず鐨勫唴瀹瑰彲鑳戒細鍑虹幇涔辩爜锛岃繖鏄疺isual C .NET涓殑涓涓狟UG)

銆銆璇勮堪锛氳繖绉嶆柟娉曠畝鍗曟湁鏁堬紝骞朵笖鑳藉瀹炵幇鏂囨湰鐨勭紪杈戝姛鑳斤紝缂虹偣鏄▼搴忎腑鐨凜TextViewerView绫诲彉寰楁病鏈夌敤浜嗭紝骞朵笖寰堥毦杩涜鏇存繁灞傛鐨勮鍥炬帶鍒躲

銆銆2. 浣跨敤缂栬緫鎺т欢

銆銆"缂栬緫鎺т欢"鏄竴涓彲浠ヨ鐢ㄦ埛浠庨敭鐩樿緭鍏ュ拰缂栬緫鏂囨湰鐨勬帶浠讹紝閫氳繃瀹冨彲浠ヨ緭鍏ュ悇绉嶆枃鏈佹暟瀛楁垨鑰呭彛浠わ紝涔熷彲浣跨敤瀹冩潵缂栬緫鍜屼慨鏀圭畝鍗曠殑鏂囨湰鍐呭銆侻FC绫籆Edit灏佽浜嗙紪杈戞帶浠剁殑鍏ㄩ儴鎿嶄綔銆

銆銆浣跨敤缂栬緫鎺т欢瀹炵幇鏂囨。鏁版嵁鐨勬樉绀虹殑鎬濊矾鏄紝鍏堝湪瑙嗗浘涓垱寤轰竴涓笌瑙嗗浘瀹㈡埛鍖哄ぇ灏忕浉鍚岀殑缂栬緫鎺т欢锛岀劧鍚庢妸鏂囨。鐨勬枃鏈唴瀹硅浆閫佸埌缂栬緫鎺т欢涓傝繖閲岀殑瑙嗗浘瀹㈡埛鍖烘槸鎸囬櫎浜嗙獥鍙f爣棰樻爮銆佽彍鍗曟爮銆佸伐鍏锋爮銆佺姸鎬佹爮浠ュ強杈规涔嬪鐨勯儴鍒嗐傜畝鍗曞湴璇达紝灏辨槸榛樿鐨勮儗鏅壊涓虹櫧鑹茬殑鍖哄煙銆

銆銆瀹炵幇鐨勬楠ゅ涓嬶細

銆銆(1) 涓篊TextViewerView绫绘坊鍔犳垚鍛樺彉閲廋Edit* m_ctrlEdit銆傝繖鏄竴涓寚閽堝彉閲忥紝鐢"娣诲姞鎴愬憳鍙橀噺鍚戝"娣诲姞鏃讹紝瑕佸湪"鍙橀噺绫诲瀷"妗嗗姞杈撳叆"CEdit*"(鍙屽紩鍙蜂笉杈撳叆锛屾敞鎰忓叾涓殑鏄熷彿)锛岃屽湪"鍙橀噺鍚"涓緭鍏_ctrlEdit銆

銆銆(2) 涓篊TextViewerView绫绘坊鍔燨nInitialUpdate鍑芥暟鐨勯噸鍐欙紝骞舵坊鍔犲鍥10鎵绀虹殑浠g爜(鍔犳閮ㄥ垎)銆

鍥10 鍦∣nInitialUpdate涓坊鍔犵殑浠g爜

銆銆new鍜宒elete鍒嗗埆鐢ㄦ潵涓虹被瀵硅薄鍒嗛厤鍜岄噴鏀惧唴瀛樼┖闂淬備负浜嗛伩鍏峬_ctrlEdit鍐呭瓨绌洪棿閲嶅鍒嗛厤锛屾垜浠湪new鎿嶄綔鍓嶏紝瑕佸厛灏唌_ctrlEdit鍐呭瓨绌洪棿閲婃斁銆

銆銆褰撴鏋跺皢鏂囨。涓庤鍥惧叧鑱旓紝涓旇鍥惧皢瑕佹樉绀烘椂璋冪敤OnInitialUpdate鍑芥暟锛屽洜姝ゆ垜浠皢瑙嗗浘鐨勪竴浜涘垵濮嬪寲浠g爜娣诲姞鍒拌繖閲屻

銆銆(3) 鍦–TextViewerView鏋愭瀯鍑芥暟涓坊鍔爉_ctrlEdit鍐呭瓨绌洪棿閲婃斁鐨勮鍙ワ細 if ( m_ctrlEdit ) delete m_ctrlEdit;

銆銆(4) 鐢变簬瑙嗗浘澶у皬鏀瑰彉鍚庯紝缂栬緫鎺т欢鐨勫ぇ灏忎篃搴旈殢涔嬫敼鍙橈紝鍥犳鎴戜滑闇瑕佽窡韪獥鍙g殑WM_SIZE娑堟伅锛屽彧瑕佺獥鍙eぇ灏忓彂鐢熸敼鍙樺悗锛岄兘浼氬彂閫佽繖涓秷鎭傚崟鍑籆TextViewerView绫诲睘鎬х獥鍙d腑鐨"娑堟伅"鎸夐挳锛屾坊鍔燱M_SIZE娑堟伅鏄犲皠銆傚鍥11鎵绀恒

鍥11 娣诲姞WM_SIZE鐨勬秷鎭槧灏

銆銆(5) 鍦ㄦ秷鎭槧灏勫嚱鏁癈TextViewerView::OnSize涓坊鍔犲鍥12鎵绀虹殑浠g爜銆

鍥12 鍦∣nSize涓坊鍔犵殑浠g爜

銆銆(6) 杩愯绋嬪簭锛屾墦寮褰撳墠鏂囦欢澶逛笅鐨凴eadMe.txt鏂囦欢锛岀粨鏋滃鍥13鎵绀恒

鍥13 浣跨敤缂栬緫鎺т欢鐨勬枃妗f暟鎹樉绀虹粨鏋

銆銆璇勮堪锛氳繖绉嶆柟娉曡櫧鐒朵篃姣旇緝绠鍗曪紝涓斿叿鏈夋枃鏈殑缂栬緫鍔熻兘锛屼絾鏂囨湰鏄剧ず鐨勬牸寮忚繕寰堝崟璋冿紝渚嬪瀹冪殑琛岄棿璺濆拰瀛楅棿璺濇棤娉曡皟鏁达紝鏇翠富瑕佺殑鏄鍥剧殑缁樺埗鍔熻兘鏃犳硶璧蜂綔鐢ㄣ

銆銆3. 鐩存帴鎺у埗鏂囨湰鐨勮緭鍑

銆銆鍥惧舰鍜屾枃鏈殑缁樺埗闇瑕佺敤鍒癕FC鐨凜DC绫伙紝瀹冩槸涓涓澶囩幆澧冪被銆傛墍璋撹澶囩幆澧冿紝灏卞ソ姣旀垜浠啓瀛楃敤鐨勭焊閭f牱锛屾樉绀烘椂鎸囩殑鏄睆骞曪紝鎵撳嵃鏃舵寚鐨勬槸鎵撳嵃鏈恒傚疄闄呬笂锛孧FC鐨凜DC绫昏繕涓轰竴浜涚壒娈婄殑璁惧鐜鎻愪緵鐩稿簲鐨勬淳鐢熺被銆備緥濡傦紝CClientDC鏄竴涓獥鍙e鎴峰尯鐨勮澶囩幆澧冪被銆

銆銆CDC涓烘垜浠彁渚涗簡鍥涗釜杈撳嚭鏂囨湰鐨勫嚱鏁帮細TextOut銆丒xtTextOut銆乀abbedTextOut鍜孌rawText锛屽垎鍒敤浜庝笉鍚岀殑鍦哄悎銆傚鏋滄兂瑕佺粯鍒剁殑鏂囨湰闇瑕佹敮鎸乀ab绗︼紝閭d箞閲囩敤TabbedTextOut鍑芥暟锛屽彲浠ヤ娇缁樺埗鍑烘潵鐨勬枃鏈晥鏋滄洿浣筹紱濡傛灉瑕佸湪涓涓煩褰㈠尯鍩熷唴缁樺埗澶氳鏂囨湰锛岄偅涔堥噰鐢―rawText鍑芥暟锛屼細鏇村瘜浜庢晥鐜囷紱濡傛灉鏂囨湰鍜屽浘褰㈢粨鍚堢揣瀵嗭紝瀛楃闂撮殧涓嶇瓑锛屽苟瑕佹眰鏈夎儗鏅鑹叉垨鐭╁舰瑁佸壀鐗规э紝閭d箞ExtTextOut鍑芥暟灏卞皢鏄渶濂界殑閫夋嫨銆傚鏋滄病鏈変粈涔堢壒娈婅姹傦紝閭d娇鐢═extOut鍑芥暟灏辨樉寰楃畝缁冧簡銆傚湪鏈緥涓紝鎴戜滑浣跨敤TabbedTextOut鍑芥暟鏉ョ粯鍒舵枃鏈紝瀹冪殑鍑芥暟鍘熷瀷濡備笅锛

CSize TabbedTextOut( int x, int y, const CString& str,

int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin );

銆銆璇ュ嚱鏁扮敤褰撳墠瀛椾綋鍦ㄦ寚瀹氫綅缃 (x,y) 澶勬樉绀轰竴涓敱str鎸囧畾鐨勬枃鏈紝涓旀牴鎹寚瀹氱殑鍒惰〃鍋滄浣嶈缃浉搴斿瓧绗︿綅缃傚嚱鏁版垚鍔熸椂杩斿洖鏂囨湰鐨勫ぇ灏忋傚弬鏁颁腑锛宯TabPositions琛ㄧずlpnTabStopPositions鏁扮粍鐨勫ぇ灏忥紝lpnTabStopPositions琛ㄧず澶氫釜閫掑鐨勫仠姝綅(閫昏緫鍧愭爣)鐨勬暟缁勶紝nTabOrigin琛ㄧず鍒惰〃鍋滄浣峹鏂瑰悜鐨勮捣濮嬬偣(閫昏緫鍧愭爣)銆

銆銆鍏蜂綋姝ラ濡備笅锛

銆銆(1) 閲嶆柊鍒涘缓涓涓柊鐨勫崟鏂囨。搴旂敤绋嬪簭椤圭洰Viewer锛屽湪鍚戝鐨"鐢熸垚鐨勭被"椤甸潰涓皢CViewerView鐨勫熀绫籆View鏀规垚CScrollView銆侰ScrollView绫绘槸涓涓敤鏉ユ彁渚涜嚜鍔ㄦ粴鍔ㄦ垨缂╂斁鍔熻兘鐨勮鍥剧粨鏋勩

銆銆(2) 鎸夋枃妗f暟鎹殑璇绘搷浣滐紝鍦–ViewerDoc绫讳腑锛屾坊鍔犱繚瀛樻枃妗f暟鎹殑CStringArray绫诲璞_strContent锛屽苟娣诲姞鐩稿簲鐨勬搷浣滀唬鐮併

銆銆(3) 鏂囨湰鍐呭鐨勮緭鍑轰唬鐮佷竴鑸槸娣诲姞鍦ㄨ鍥剧被鐨凮nDraw鍑芥暟涓紝浣嗕负浜嗚皟鐢ㄧ殑鏂逛究锛屾垜浠繖閲屽湪瑙嗗浘绫讳腑娣诲姞涓涓垚鍛樺嚱鏁癉ispContent銆

銆銆(4) 灏嗚В鍐虫柟妗堢鐞嗗櫒绐楀彛鍒囨崲鍒"绫昏鍥"锛屽睍寮鎵鏈夌殑绫伙紝鍙冲嚮绫诲悕"CViewerView"锛屼粠寮瑰嚭鐨勫揩鎹疯彍鍗曚腑閫夋嫨"娣诲姞"->"娣诲姞鍑芥暟"锛屽脊鍑"娣诲姞鎴愬憳鍑芥暟鍚戝"瀵硅瘽妗嗭紝鍦"杩斿洖绫诲瀷"妗嗕腑杈撳叆void锛屽湪"鍑芥暟鍚"妗嗕腑杈撳叆DispContent锛屽湪"鍙傛暟绫诲瀷"妗嗕腑杈撳叆CDC*锛屽湪"鍙傛暟鍚"妗嗕腑杈撳叆pDC锛岀劧鍚庡崟鍑"娣诲姞"鎸夐挳锛岀粨鏋滃鍥14鎵绀恒傚崟鍑"瀹屾垚"鎸夐挳銆

鍥14 娣诲姞鎴愬憳鍑芥暟DispContent

銆銆(5) 鍦―ispContent鍑芥暟涓坊鍔犲鍥15鎵绀虹殑浠g爜銆

鍥15 DispContent鍑芥暟浠g爜

銆銆SetScrollSizes()鏄疌ScrollView绫荤殑鎴愬憳鍑芥暟锛岀敤鏉ヨ缃浉搴旂殑鍧愭爣鏄犲皠妯″紡鍜岄昏緫婊氬姩绐楀彛鐨勫ぇ灏忋傛墍璋"閫昏緫婊氬姩绐楀彛"锛屾槸鍦ㄦ寚瀹氱殑鍧愭爣鏄犲皠妯″紡涓嬬殑涓涓"铏氭嫙绐楀彛"銆傚綋铏氭嫙绐楀彛瓒呰繃瑙嗗浘瀹㈡埛鍖(鍙О涓"鏄剧ず绐楀彛")鐨勫ぇ灏忔椂锛岃鍥惧鎴峰尯涓氨浼氳嚜鍔ㄥ嚭鐜版粴鍔ㄦ潯锛屼緵鐢ㄦ埛婊氬姩娴忚銆傝嫢铏氭嫙绐楀彛姣旀樉绀虹獥鍙e皬锛屽垯瑙嗗浘瀹㈡埛鍖轰腑涓嶄細鍑虹幇婊氬姩鏉°侻M_TEXT鏄"鏂囨湰"鍧愭爣鏄犲皠妯″紡銆傚湪璇ユā寮忎笅锛寈鍧愭爣浠庡乏鍚戝彸閫掑锛寉鍧愭爣鑷笂鑰屼笅閫掑锛屽潗鏍囦互鍍忕礌涓哄崟浣嶏紝杩欎篃鏄疢FC鐨勯粯璁ゅ潗鏍囨ā寮忋

銆銆(6) 鍦–ViewerView::OnDraw鍑芥暟娣诲姞DispContent璋冪敤浠g爜锛屽鍥16鎵绀虹殑鍔犳閮ㄥ垎銆侽nDraw()鏄鍥剧被涓潪甯告湁鐢ㄧ殑涓涓嚱鏁帮紝褰撳簲鐢ㄧ▼搴忎腑鐨勭獥鍙g姸鎬佹垨澶у皬鍙戠敓鏀瑰彉鏃讹紝绯荤粺鍧囦細璋冪敤姝ゅ嚱鏁伴噸鏂扮粯鍒惰鍥剧獥鍙g殑瀹㈡埛鍖恒傚洜姝わ紝鎴戜滑搴旇灏嗕竴浜涘浘褰㈢粯鍒舵坊鍔犲埌姝ゅ嚱鏁颁腑銆

鍥16 DispContent鐨勮皟鐢

銆銆(7) 杩愯绋嬪簭锛屾墦寮褰撳墠鏂囦欢澶逛笅鐨凴eadMe.txt鏂囦欢锛岀粨鏋滃鍥17鎵绀恒

鍥17 鏂囨湰缁樺埗鐨勭粨鏋

銆銆璇勮堪锛氳繖绉嶆柟娉曡櫧鐒惰緝澶嶆潅涓鐐癸紝浣嗘槸鍗磋兘鎺у埗姣忚鏂囨湰鐨勮璺濓紝骞跺彲浣跨敤CDC绫荤殑鍏朵粬鏂囨湰鍜屾枃瀛楀鐞嗗嚱鏁帮紝浣垮緱鏂囨湰琛ㄧ幇鏇村叿涓板瘜鍔涖傚彟澶栵紝鐢变簬缁樺埗鐨勪唬鐮佽繃绋嬫槸娣诲姞鍦∣nDraw涓紝鍥犳璇ユ柟娉曡兘浣块粯璁ょ殑鎵撳嵃鍜屾墦鍗伴瑙堝姛鑳芥湁鏁堛傜己鐐规槸锛屾樉绀虹殑閫熷害琛ㄧ幇娆犱匠銆

銆銆缁撴潫璇

銆銆鏈涓紝閫氳繃MFC鐨勬枃妗h杩囩▼璁ㄨ浜嗘枃妗g殑璇绘搷浣滃強涓嶅悓鐨勬枃妗f暟鎹樉绀烘柟娉曞拰鎶宸э紝鍦ㄤ笅涓璁蹭腑锛屾垜浠皢閫氳繃鑿滃崟鍜屽伐鍏锋爮鏉ユ敼鍙樻枃鏈樉绀虹殑瀛椾綋鍜岄鑹诧紝骞惰璁哄畠浠笌鐘舵佹爮杩欎笁鑰呬箣闂寸殑鐩镐簰鍏崇郴銆

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆