锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久青青国产,人妻无码久久一区二区三区免费,久久精品九九亚洲精品天堂http://www.shnenglu.com/ivenher/category/3330.htmlzh-cnWed, 21 May 2008 13:30:05 GMTWed, 21 May 2008 13:30:05 GMT60娣卞叆嫻呭嚭MFC鏂囨。/瑙嗗浘鏋舵瀯涔嬬浉浜掑叧緋諱簩錛堣漿錛?/title><link>http://www.shnenglu.com/ivenher/archive/2007/01/21/17860.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Sun, 21 Jan 2007 07:04:00 GMT</pubDate><guid>http://www.shnenglu.com/ivenher/archive/2007/01/21/17860.html</guid><wfw:comment>http://www.shnenglu.com/ivenher/comments/17860.html</wfw:comment><comments>http://www.shnenglu.com/ivenher/archive/2007/01/21/17860.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ivenher/comments/commentRss/17860.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ivenher/services/trackbacks/17860.html</trackback:ping><description><![CDATA[<div class="pjhpfvn" id=contitle twffan="done"> <h1>娣卞叆嫻呭嚭MFC鏂囨。/瑙嗗浘鏋舵瀯涔嬬浉浜掑叧緋?/h1> </div> <div class="dblplnz" id=conauthor twffan="done"><span twffan="done">2006-03-21 14:20 </span><span twffan="done">浣滆咃細 瀹嬪疂鍗?</span><span twffan="done">鍑哄錛?澶╂瀬寮鍙?</span><span twffan="done">璐d換緙栬緫錛?a title=鍚戞湰緙栬緫鎻愰棶 target=_blank>鏂硅垷</a></span> </div> <div id="flzjfvv" class=topadbg twffan="done"><span id=ad9 twffan="done"> <div class="tnhtvdr" id=ad9ad twffan="done"></div> </span></div> <div class="lvxzlzh" id=conneirong twffan="done"><span id=ad3 twffan="done"></span> <div id="tvzbpnl" class=guanggao twffan="done"><span id=contentAdv twffan="done"><iframe src="http://media.yesky.com/adjs/iframe-column/dell-240200.htm" frameBorder=0 width=240 scrolling=no height=200> </iframe></span></div> 銆銆2. 娑堟伅嫻佸姩鏈哄埗<br><br>銆銆鍦ㄥ熀浜?鏂囨。/瑙嗗浘"鏋舵瀯鐨凪FC紼嬪簭涓紝鐢ㄦ埛娑堟伅錛堥紶鏍囥侀敭鐩樿緭鍏ョ瓑錛変細鍏堝彂寰瑙嗗浘錛屽鏋滆鍥炬湭澶勭悊鍒欎細鍙戝線妗嗘灦紿楀彛銆傛墍浠ワ紝涓鑸潵璇達紝娑堟伅鏄犲皠瀹滃畾涔夊湪瑙嗗浘涓傚彟澶栵紝濡傛灉涓涓簲鐢ㄥ悓鏃舵嫢鏈夊涓鍥捐屽綋鍓嶆椿鍔ㄨ鍥炬病鏈夊娑堟伅榪涜澶勭悊鍒欐秷鎭篃浼氬彂寰妗嗘灦紿楀彛銆?br><br>銆銆涓嬮潰鎴戜滑鏉ョ湅瀹炰緥錛屾垜浠埄鐢╒isual C++鍚戝鍒涘緩涓涓崟鏂囨。/瑙嗗浘鏋舵瀯鐨凪FC紼嬪簭錛屽湪鍏朵腑澧炲姞涓涓彍鍗曢」涓?鑷畾涔?錛圛D涓篒DM_SELF錛屽鍥?.4錛夈?br><br> <table width="90%" align=center border=0> <tbody> <tr> <td> <div align=center twffan="done"><img src="http://dev.yesky.com/imagelist/06/03/un43z6389e79.jpg" border=0 twffan="done"><br>鍥?.4 鍚?鑷畾涔?鑿滃崟鐨勫崟鏂囨。/瑙嗗浘鏋舵瀯MFC紼嬪簭</div> </td> </tr> </tbody> </table> <br>銆銆鎴戜滑鍒嗗埆鍦ㄨ鍥劇被鍜屾鏋剁獥鍙g被涓負"鑷畾涔?鑿滃崟娣誨姞娑堟伅鏄犲皠錛屼唬鐮佸涓嬶細<br><br> <table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tbody> <tr> <td>//瑙嗗浘涓殑娑堟伅鏄犲皠鍜屽鐞嗗嚱鏁?br>BEGIN_MESSAGE_MAP(CExampleView, CView)<br>銆//{{AFX_MSG_MAP(CExampleView)<br>銆銆ON_COMMAND(IDM_SELF, OnSelf)<br>銆//}}AFX_MSG_MAP<br>END_MESSAGE_MAP() <br>void CExampleView::OnSelf() <br>{<br>銆// TODO: Add your command handler code here<br>銆AfxMessageBox("娑堟伅鍦ㄨ鍥句腑澶勭悊");<br>}<br><br>//妗嗘灦紿楀彛涓殑娑堟伅鏄犲皠鍜屽鐞嗗嚱鏁?br>BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)<br>銆//{{AFX_MSG_MAP(CMainFrame)<br>銆銆ON_COMMAND(IDM_SELF, OnSelf)<br>銆//}}AFX_MSG_MAP<br>END_MESSAGE_MAP()<br><br>void CMainFrame::OnSelf() <br>{<br>銆// TODO: Add your command handler code here<br>銆AfxMessageBox("娑堟伅鍦ㄦ鏋剁獥鍙d腑澶勭悊");<br>}</td> </tr> </tbody> </table> <br>銆銆榪欐椂鍊欙紝鎴戜滑鍗曞嚮"鑷畾涔?鑿滃崟錛屽脊鍑哄璇濇鏄劇ず"娑堟伅鍦ㄨ鍥句腑澶勭悊"錛涘鏋滄垜浠垹闄ゆ鏋剁獥鍙d腑鐨勬秷鎭槧灝勶紝鍐嶅崟鍑?鑷畾涔?鑿滃崟錛屽脊鍑哄璇濇涔熸樉紺?娑堟伅鍦ㄨ鍥句腑澶勭悊"錛涗絾鏄紝鑻ユ垜浠皢瑙嗗浘涓殑娑堟伅鏄犲皠鍒犻櫎浜嗭紝灝變細鏄劇ず"娑堟伅鍦ㄦ鏋剁獥鍙d腑澶勭悊"錛佽繖楠岃瘉浜嗘垜浠叧浜庢秷鎭鐞嗛『搴忚榪扮殑姝g‘鎬с?br><br>銆銆嬈叉繁鍏ョ悊瑙f秷鎭祦鍔ㄨ繃紼嬶紝榪橀渶璁ょ湡鍒嗘瀽CFrameWnd::OnCmdMsg銆丆View::OnCmdMsg鍑芥暟鐨勬簮浠g爜錛?br><br> <table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tbody> <tr> <td>BOOL CFrameWnd::OnCmdMsg(UINT nID, int nCode, void* pExtra,<br>AFX_CMDHANDLERINFO* pHandlerInfo)<br>{<br>銆// pump through current view FIRST<br>銆CView* pView = GetActiveView();<br>銆if (pView != NULL && pView->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))<br>銆銆return TRUE;<br><br>銆// then pump through frame<br>銆if (CWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))<br>銆銆return TRUE;<br><br>銆// last but not least, pump through app<br>銆CWinApp* pApp = AfxGetApp();<br>銆if (pApp != NULL && pApp->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))<br>銆銆return TRUE;<br><br>銆return FALSE;<br>}<br><br>BOOL CView::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo)<br>{<br>銆// first pump through pane<br>銆if (CWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))<br>銆銆return TRUE;<br><br>銆// then pump through document<br>銆BOOL bHandled = FALSE;<br>銆if (m_pDocument != NULL)<br>銆{<br>銆銆// special state for saving view before routing to document<br>銆銆_AFX_THREAD_STATE* pThreadState = AfxGetThreadState();<br>銆銆CView* pOldRoutingView = pThreadState->m_pRoutingView;<br>銆銆pThreadState->m_pRoutingView = this;<br>銆銆bHandled = m_pDocument->OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);<br>銆銆pThreadState->m_pRoutingView = pOldRoutingView;<br>銆}<br><br>銆return bHandled;<br>}</td> </tr> </tbody> </table> <br>銆銆鍒嗘瀽涓婅堪婧愪唬鐮佸彲鐭ワ紝WM_COMMAND娑堟伅鐨勫疄闄呮祦鍔ㄩ『搴忔瘮鍓嶆枃鍙欒堪鐨?鍏堣鍥撅紝鍚庢鏋剁獥鍙?瑕佸鏉傚緱澶氾紝鏂囨。鍜屽簲鐢ㄧ▼搴忛兘鍙備笌浜嗘秷鎭殑澶勭悊榪囩▼銆傚鏋滄垜浠啀涓烘枃妗e拰搴旂敤娣誨姞娑堟伅鏄犲皠鍜屽鐞嗗嚱鏁幫細<br><br> <table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tbody> <tr> <td>//鏂囨。鐨勬秷鎭槧灝勫拰澶勭悊鍑芥暟<br>BEGIN_MESSAGE_MAP(CExampleDoc, CDocument)<br>銆//{{AFX_MSG_MAP(CExampleDoc)<br>銆銆ON_COMMAND(IDM_SELF, OnSelf)<br>銆//}}AFX_MSG_MAP<br>END_MESSAGE_MAP()<br><br>void CExampleDoc::OnSelf() <br>{<br>銆// TODO: Add your command handler code here<br>銆AfxMessageBox("娑堟伅鍦ㄦ枃妗d腑澶勭悊");<br>}<br><br>//搴旂敤鐨勬秷鎭槧灝勫拰澶勭悊鍑芥暟<br>BEGIN_MESSAGE_MAP(CExampleApp, CWinApp)<br>//{{AFX_MSG_MAP(CExampleApp) <br>ON_COMMAND(IDM_SELF, OnSelf)<br>//}}AFX_MSG_MAP<br>END_MESSAGE_MAP()<br><br>void CExampleApp::OnSelf() <br>{<br>銆// TODO: Add your command handler code here<br>銆AfxMessageBox("娑堟伅鍦ㄥ簲鐢ㄤ腑澶勭悊");<br>}</td> </tr> </tbody> </table> <br>銆銆灞忚斀鎺夎鍥懼拰妗嗘灦紿楀彛鐨勬秷鎭槧灝勶紝鍐嶅崟鍑?鑷畾涔?鑿滃崟錛屽脊鍑哄璇濇鏄劇ず"娑堟伅鍦ㄦ枃妗d腑澶勭悊"錛涘啀灞忚斀鎺夋枃妗d腑鐨勬秷鎭槧灝勶紝寮瑰嚭瀵硅瘽妗嗘樉紺?娑堟伅鍦ㄥ簲鐢ㄤ腑澶勭悊"錛佺敱姝ゅ彲瑙侊紝瀹屾暣鐨刉M_COMMAND娑堟伅鐨勫鐞嗛『搴忔槸"瑙嗗浘鈥曗曟枃妗b曗曟鏋剁獥鍙b曗曞簲鐢?錛?br><br>銆銆瀹為檯涓婏紝鍏充簬MFC鐨勬秷鎭祦鍔ㄦ槸涓涓緢澶嶆潅鐨勮棰橈紝闄蜂簬綃囧箙鐨勫師鍥狅紝鎴戜滑涓嶅彲鑳藉鍏惰繘琛屾洿璇﹀敖鐨勪粙緇嶏紝璇昏呭彲鑷瀵繪壘鐩稿叧璧勬枡銆? <div id="ltvhrzn" class=right twffan="done">鍏?欏點?<a class=page target=_self><font face=Webdings>9</font></a><a class=page target=_self><font face=Webdings>7</font></a><a class=page target=_self><strong>1</strong></a><a class=page target=_self><font color=#666666><strong>2</strong></font></a></div> </div> <img src ="http://www.shnenglu.com/ivenher/aggbug/17860.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2007-01-21 15:04 <a href="http://www.shnenglu.com/ivenher/archive/2007/01/21/17860.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>VC涓嚜鍔ㄦ敼鍙樻帶浠朵綅緗拰澶у皬鐨勫璇濇綾伙紙杞級http://www.shnenglu.com/ivenher/archive/2007/01/21/17858.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Sun, 21 Jan 2007 06:25:00 GMThttp://www.shnenglu.com/ivenher/archive/2007/01/21/17858.htmlhttp://www.shnenglu.com/ivenher/comments/17858.htmlhttp://www.shnenglu.com/ivenher/archive/2007/01/21/17858.html#Feedback0http://www.shnenglu.com/ivenher/comments/commentRss/17858.htmlhttp://www.shnenglu.com/ivenher/services/trackbacks/17858.html鎴戠敤VC鍐欑殑涓涓彲浠ヨ嚜鍔ㄦ敼鍙樻帶浠朵綅緗拰澶у皬鐨勫璇濇綾匯備粠榪欎釜綾葷戶鎵跨殑瀵硅瘽妗嗙被錛屽彧瑕佸湪OnInitDialog()閲屽啓鍑犺綆鍗曠殑浠g爜錛屽璇濇涓婄殑鎺т歡灝變細闅忕潃瀵硅瘽妗嗗ぇ灝忕殑鏀瑰彉鑰屾敼鍙樿嚜宸辯殑浣嶇疆鍜屽ぇ灝忋?/p>

 

        鍦ㄧ敤VC寮鍙戝簲鐢ㄧ▼搴忔椂錛岀粡甯鎬細瑕佸仛涓浜涘彲浠ユ敼鍙樺ぇ灝忕殑瀵硅瘽妗嗭紝鑰岃繖涓椂鍊欏氨瑕佹眰瀵硅瘽妗嗕笂鐨勬帶浠朵細闅忕潃瀵硅瘽妗嗗ぇ灝忕殑鏀瑰彉鑰屾敼鍙樿嚜宸辯殑浣嶇疆鍜屽ぇ灝忋傚鏋滄帶浠舵瘮杈冨皯錛岄偅鍙互鍦ㄥ璇濇鐨凮nSize()浜嬩歡閲岄潰娣誨姞浠g爜錛岄氳繃璁$畻鏉ヨ皟鏁村悇涓帶浠剁殑浣嶇疆鍜屽ぇ灝忥紱浣嗘槸錛屽鏋滃璇濇涓婄殑鎺т歡姣旇緝澶氱殑璇濓紝閭h繖灝嗘槸涓浠墮潪甯哥棝鑻︾殑浜嬫儏錛佽鏄▼搴忎腑鍙堟湁寰堝鍙互鏀瑰彉澶у皬鐨勫璇濇錛岄偅涓涓竴涓殑OnSize()鍐欎笅鏉ワ紝閭d細浣跨▼搴忓憳宕╂簝鐨勶紒
        涓轟簡瑙e喅榪欎釜闂錛屾垜鍐欎簡涓涓嚜鍔ㄦ敼鍙樻帶浠朵綅緗拰澶у皬鐨勫璇濇綾籆lxDialog銆備粠榪欎釜綾葷戶鎵跨殑瀵硅瘽妗嗙被錛屽彧瑕佸湪OnInitDialog()閲屽鎺т歡鍋氫竴浜涚畝鍗曠殑璁劇疆錛屽璇濇涓婄殑鎺т歡灝變細闅忕潃瀵硅瘽妗嗗ぇ灝忕殑鏀瑰彉鑰屾敼鍙樿嚜宸辯殑浣嶇疆鍜屽ぇ灝忋?br>        涓轟簡淇濆瓨鎺т歡淇℃伅錛屾垜瀹氫箟浜嗕竴涓粨鏋勶細

typedef struct _dlgControlTag
{
    int iId;  //  鎺т歡ID
    int iFlag;  //  鏍囧織錛岃〃紺烘庢牱鏀瑰彉鎺т歡鐨勪綅緗垨鑰呭ぇ灝?br>    int iPercent;  //  鏀瑰彉鍊煎崰瀵硅瘽妗嗘敼鍙樺肩殑鐧懼垎姣?br>} DLGCTLINFO, *PDLGCTLINFO;

        榪欓噷瑕佸緇撴瀯涓殑iFlag鍜宨Percent榪涜涓浜涜В閲娿傚叾涓璱Flag鏄笅闈㈢殑鏋氫婦鍊鹼細

enum
{
    MOVEX = 0,  //  鎺т歡鍦╔鏂瑰悜錛堝乏鍙籌級縐誨姩
    MOVEY,  //  鎺т歡鍦╕鏂瑰悜錛堜笂涓嬶級縐誨姩
    MOVEXY,  //  鎺т歡鍦╔鏂瑰悜鍜孻鏂瑰悜鍚屾椂縐誨姩
    ELASTICX,  //  鎺т歡鍦╔鏂瑰悜錛堝搴︼級鏀瑰彉澶у皬
    ELASTICY,  //  鎺т歡鍦╕鏂瑰悜鏀癸紙楂樺害錛夋敼鍙樺ぇ灝?/font>
    ELASTICXY  //  鎺т歡鍦╔鏂瑰悜鍜孻鏂瑰悜鍚屾椂鏀瑰彉澶у皬
};

        iPercent琛ㄧず鏀瑰彉鍊煎崰瀵硅瘽妗嗘敼鍙樺肩殑鐧懼垎姣斻備緥濡傦紝涓涓帶浠剁殑iPercent鍊間負100錛宨Flag鍊間負MOVEX錛岄偅涔堝綋瀵硅瘽妗嗙殑瀹藉害鏀瑰彉100涓崟浣嶇殑鏃跺欙紝榪欎釜鎺т歡灝卞湪X鏂瑰悜縐誨姩100涓崟浣嶏紱鍙堝錛屼竴涓帶浠剁殑iPercent鍊間負100錛宨Flag鍊間負ELASTICXY錛岄偅涔堝綋瀵硅瘽妗嗙殑瀹藉害鍜岄珮搴﹀垎鍒敼鍙?00涓崟浣嶇殑鏃跺欙紝鎺т歡鐨勯珮搴﹀拰瀹藉害涔熺浉搴旂殑鏀瑰彉100涓崟浣嶃?br>        涓嬮潰鏄緗帶浠朵俊鎭殑鍑芥暟錛?/p>

BOOL SetControlProperty(PDLGCTLINFO lp, int nElements);

        浣跨敤璧鋒潵闈炲父綆鍗曪紝鍦ㄥ璇濇鐨凮nInitDialog()鍑芥暟閲岄潰娣誨姞綾諱技涓嬮潰鐨勪唬鐮佸氨琛屼簡錛?/p>

//  鎺т歡淇℃伅鏁扮粍
static DLGCTLINFO  dcMenuGroup[] =
{
    {IDOK, MOVEX, 100},
    {IDCANCEL, MOVEX, 100},
    {IDC_BUTTON1, MOVEX, 50},
    {IDC_BUTTON1, MOVEY, 100},
    {IDC_EDIT1, ELASTICX, 100},
    {IDC_EDIT2, ELASTICX, 50},
    {IDC_EDIT3, ELASTICX, 50},
    {IDC_EDIT3, MOVEX, 50},
    {IDC_EDIT4, ELASTICY, 100},
    {IDC_EDIT5, ELASTICX, 100},
    {IDC_EDIT5, ELASTICY, 50},
    {IDC_EDIT6, ELASTICX, 100},
    {IDC_EDIT6, ELASTICY, 50},
    {IDC_EDIT6, MOVEY, 50},
};

//  璁劇疆鎺т歡淇℃伅
SetControlProperty(dcMenuGroup, sizeof(dcMenuGroup)/sizeof(DLGCTLINFO));

        涓嬮潰灝辨槸浣跨敤涓婇潰榪欐浠g爜鐨勫璇濇鏀瑰彉澶у皬鍓嶅悗鐨勬晥鏋滃浘錛?/p>

 

  

        瀵逛袱寮犳埅鍥劇殑姣旇緝鎴戜滑鍙互寰堝鏄撶殑鐞嗚В涓婇潰閭f浠g爜銆?br>        鎴戣繕鎻愪緵浜嗕竴涓嚱鏁幫細

void ShowSizeIcon(BOOL bShow = TRUE);

        鏉ヨ緗槸鍚︽樉紺哄璇濇鍙充笅瑙掕〃紺哄彲浠ユ敼鍙樺ぇ灝忕殑鍥炬爣銆傝繖涓浘鏍囨槸浠庣郴緇熶腑璇誨彇鐨勶紝鎴戜笂闈㈢殑鎴浘鏄疻indows2000涓嬬殑錛屽湪WindowsXP涓氨浼氳嚜鍔ㄥ彉鎴怷P椋庢牸鐨勩?br>        濂戒簡錛岄棽璇濅笉澶氳浜嗭紝涓嬮潰璐村嚭璇ュ璇濇綾籆lxDialog鐨勬簮浠g爜錛岄噷闈㈡湁璇︾粏鐨勬敞閲婏細
        lxDialog.h鏂囦歡錛?/p>

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//      鑷姩鏀瑰彉鎺т歡浣嶇疆鍜屽ぇ灝忕殑瀵硅瘽妗嗙被
//      鏂囦歡鍚嶏細lxDialog.h
//      浣滆咃細StarLee(
coolstarlee@sohu.com )
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class ClxDialog : public CDialog
{
public:
    ClxDialog(UINT nID, CWnd* pParent = NULL);

    typedef struct _dlgControlTag
    {
        int iId;
        int iFlag;
        int iPercent;
    } DLGCTLINFO, *PDLGCTLINFO;

    enum
    {
        MOVEX = 0,
        MOVEY,
        MOVEXY,
        ELASTICX,
        ELASTICY,
        ELASTICXY
    };

    //  璁劇疆鎺т歡淇℃伅
    BOOL SetControlProperty(PDLGCTLINFO lp, int nElements);

    //  鏄惁鍦ㄥ璇濇鍙充笅瑙掓樉紺鴻〃紺哄彲鏀瑰彉澶у皬鐨勫浘鏍?br>    void ShowSizeIcon(BOOL bShow = TRUE);

protected:
    virtual BOOL OnInitDialog();
    afx_msg void OnSize(UINT nType, int cx, int cy);
    afx_msg void OnSizing(UINT nSide, LPRECT lpRect);
    DECLARE_MESSAGE_MAP()

private:
    int m_iClientWidth;  //  瀵硅瘽妗哻lient鍖哄煙鐨勫搴?br>    int m_iClientHeight;  //  瀵硅瘽妗哻lient鍖哄煙鐨勯珮搴?br>    int m_iMinWidth;  //  瀵硅瘽妗嗙殑鏈灝忓搴?br>    int m_iMinHeight;  //  瀵硅瘽妗嗙殑鏈灝忛珮搴?br>    PDLGCTLINFO m_pControlArray;  //  鎺т歡淇℃伅鏁扮粍鎸囬拡
    int m_iControlNumber;  //  璁劇疆鎺т歡淇℃伅鐨勬帶浠朵釜鏁?br>    BOOL m_bShowSizeIcon;  //  鏄惁鏄劇ず琛ㄧず鍙敼鍙樺ぇ灝忕殑鍥炬爣
    CStatic m_wndSizeIcon;  //  鏀懼浘鏍囩殑闈欐佹帶浠?br>    //  淇濆瓨鍥炬爣鐨刡itmap
    CBitmap m_bmpSizeIcon;
    BITMAP m_bitmap; 
};

        lxDialog.cpp鏂囦歡:

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//      鑷姩鏀瑰彉鎺т歡浣嶇疆鍜屽ぇ灝忕殑瀵硅瘽妗嗙被
//      鏂囦歡鍚嶏細lxDialog.cpp
//      浣滆咃細StarLee(
coolstarlee@sohu.com )
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "lxDialog.h"

//  琛ㄧず鍙敼鍙樺ぇ灝忕殑鍥炬爣ID
#ifndef OBM_SIZE
#define OBM_SIZE 32766
#endif

ClxDialog::ClxDialog(UINT nID, CWnd* pParent /*=NULL*/)
    : CDialog(nID, pParent)
    , m_iClientWidth(0)
    , m_iClientHeight(0)
    , m_iMinWidth(0)
    , m_iMinHeight(0)
    , m_pControlArray(NULL)
    , m_iControlNumber(0)
    , m_bShowSizeIcon(TRUE)
{}

BEGIN_MESSAGE_MAP(ClxDialog, CDialog)
    ON_WM_SIZE()
    ON_WM_SIZING()
END_MESSAGE_MAP()

BOOL ClxDialog::OnInitDialog()
{
    CDialog::OnInitDialog();

    //  璁劇疆瀵硅瘽妗嗕負鍙彉澶у皬鐨?br>    ModifyStyle(0, WS_SIZEBOX);

    //  浠ュ璇濇鐨勫垵濮嬪ぇ灝忎綔涓哄璇濇鐨勫搴﹀拰楂樺害鐨勬渶灝忓?br>    CRect rectDlg;
    GetWindowRect(rectDlg);
    m_iMinWidth = rectDlg.Width();
    m_iMinHeight = rectDlg.Height();

    //  寰楀埌瀵硅瘽妗哻lient鍖哄煙鐨勫ぇ灝?/font>
    CRect rectClient;
    GetClientRect(rectClient);
    m_iClientWidth = rectClient.Width();
    m_iClientHeight = rectClient.Height();

    //  Load鍥炬爣
    m_bmpSizeIcon.LoadOEMBitmap(OBM_SIZE);
    m_bmpSizeIcon.GetBitmap(&m_bitmap);

    //  鍒涘緩鏄劇ず鍥炬爣鐨勯潤鎬佹帶浠跺茍鏀懼湪瀵硅瘽妗嗗彸涓嬭
    m_wndSizeIcon.Create(NULL, WS_CHILD | WS_VISIBLE | SS_BITMAP, CRect(0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight), this, 0);
    m_wndSizeIcon.SetBitmap(m_bmpSizeIcon);
    m_wndSizeIcon.MoveWindow(m_iClientWidth - m_bitmap.bmWidth, m_iClientHeight - m_bitmap.bmHeight, m_bitmap.bmWidth, m_bitmap.bmHeight);

    //  鏄劇ず鍥炬爣
    m_wndSizeIcon.ShowWindow(m_bShowSizeIcon);

    return TRUE;
}

void ClxDialog::OnSize(UINT nType, int cx, int cy)
{
    CDialog::OnSize(nType, cx, cy);
 
    //  瀵硅瘽妗嗗搴﹀拰楂樺害鐨勫閲?nbsp;
    int iIncrementX = cx - m_iClientWidth;
    int iIncrementY = cy - m_iClientHeight;

    //  鏈灝忓寲鏃跺閲忎負0
    if (nType == SIZE_MINIMIZED)
    {
        iIncrementX = iIncrementY = 0;
    }

    for (int i = 0; i < m_iControlNumber; i++)
    {
        CWnd *pWndCtrl = NULL;

        int iId = m_pControlArray[i].iId;
        int iFlag = m_pControlArray[i].iFlag;
        int iPercent = m_pControlArray[i].iPercent;

        //  鏃犳晥鍊?br>        if ((iPercent < 0) || (iPercent > 100))
            continue;

        //  寰楀埌鎺т歡鎸囬拡
        pWndCtrl = GetDlgItem(iId);
        if ((NULL != pWndCtrl) && IsWindow(pWndCtrl->GetSafeHwnd()))
        {
            CRect rectCtrl;
            pWndCtrl->GetWindowRect(rectCtrl);

            ScreenToClient(rectCtrl);

            int iLeft = rectCtrl.left;
            int iTop = rectCtrl.top;
            int iWidth = rectCtrl.Width();
            int iHeight = rectCtrl.Height();

            switch (iFlag)
            {
            case MOVEX:  //  X鏂瑰悜縐誨姩
                iLeft += (iIncrementX * iPercent / 100);
                break;

            case MOVEY:  //  Y鏂瑰悜縐誨姩
                iTop += (iIncrementY * iPercent / 100);
                break;

            case MOVEXY:  //  X鏂瑰悜鍜孻鏂瑰悜鍚屾椂縐誨姩
                iLeft += (iIncrementX * iPercent / 100);
                iTop += (iIncrementY * iPercent / 100);
                break;

            case ELASTICX:  //  X鏂瑰悜鏀瑰彉澶у皬
                iWidth += (iIncrementX * iPercent / 100);
                break;

            case ELASTICY:  //  Y鏂瑰悜鏀瑰彉澶у皬
                iHeight += (iIncrementY * iPercent / 100);
                break;

            case ELASTICXY:  //  X鏂瑰悜鍜孻鏂瑰悜鍚屾椂鏀瑰彉澶у皬
                iWidth += (iIncrementX * iPercent / 100);
                iHeight += (iIncrementY * iPercent / 100);
                break;

            default:
                ;
            }

            //  鎶婃帶浠剁Щ鍔ㄥ埌鏂頒綅緗?br>            pWndCtrl->MoveWindow(iLeft, iTop, iWidth, iHeight);
            }
    }

    //  鎶婂浘鏍囩Щ鍔ㄥ埌瀵硅瘽妗嗗彸涓嬭
    if (IsWindow(m_wndSizeIcon.GetSafeHwnd()))
        m_wndSizeIcon.MoveWindow(cx - m_bitmap.bmWidth, cy - m_bitmap.bmHeight, m_bitmap.bmWidth, m_bitmap.bmHeight);

    //  璁板綍瀵硅瘽妗哻lient鍖哄煙鐨勫ぇ灝?br>    if (nType != SIZE_MINIMIZED)
    {
        m_iClientWidth = cx;
        m_iClientHeight = cy;
    }
}

void ClxDialog::OnSizing(UINT nSide, LPRECT lpRect)
{
    CDialog::OnSizing(nSide, lpRect);

    //  瀵硅瘽妗嗕笉鑳藉皬浜庡垵濮嬪ぇ灝?/font>

    int iWidth = lpRect->right - lpRect->left;
    int iHeight = lpRect->bottom - lpRect->top;

    if (iWidth <= m_iMinWidth)
        lpRect->right = lpRect->left + m_iMinWidth;
  
    if(iHeight <= m_iMinHeight)
        lpRect->bottom = lpRect->top + m_iMinHeight;
}

BOOL ClxDialog::SetControlProperty(PDLGCTLINFO lp, int nElements)
{
    //  璁劇疆鎺т歡鏁扮粍淇℃伅

    if (NULL == lp)
        return FALSE;

    if (nElements <= 0)
        return FALSE;

    m_pControlArray = lp;
    m_iControlNumber = nElements;

    return TRUE;
}

void ClxDialog::ShowSizeIcon(BOOL bShow /*=NULL*/)
{
    m_bShowSizeIcon = bShow;
}



]]>
CRichEditCtrl http://www.shnenglu.com/ivenher/archive/2007/01/13/17593.html鐖遍キ鐩?/dc:creator>鐖遍キ鐩?/author>Sat, 13 Jan 2007 09:15:00 GMThttp://www.shnenglu.com/ivenher/archive/2007/01/13/17593.htmlhttp://www.shnenglu.com/ivenher/comments/17593.htmlhttp://www.shnenglu.com/ivenher/archive/2007/01/13/17593.html#Feedback1http://www.shnenglu.com/ivenher/comments/commentRss/17593.htmlhttp://www.shnenglu.com/ivenher/services/trackbacks/17593.html鏁癈RichEditCtrl鐨勫厛澶╀笉瓚沖強榪涘寲鏂規硶

  1. 涓嶈兘澶熻嚜鍔ㄥ垵濮嬪寲
  2. 涓嶈兘澶熸帴鍙桾AB閿?
  3. 涓嶈兘澶熼氳繃灞炴ц緗嚜鍔ㄦ崲琛?
  4. 涓嶈兘鏄劇ず鍥劇墖絳夊叾浠朞LE瀵硅薄
  5. 涓嶈兘澶熶嬌鐢–trl+C鏉ュ疄鐜版嫹璐?

涓嶈兘澶熻嚜鍔ㄥ垵濮嬪寲

褰撴垜絎竴嬈″皢Rich Edit鎺т歡鏀懼湪璧勬簮紿椾綋涓婄殑鏃跺欙紝鍙戠幇紼嬪簭鏍規湰灝變笉鑳借繍琛屻傚悗鏉ユ墠鎵懼埌鍘熷洜錛屽師鏉ich Edit 鎺т歡鏄疧le綾誨瀷鐨勬帶浠躲傚湪鍔犺澆Rich Edit 鎺т歡鐨勬椂鍊欙紝蹇呴』榪涜鍒濆鍖栥備唬鐮佸涓嬶細
BOOLCTestApp::InitInstance(){

          .....
          AfxInitRichEdit();

}

 涓嶈兘澶熸帴鍙桾AB閿?/strong>

灝?RichEdit鎺т歡鏀懼埌璧勬簮紿椾綋涓婄殑鏃跺欙紝鍙戠幇瀹冪殑灞炴ч〉涓茍娌℃湁璁劇疆鎺ュ彈TAB閿殑璁劇疆錛屽鑷村綋鎶婄劍鐐規斁鍒癛ich Edit 鎺т歡涓婄殑鏃跺欙紝涓鎸塼ab閿紝鐒︾偣灝辯Щ鍔ㄥ埌涓嬩竴涓帶浠朵笂闈㈠幓浜嗐?br>鍏蜂綋瑙e喅鏂規硶灝辨槸閲嶈澆Rich Edit鎺т歡鐨凮nGetDlgCode錛?br>渚嬪瓙浠g爜錛?br>.h鏂囦歡錛?br>class CMyRichEdit : public CRichEditCtrl{

          ........
          afx_msg UINT OnGetDlgCode( );
          ........

}
.cpp鏂囦歡錛?br>BEGIN_MESSAGE_MAP(CMyRichEdit, CRichEditCtrl)
          ON_WM_GETDLGCODE( )
END_MESSAGE_MAP()


UINT COleRichEditCtrl::OnGetDlgCode( ){

          return DLGC_WANTTAB;


}

 涓嶈兘澶熼氳繃灞炴ц緗嚜鍔ㄦ崲琛?/strong>

褰撴妸Rich Edit鎺т歡鏀懼埌璧勬簮紿椾綋涓婄殑鏃跺欙紝鍙戠幇鍦ㄥ畠鐨勫睘鎬х獥浣撲腑騫舵病鏈夎緗甊ich Edit鎺т歡鑷姩鎹㈣鐨勫睘鎬ц緗傝杈懼埌榪欎竴鐩殑錛屼緥瀛愪唬鐮佸涓嬶細
BOOL CTestDlg::InitDialog(){

          .............
          //m_RichEdit涓虹獥浣撶被鐨勬垚鍛樺彉閲?br>          this->m_RichEdit.SetTargetDevice(NULL,0);
          ............

}

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

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

澶ц嚧浜嗚В浜咺RichEditOleCallback鎺ュ彛鍚庯紝灝卞簲璇ユ竻妤氾紝瑕佹樉紺哄浘鐗囩瓑ole瀵硅薄錛岃嚦灝戝簲璇ュ疄鐜癎etNewStorage鏂規硶錛屽洜涓鴻鏂規硶鏄瓨鍌╫le瀵硅薄鐨勬帴鍙f柟娉曘?br>
浠ヤ笅鏄帴鍙e0鏄庣殑浠g爜錛?br>interface IExRichEditOleCallback : 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);

}
鍏充簬鎺ュ彛鐨勫疄鐜幫紝灝嗚闄勫湪鏈鍚庣殑闄勫綍涓?/p>


涓嶈兘澶熶嬌鐢–trl+C鏉ュ疄鐜版嫹璐?/strong>

瀹為檯涓婏紝CRichEditCtrl鏈韓鏄敮鎸丆trl+C瀹炵幇鎷瘋礉鍔熻兘鐨勶紝浣嗘槸褰撴垜鍦–RichiEditCtrl鐨勭戶鎵跨被涓嬌鐢ㄤ簡IRichiEditCallback鎺ュ彛鍚庯紝瀹冨氨涓嶅湪鏀寔Ctrl+C瀹炵幇鎷瘋礉鍔熻兘浜嗐傛垜鎯抽棶棰樺氨鍑哄湪IRichEditCallback鎺ュ彛涓娿?br>浠旂粏鐪嬩簡涓閬嶅畠鐨勫府鍔╂枃妗o紝鎴戝彂鐜伴棶棰樺氨鍑哄湪GetClipboardData涓婏紝鎴戞病鏈夊湪瀹冪殑瀹炵幇鏂規硶涓啓浠g爜錛屽彧鏄繑鍥炰簡S_OK錛屽鏋滆澶勭悊Ctrl+C錛屽氨蹇呴』榪斿洖E_NOTIMPL銆?br>
浠ヤ笂鏄垜榪戝嚑澶╃殑寮鍙戠粡鍘嗭紝涓庡ぇ瀹跺垎浜紝榪樺笇鏈涜礬榪囩殑楂樻墜澶氬鎸囨暀銆?br>鍦ㄤ互涓嬪叧浜嶳ichEdit鐨勪唬鐮佷緥瀛愪腑錛屾垜鍙傝冧簡Mike O'Neill 鐨勪唬鐮侊紝鍐嶆璋㈣阿浠栫殑璐$尞銆?br>

闄勫綍
.h鏂囦歡

 

#if  !defined(AFX_OLERICHEDITCTRL_H__3DFF15EE_7336_4297_9620_7F00B611DAA1__INCLUDED_)
#define  AFX_OLERICHEDITCTRL_H__3DFF15EE_7336_4297_9620_7F00B611DAA1__INCLUDED_

#if  _MSC_VER > 1000
#pragma once
#endif   //  _MSC_VER > 1000
//  OleRichEditCtrl.h : header file
//


錛僫 nclude 
< richole.h >


/////////////////////////////////////////////////////////////////////////// //
//  COleRichEditCtrl window

class  COleRichEditCtrl :  public  CRichEditCtrl
{
//  Construction
public :
 COleRichEditCtrl();
 
virtual   ~ COleRichEditCtrl();

 
long  StreamInFromResource( int  iRes, LPCTSTR sType);



protected :
 
 
static  DWORD CALLBACK readFunction(DWORD dwCookie,
   LPBYTE lpBuf,   
//  the buffer to fill
   LONG nCount,    //  number of bytes to read
   LONG *  nRead);    //  number of bytes actually read

 
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);
 };
 

public :

//  Overrides
 
//  ClassWizard generated virtual function overrides
 
// {{AFX_VIRTUAL(COleRichEditCtrl)
  protected :
 
virtual   void  PreSubclassWindow();
 
// }}AFX_VIRTUAL

//  Implementation
public :


 
//  Generated message map functions
protected :
 
// {{AFX_MSG(COleRichEditCtrl)
 afx_msg  int  OnCreate(LPCREATESTRUCT lpCreateStruct);
 
 
// }}AFX_MSG
 afx_msg UINT OnGetDlgCode( );
 DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////// //

// {{AFX_INSERT_LOCATION}}
//  Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif   //  !defined(AFX_OLERICHEDITCTRL_H__3DFF15EE_7336_4297_9620_7F00B611DAA1__INCLUDED_)






.cpp鏂囦歡

 

//  OleRichEditCtrl.cpp : implementation file
//

錛僫 nclude 
" stdafx.h "
錛僫 nclude 
" OleRichEditCtrl.h "

#ifdef _DEBUG
#define  new DEBUG_NEW
#undef  THIS_FILE
static   char  THIS_FILE[]  =  __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////// //
//  COleRichEditCtrl

COleRichEditCtrl::COleRichEditCtrl()
{
 m_bCallbackSet 
=  FALSE;
}

COleRichEditCtrl::
~ COleRichEditCtrl()
{
 
//  IExRichEditOleCallback class is a reference-counted class  
 
//  which deletes itself and for which delete should not be called

 
//  delete m_pIRichEditOleCallback;
}


BEGIN_MESSAGE_MAP(COleRichEditCtrl, CRichEditCtrl)
 
// {{AFX_MSG_MAP(COleRichEditCtrl)
 ON_WM_CREATE()
 
// }}AFX_MSG_MAP
 ON_WM_GETDLGCODE( )
END_MESSAGE_MAP()
//


int  COleRichEditCtrl::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
  
if  (CRichEditCtrl::OnCreate(lpCreateStruct)  ==   - 1 )
   
return   - 1 ;
  
 
//  m_pIRichEditOleCallback should have been created in PreSubclassWindow

  ASSERT( m_pIRichEditOleCallback 
!=  NULL ); 

 
//  set the IExRichEditOleCallback pointer if it wasn't set 
 
//  successfully in PreSubclassWindow

 
if  (  ! m_bCallbackSet )
 {
  SetOLECallback( m_pIRichEditOleCallback );
 }
  
  
return   0 ;
}

void  COleRichEditCtrl::PreSubclassWindow() 
{
 
//  base class first
 CRichEditCtrl::PreSubclassWindow(); 

 m_pIRichEditOleCallback 
=  NULL;
 m_pIRichEditOleCallback 
=   new  IExRichEditOleCallback;
 ASSERT( m_pIRichEditOleCallback 
!=  NULL );

 m_bCallbackSet 
=  SetOLECallback( m_pIRichEditOleCallback );
}


long  COleRichEditCtrl::StreamInFromResource( int  iRes, LPCTSTR sType)
{
 HINSTANCE hInst 
=  AfxGetInstanceHandle();
 HRSRC hRsrc 
=  ::FindResource(hInst,
  MAKEINTRESOURCE(iRes), sType);
 
 DWORD len 
=  SizeofResource(hInst, hRsrc); 
 BYTE
*  lpRsrc  =  (BYTE * )LoadResource(hInst, hRsrc); 
 ASSERT(lpRsrc); 
 
 CMemFile mfile;
 mfile.Attach(lpRsrc, len); 

 EDITSTREAM es;
 es.pfnCallback 
=  readFunction;
 es.dwError 
=   0 ;
 es.dwCookie 
=  (DWORD)  & mfile;

 
return  StreamIn( SF_RTF, es );
}


 

/*  static  */
DWORD CALLBACK COleRichEditCtrl::readFunction(DWORD dwCookie,
   LPBYTE lpBuf,   
//  the buffer to fill
   LONG nCount,    //  number of bytes to read
   LONG *  nRead)    //  number of bytes actually read
{
 CFile
*  fp  =  (CFile  * )dwCookie;
 
* nRead  =  fp -> Read(lpBuf,nCount);
 
return   0 ;
}

/////////////////////////////////////////////////////////////////////////// //


 

COleRichEditCtrl::IExRichEditOleCallback::IExRichEditOleCallback()
{
 pStorage 
=  NULL;
 m_iNumStorages 
=   0 ;
 m_dwRef 
=   0 ;

 
//  set up OLE storage

 HRESULT hResult 
=  ::StgCreateDocfile(NULL,
  STGM_TRANSACTED 
|  STGM_READWRITE  |  STGM_SHARE_EXCLUSIVE  /* | STGM_DELETEONRELEASE  */ | STGM_CREATE ,
  
0 & pStorage );

 
if  ( pStorage  ==  NULL  ||
  hResult 
!=  S_OK )
 {
  AfxThrowOleException( hResult );
 }
}

COleRichEditCtrl::IExRichEditOleCallback::
~ IExRichEditOleCallback()
{
}


 

HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetNewStorage(LPSTORAGE
*  lplpstg)
{
 m_iNumStorages
++ ;
 WCHAR tName[
50 ];
 swprintf(tName, L
" REOLEStorage%d " , m_iNumStorages);

 HRESULT hResult 
=  pStorage -> CreateStorage(tName, 
  STGM_TRANSACTED 
|  STGM_READWRITE  |  STGM_SHARE_EXCLUSIVE  |  STGM_CREATE ,
  
0 0 , lplpstg );

 
if  (hResult  !=  S_OK )
 {
  ::AfxThrowOleException( hResult );
 }

 
return  hResult;
}

HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::QueryInterface(REFIID iid, 
void   **  ppvObject)
{

 HRESULT hr 
=  S_OK;
 
* ppvObject  =  NULL;
 
 
if  ( iid  ==  IID_IUnknown  ||
  iid 
==  IID_IRichEditOleCallback )
 {
  
* ppvObject  =   this ;
  AddRef();
  hr 
=  NOERROR;
 }
 
else
 {
  hr 
=  E_NOINTERFACE;
 }

 
return  hr;
}



ULONG STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::AddRef()
{
 
return   ++ m_dwRef;
}

 

 

ULONG STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::Release()
{
 
if  (  -- m_dwRef  ==   0  )
 {
  delete 
this ;
  
return   0 ;
 }

 
return  m_dwRef;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetInPlaceContext(LPOLEINPLACEFRAME FAR 
* lplpFrame,
 LPOLEINPLACEUIWINDOW FAR 
* lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo)
{
 
return  S_OK;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::ShowContainerUI(BOOL fShow)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::QueryInsertObject(LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp)
{
 
return  S_OK;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::DeleteObject(LPOLEOBJECT lpoleobj)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::QueryAcceptData(LPDATAOBJECT lpdataobj, CLIPFORMAT FAR 
* lpcfFormat,
 DWORD reco, BOOL fReally, HGLOBAL hMetaPict)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::ContextSensitiveHelp(BOOL fEnterMode)
{
 
return  S_OK;
}



HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetClipboardData(CHARRANGE FAR 
* lpchrg, DWORD reco, LPDATAOBJECT FAR  * lplpdataobj)
{
 
return  E_NOTIMPL;
}


HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetDragDropEffect(BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect)
{
 
return  S_OK;
}

HRESULT STDMETHODCALLTYPE 
COleRichEditCtrl::IExRichEditOleCallback::GetContextMenu(WORD seltyp, LPOLEOBJECT lpoleobj, CHARRANGE FAR 
* lpchrg,
 HMENU FAR 
* lphmenu)
{
 
return  S_OK;
}

//  TabRichEditCtrl 娑堟伅澶勭悊紼嬪簭
UINT COleRichEditCtrl::OnGetDlgCode( ){

 
return  DLGC_WANTTAB;
}



]]>
鍦╒C涓皟鐢╓ORD錛堟樉紺猴紝淇敼錛屽瓨鐩橈紝榪愯瀹?錛堣漿錛?/title><link>http://www.shnenglu.com/ivenher/archive/2007/01/13/17592.html</link><dc:creator>鐖遍キ鐩?/dc:creator><author>鐖遍キ鐩?/author><pubDate>Sat, 13 Jan 2007 08:52:00 GMT</pubDate><guid>http://www.shnenglu.com/ivenher/archive/2007/01/13/17592.html</guid><wfw:comment>http://www.shnenglu.com/ivenher/comments/17592.html</wfw:comment><comments>http://www.shnenglu.com/ivenher/archive/2007/01/13/17592.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ivenher/comments/commentRss/17592.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ivenher/services/trackbacks/17592.html</trackback:ping><description><![CDATA[<span id=ArticleContent1_ArticleContent1_lblContent twffan="done">  <p>錛?錛変嬌鐢ˋppWizard鍒涘緩涓涓柊鐨凪FC AppWizard(EXE)宸ョ▼錛屽懡鍚嶄負"office"  <br>錛?錛夐夋嫨鍗曟枃妗h鍥?SDI)緇撴瀯錛屽湪絎?姝ヤ腑闇瑕侀変腑Container,浠ユ彁渚涘鍣ㄦ敮鎸?騫朵笖閫変腑active document container 鍏跺畠閮戒負榛樿</p> <p>錛?錛夊湪View鑿滃崟涓紝閫塁lassWizard,閫堿utomation閫夐」鍗?閫堿dd Class,閫夋嫨From a TypeLibrary, 鍦∣ffice鐩綍涓変腑Microsoft Word 97/2000 綾誨瀷搴揥ord8.olb鎴朩ord9.olb錛岄変腑application,document,_document銆傚崟鍑籵k</p> <p>(4)緇機OfficeCntrItem娣誨姞涓鏂規硶銆侴etIDispatch()</p> <p>鍏舵簮鐮佸涓嬶細</p> <p>  ASSERT_VALID(this);  <br> ASSERT(m_lpObject != NULL);   <br> LPUNKNOWN lpUnk = m_lpObject;   <br> Run();   <br> LPOLELINK lpOleLink = NULL;  <br> if (m_lpObject->QueryInterface(IID_IOleLink, (LPVOID FAR*)&lpOleLink) == NOERROR)   <br> {   <br>  ASSERT(lpOleLink != NULL);   <br>  lpUnk = NULL;       <br>  if (lpOleLink->GetBoundSource(&lpUnk) != NOERROR)    <br>  {    <br>   TRACE0("Warning: Link is not connected!\n");    <br>   lpOleLink->Release();    <br>   return NULL;    <br>  }   <br>  ASSERT(lpUnk != NULL);   <br> }    <br> LPDISPATCH lpDispatch = NULL;  <br> if (lpUnk->QueryInterface(IID_IDispatch, (LPVOID FAR*)&lpDispatch)!=NOERROR)   <br> { <br>    TRACE0("Warning: does not support IDispatch!\n");   <br>  return NULL; <br>  <br> } <br> ASSERT(lpDispatch != NULL);  <br> return lpDispatch; <br>錛?錛夈傚湪officeView.h娣誨姞#include "msword8.h"</p> <p>錛?錛夈備慨鏀箆oid COfficeView::OnInsertObject()錛屾簮鐮佸涓嬶細</p> <p> BeginWaitCursor();</p> <p> COfficeCntrItem* pItem = NULL;<br> TRY<br> {<br>  // Create new item connected to this document.<br>  COfficeDoc* pDoc = GetDocument();<br>  ASSERT_VALID(pDoc);<br>  pItem = new COfficeCntrItem(pDoc);<br>  ASSERT_VALID(pItem);</p> <p>  // Initialize the item from the dialog data.<br> /* if (!dlg.CreateItem(pItem))<br>   AfxThrowMemoryException();  // any exception will do<br>  ASSERT_VALID(pItem);*/<br>   CLSID clsid; //<br>  if(FAILED(::CLSIDFromProgID(L"Word.document",&clsid))) <br>   AfxThrowMemoryException(); <br>  <br>  if(!pItem->CreateNewItem(clsid)) <br>  /*<a href="file://if/">if</a>(!pItem->CreateFromFile (filename,clsid)) */<br>   AfxThrowMemoryException(); <br>  ASSERT_VALID(pItem); <br>  <br>  pItem->Activate (OLEIVERB_SHOW,this);<br>  <br> </p> <p>  ASSERT_VALID(pItem);<br>         m_pSelection = pItem;   // set selection to last inserted item<br>  pDoc->UpdateAllViews(NULL);<br>  // As an arbitrary user interface design, this sets the selection<br>  //  to the last item inserted.</p> <p>  // TODO: reimplement selection as appropriate for your application</p> <p>  m_pSelection = pItem;   // set selection to last inserted item<br>  pDoc->UpdateAllViews(NULL);<br> }<br> CATCH(CException, e)<br> {<br>  if (pItem != NULL)<br>  {<br>   ASSERT_VALID(pItem);<br>   pItem->Delete();<br>  }<br>  AfxMessageBox(IDP_FAILED_TO_CREATE);<br> }<br> END_CATCH</p> <p> EndWaitCursor();</p> <p>錛?錛夐噸杞絀D鈥擣ILE鈥擲AVE錛?/p> <p>void COfficeView::OnFileSave() <br>{<br> // TODO: Add your command handler code here<br>  TRY{<br>     LPDISPATCH lpDisp; <br>  <br>  lpDisp = m_pSelection->GetIDispatch(); </p> <p>    Documents docs;<br>  <br>  _Application app; <br>  <br>  _Document mydoc;<br>  Documents my;</p> <p>  mydoc.AttachDispatch (lpDisp,TRUE);<br>  app=mydoc.GetApplication ();<br>    /*   <a href="file://app.run/">app.Run</a> ("Macro3");*/<br>     mydoc.Activate ();<br>  BOOL password=mydoc.GetHasPassword ();<br>  mydoc.SetPassword ("love");<br>  password=mydoc.GetHasPassword ();  <br>  COleVariant vFalse((short)FALSE);<br>  mydoc.SaveAs (COleVariant("c:\\love.doc"),vFalse,vFalse, COleVariant(""),vFalse,<br>   COleVariant(""),vFalse,vFalse,vFalse,vFalse,vFalse);<br>  <br> }<br> CATCH(CException, e)<br> {<br>        }<br> END_CATCH<br>}<br><br>bulid,click insert object,and edit ,and save.maybe run macro.</p> </span> <img src ="http://www.shnenglu.com/ivenher/aggbug/17592.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ivenher/" target="_blank">鐖遍キ鐩?/a> 2007-01-13 16:52 <a href="http://www.shnenglu.com/ivenher/archive/2007/01/13/17592.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.010jf.cn" target="_blank">免费观看久久精彩视频</a>| <a href="http://www.qcbijj.cn" target="_blank">久久精品毛片免费观看</a>| <a href="http://www.cs556.cn" target="_blank">色婷婷久久综合中文久久一本</a>| <a href="http://www.beijianyi.cn" target="_blank">精品无码久久久久久久久久</a>| <a href="http://www.kydxx.cn" target="_blank">午夜视频久久久久一区</a>| <a href="http://www.ru87.cn" target="_blank">一本久久知道综合久久</a>| <a href="http://www.longyan8.cn" target="_blank">久久伊人精品青青草原高清</a>| <a href="http://www.furuike.com.cn" target="_blank">日韩va亚洲va欧美va久久</a>| <a href="http://www.swwpb.cn" target="_blank">久久婷婷五月综合色高清</a>| <a href="http://www.qxri.cn" target="_blank">久久综合一区二区无码</a>| <a href="http://www.vphz.cn" target="_blank">久久精品中文騷妇女内射</a>| <a href="http://www.fsxslvs.cn" target="_blank">理论片午午伦夜理片久久</a>| <a href="http://www.wlrmall.cn" target="_blank">精品免费久久久久久久</a>| <a href="http://www.xhlwd.cn" target="_blank">亚洲精品国产自在久久</a>| <a href="http://www.fc117.cn" target="_blank">免费国产99久久久香蕉</a>| <a href="http://www.086144.cn" target="_blank">久久久久久人妻无码</a>| <a href="http://www.xxysw.com.cn" target="_blank">一极黄色视频久久网站</a>| <a href="http://www.2046film.cn" target="_blank">国内精品久久久久国产盗摄</a>| <a href="http://www.igdl.cn" target="_blank">久久久久99精品成人片试看</a>| <a href="http://www.b42k.cn" target="_blank">思思久久精品在热线热</a>| <a href="http://www.lsjtht.cn" target="_blank">国产亚洲美女精品久久久</a>| <a href="http://www.xorfbrt.cn" target="_blank">97久久久久人妻精品专区</a>| <a href="http://www.a-house.com.cn" target="_blank">综合人妻久久一区二区精品</a>| <a href="http://www.pcb0.cn" target="_blank">久久夜色精品国产www</a>| <a href="http://www.shebianfen.cn" target="_blank">四虎国产精品免费久久久</a>| <a href="http://www.cqmh.com.cn" target="_blank">国产精品禁18久久久夂久</a>| <a href="http://www.003kd.cn" target="_blank">99久久精品免费看国产一区二区三区 </a>| <a href="http://www.wordboy.cn" target="_blank">国产精品久久久久影院色</a>| <a href="http://www.semtmtw.cn" target="_blank">欧美日韩精品久久免费</a>| <a href="http://www.fengbiaochem.com.cn" target="_blank">久久久久亚洲AV成人网人人软件</a>| <a href="http://www.92dyy.cn" target="_blank">久久男人Av资源网站无码软件</a>| <a href="http://www.bash001.cn" target="_blank">久久久午夜精品福利内容</a>| <a href="http://www.rainbow-city.cn" target="_blank">久久青青草原精品国产不卡</a>| <a href="http://www.byrrj.cn" target="_blank">久久高清一级毛片</a>| <a href="http://www.0553fc.cn" target="_blank">国产真实乱对白精彩久久</a>| <a href="http://www.xiaosizhi.cn" target="_blank">久久se这里只有精品</a>| <a href="http://www.mbjywz.cn" target="_blank">久久综合色区</a>| <a href="http://www.guceka.cn" target="_blank">久久综合鬼色88久久精品综合自在自线噜噜 </a>| <a href="http://www.searchwiz.cn" target="_blank">国产精品99久久精品爆乳</a>| <a href="http://www.omrk.cn" target="_blank">日本久久久久久中文字幕</a>| <a href="http://www.moisky.com.cn" target="_blank">久久免费视频观看</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>