锘??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美日韩麻豆,欧美日韩蜜桃,日韩视频中文http://www.shnenglu.com/yishanhante/category/3726.htmlzh-cnFri, 23 May 2008 01:29:33 GMTFri, 23 May 2008 01:29:33 GMT60浣跨敤VC6.0瀹炵幇紿楀彛鐨勪換鎰忓垎鍓瞇杞琞http://www.shnenglu.com/yishanhante/articles/20772.htmljayjayWed, 28 Mar 2007 07:20:00 GMThttp://www.shnenglu.com/yishanhante/articles/20772.htmlhttp://www.shnenglu.com/yishanhante/comments/20772.htmlhttp://www.shnenglu.com/yishanhante/articles/20772.html#Feedback0http://www.shnenglu.com/yishanhante/comments/commentRss/20772.htmlhttp://www.shnenglu.com/yishanhante/services/trackbacks/20772.html 涓銆佸叧浜嶤SplitterWnd綾?/b>
鎴戜滑鍦ㄤ嬌鐢–uteFtp鎴栬匩etAnt絳夊伐鍏風(fēng)殑鏃跺欙紝涓鑸兘浼?xì)琚叾澶嶆潅鐨勭晫闈㈡墍鍚稿紩錛屽湪榪欎簺鐣岄潰涓獥鍙h鍒嗗壊涓鴻嫢騫茬殑鍖哄煙錛岀湡姝e仛鍒頒簡(jiǎn)紿楀彛鐨勪換鎰忓垎鍓層?閭d箞鎴戜滑鑷繁濡備綍鍒涘緩綾諱技鐨勭晫闈紝涔熷疄鐜扮獥鍙g殑浠繪剰鐨勫垎鍓插憿 錛熷湪VC6.0涓繖灝遍渶瑕佷嬌鐢ㄥ埌CSplitterWnd綾匯侰SplitterWnd鐪嬩笂鍘誨儚鏄竴縐嶇壒孌婄殑妗嗘灦紿楀彛錛屾瘡涓獥鍙i兘琚浉鍚岀殑鎴栬呬笉鍚岀殑瑙嗗浘鎵濉厖銆傚綋紿楀彛琚垏鍒嗗悗鐢ㄦ埛鍙互浣跨敤榧犳爣縐誨姩鍒囧垎鏉℃潵璋冩暣紿楀彛鐨勭浉瀵瑰昂瀵搞傝櫧鐒禫C6.0鏀寔浠嶢ppWizard涓垱寤哄垎鍓茬獥鍙o紝浣嗘槸鑷姩鍔犲叆鐨勫垎鍓叉潯鎬繪槸涓嶈兘璁╂垜浠弧鎰忥紝鍥犳鎴戜滑榪樻槸閫氳繃鎵嬪伐澧炲姞浠g爜鏉ョ啛鎮(zhèn)夎繖涓被銆?
CSplitterWnd鐨勬瀯閫犲嚱鏁頒富瑕佸寘鎷笅闈笁涓?

BOOL Create(CWnd* pParentWnd,int nMaxRows,int nMaxCols,SIZE sizeMin,CCreateContext* pContext,DWORD dwStyle,UINT nID);
鍔熻兘鎻忚堪錛氳鍑芥暟鐢ㄦ潵鍒涘緩鍔ㄦ佸垏鍒嗙獥鍙c?鍙傛暟鍚箟錛歱ParentWnd 鍒囧垎紿楀彛鐨勭埗妗嗘灦紿楀彛銆?nMaxRows,nMaxCols鏄垱寤虹殑鏈澶х殑鍒楁暟鍜岃鏁般?sizeMin鏄獥鏍肩殑鐜板疄澶у皬銆?pContext 澶у鏁版儏鍐典笅浼犵粰鐖剁獥鍙c?nID鏄瓧紿楀彛鐨処D鍙?
BOOL CreateStatic(CWnd* pParentWnd,int nRows,int nCols,DWORD dwStyle,UINT nID) 
鍔熻兘鎻忚堪錛氱敤鏉ュ垱寤哄垏鍒嗙獥鍙c?鍙傛暟鍚箟鍚屼笂銆?
BOOL CreateView (int row,int col,CruntimeClass* pViewClass,SIZE sizeinit,CcreateContext* pContext);
鍔熻兘鎻忚堪錛氫負(fù)闈?rùn)鎬佸垏鍒嗙殑紿楀彛鐨勭綉鏍煎~鍏呰鍥俱傚湪灝嗚鍥句簬鍒囧垎紿楀彛鑱旂郴鍦ㄤ竴璧風(fēng)殑鏃跺欏繀 欏誨厛灝嗗垏鍒嗙獥鍙e垱寤哄ソ銆?
鍙傛暟鍚箟錛氬悓涓娿?br />浠嶤SplitterWnd婧愮▼搴忓彲浠ョ湅鍑轟笉綆℃槸浣跨敤鍔ㄦ佸垱寤篊reate榪樻槸浣跨敤闈?rùn)鎬佸垱寤篊reateStatic錛屽湪鍑芥暟涓兘璋冪敤浜?jiǎn)涓涓繚鎶ゅ嚱鏁癈reateCommon錛屼粠涓嬮潰鐨凜reateCommon鍑芥暟涓殑鍏抽敭浠g爜鍙互鐪嬪嚭鍒涘緩CSplitterWnd鐨勫疄璐ㄦ槸鍒涘緩浜?jiǎn)涓緋誨垪鐨凪DI瀛愮獥鍙c?
DWORD dwCreateStyle = dwStyle & ~(WS_HSCROLL|WS_VSCROLL);
if (afxData.bWin4) 
       dwCreateStyle &= ~WS_BORDER; //create with the same wnd-class as MDI-Frame (no erase bkgnd) 
if (!CreateEx(0, _afxWndMDIFrame, NULL, dwCreateStyle, 
          0, 0, 0, 0,pParentWnd->m_hWnd, (HMENU)nID, NULL)) 
       return FALSE; // create invisible 
          

浜屻佸垱寤哄祵濂楀垎鍓茬獥鍙?/b>
2.1鍒涘緩鍔ㄦ佸垎鍓茬獥鍙?/b>
鍔ㄦ佸垎鍓茬獥鍙d嬌鐢–reate鏂規(guī)硶銆備笅闈㈢殑浠g爜灝嗗垱寤?x2鐨勭獥鏍箋?
m_wndSplitter.Create(this,2,2,CSize(100,100),pContext);

浣嗘槸鍔ㄦ佸垱寤虹殑鍒嗗壊紿楀彛鐨勭獥鏍兼暟鐩笉鑳借秴榪?x2錛岃屼笖瀵逛簬鎵鏈夌殑紿楁牸錛岄兘蹇呴』鍏變韓鍚屼竴涓鍥撅紝鎵鍙楃殑闄愬埗涔熸瘮杈冨錛屽洜姝ゆ垜浠笉灝嗗姩鎬佸垱寤轟綔涓洪噸鐐廣傛垜浠殑涓昏綺懼姏鏀懼湪闈?rùn)鎬佸垎鍓茬獥鍙g殑鍒涘緩涓娿?
2.2鍒涘緩闈?rùn)鎬佸垎鍓茬獥鍙?/b>
涓庡姩鎬佸垱寤虹浉姣旓紝闈?rùn)鎬佸垱寤虹殑浠g爜瑕佺畝鍗曡澶氾紝鑰屼笖鍙互鏈澶氬垱寤?6x16鐨勭獥鏍箋備笉鍚岀殑紿楁牸鎴戜滑鍙互浣跨敤CreateView濉厖涓嶅悓鐨勮鍥俱?
鍦ㄨ繖閲屾垜浠皢鍒涘緩CuteFtp鐨勭獥鍙e垎鍓層侰uteFtp鐨勫垎鍓叉儏鍐靛涓嬶細(xì)
CCuteFTPView
CView2
CView3
CView4

鍒涘緩姝ラ錛?
鈻?鍦ㄥ垱寤轟箣鍓嶆垜浠繀欏誨厛鐢ˋppWizard鐢熸垚鍗曟枃妗uteFTP錛岀敓鎴愮殑瑙嗙被涓?CCuteFTPView.鍚屾椂鍦ㄥ鍔犱笁涓綾繪垨鑰呬粠瑙嗙被緇ф壙鑰屾潵鐨勬淳鐢熺被CView2,CView3 CView4.
鈻?澧炲姞鎴愬憳錛?/b>
鍦–mainfrm.h涓垜浠皢澧炲姞涓嬮潰鐨勪唬鐮侊細(xì)

CSplitterWnd wndSplitter1;
                  CSplitterWnd wndSplitter2;
鈻?閲嶈澆CMainFrame::OnCreateClient()鍑芥暟錛?/b>
BOOL CMainFrame::OnCreateClient( LPCREATESTRUCT  /*lpcs*/, CCreateContext* pContext) 
{ //鍒涘緩涓涓潤(rùn)鎬佸垎鏍忕獥鍙o紝鍒嗕負(fù)涓夎涓鍒?
     if(m_wndSplitter1.CreateStatic(this,3,1)==NULL) 
              return FALSE;
  //灝咰CuteFTPView榪炴帴鍒?琛?鍒楃獥鏍間笂
     m_wndSplitter1.CreateView(0,0,RUNTIME_CLASS(CCuteFTPView),CSize(100,100), pContext); 
     m_wndSplitter1.CreateView(2,0,RUNTIME_CLASS(CView4),CSize(100,100),pContext); 
  //灝咰View4榪炴帴鍒?琛?鍒?
     if(m_wndSplitter2.CreateStatic(&m_wndSplitter,1,2,WS_CHILD|WS_VISIBLE, 
          m_wndSplitter.IdFromRowCol(1, 0))==NULL) 
               return FALSE; //灝嗙1琛?鍒楀啀鍒嗗紑1琛?鍒?
  //灝咰View2綾昏繛鎺ュ埌絎簩涓垎鏍忓璞$殑0琛?鍒?
          m_wndSplitter2.CreateView(0,0,RUNTIME_CLASS(CView2),CSize(400,300),pContext); 
  //灝咰View3綾昏繛鎺ュ埌絎簩涓垎鏍忓璞$殑0琛?鍒?
          m_wndSplitter2.CreateView(0,1,RUNTIME_CLASS(CView3),CSize(400,300),pContext); 
               return TRUE; 
} 
2.3瀹炵幇鍚勪釜鍒嗗壊鍖哄煙鐨勯氫俊
鈻?b>鏈夋枃妗g浉榪炵殑瑙嗗浘涔嬮棿鐨勯氫俊
鐢盇ppWizard鐢熸垚鐨凜CuteFTPView鏄笌鏂囨。鐩歌繛鐨勶紝鍚屾椂鎴戜滑涔熻CView2涓庢枃妗g浉榪烇紝鍥犳鎴戜滑闇瑕佷慨鏀笴CuteFTPApp鐨処nitInstance()鍑芥暟錛屾垜浠皢澧炲姞涓嬮潰鐨勯儴鍒嗐?br />
AddDocTemplate (new CMultiDocTemplate(IDR_VIEW2TYPE, 
          
          RUNTIME_CLASS(CMainDoc), 
          RUNTIME_CLASS(CMDIChildWnd), 
          RUNTIME_CLASS(CView2))); 
鎴戜滑鐜板湪鏉ュ疄鐜癈CuteFTPView涓嶤View2涔嬮棿鐨勯氫俊銆傜敱浜庤窡鏂囨。綾葷浉榪炵殑瑙嗗浘綾?鏄笉鑳藉畨鍏ㄧ殑涓庨櫎鏂囨。綾諱箣澶栫殑鍏朵綑鐨勮鍥劇被閫氫俊鐨勩傚洜姝ゆ垜浠彧鑳借浠栦滑閮戒笌鏂囨。 綾婚氫俊銆傚湪鏂囨。涓垜浠緗浉搴旂殑鎸囬拡浠ョ敤鏉ヨ幏鐨勫悇涓鍥俱傛垜浠噸杞?CCuteFTPView::OnOpenDocument()鍑芥暟錛?
CCuteFTPView* pCuteFTPView;
CView2* pView2; POSITION pos; CView* pView; while(pos!=NULL) { pView=GetNextView(pos); if(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) pCuteFTPView=(CCuteFTPView*)pView; else(pView->IsKindOf(RUNTIME_CLASS(CCuteFTPView))==NULL) pView2=(CView2*)pView; }
榪欐牱鎴戜滑鍦ㄦ枃妗g被涓氨鑾風(fēng)殑浜?jiǎn)璺熷畠鐩笜q炵殑鎵鏈夌殑瑙嗗浘鐨勬寚閽堛?br />濡傛灉闇瑕佸湪 CCuteFTPView涓皟鐢–View2涓殑涓涓柟娉旸oIt()鍒欎唬鐮佸涓嬶細(xì)
CCuteFTPDoc* pDoc=GetDocument();
CView2* pView2=pDoc->pView3;
pView3.DoIt();

鈻?b>鏃犳枃妗h鍥句笌鏂囨。鍏寵仈瑙嗗浘涔嬮棿鐨勯氫俊
CView3鍜孋View4閮芥槸涓嶄笌鏂囨。鐩稿叧鑱旂殑銆傛垜浠幇鍦ㄥ疄鐜癈View3涓嶤View2鐨勯氫俊.姝e鍓嶉潰鎵璇達(dá)紝CView2鍙兘瀹夊叏鐨勪笌CCuteFTPDoc閫氫俊錛屽洜姝わ紝CView3濡傛灉闇瑕佽窡CView2閫氫俊錛屼篃蹇呴』鍊熷姪浜庢枃妗g被銆傚洜姝ょ▼搴忕殑鍏抽敭鏄浣曞湪CView3涓幏寰楁枃妗g殑鎸囬拡銆傝鍥劇被涓病鏈夎繖鏍風(fēng)殑綾繪垚鍛樺彲浠ョ敤鏉ョ洿鎺ヨ闂枃妗g被銆備絾鏄垜浠煡閬撳湪涓葷獥鍙g被MainFrame涓垜浠彲浠ヨ幏寰楃▼搴忕殑浠繪剰紿楀彛綾葷殑鎸囬拡銆傚洜姝ゆ垜浠彧瑕佽幏寰楃▼搴忎富紿楀彛浜?jiǎn)鐨勬寚閽堝Q屽氨鍙互瑙e喅闂浜?jiǎn)銆備唬鐮佸疄鐜板湪CView3涓闂瓹View2涓殑DoIt()鏂規(guī)硶銆?br />
CView3涓殑浠g爜濡備笅錛?
CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 
          
          CCuteFTPDoc* Doc=(CCuteFTPDoc*)MainFrame->GetActiveDocument();
          if(Doc!=NULL) Doc->DoIt(); 
          
          CCuteFTPDoc涓殑鐩稿簲鐨勫鐞嗗嚱鏁癉oIt()浠g爜濡備笅錛?
          
          CView2* pView2; 
          POSITION pos; 
          CView* pView; 
          while(pos!=NULL) 
          { 
                  pView=GetNextView(pos);
                  if(pView->IsKindOf(RUNTIME_CLASS(CView2))==NULL) 
                  pView2=(CView2*)pView; 
          } 
          pView2->DoIt(); 
鈻?b>鏃犳枃妗e叧鑱旇鍥句箣闂寸殑閫氫俊
CView3鍜孋View4閮芥槸涓嶈窡鏂囨。鐩歌繛鐨勶紝濡備綍瀹炵幇浠栦滑涔嬮棿鐨勯氫俊鍛€?姝e鎴戜滑鍦ㄤ笂闈㈡墍璇寸殑閭f牱錛岀敱浜庡湪涓繪鏋朵腑鎴戜滑鍙互璁塊棶浠繪剰鐨勮鍥撅紝鍥犳鎴戜滑鐨勪富瑕佷換 鍔¤繕鏄湪紼嬪簭涓幏寰椾富妗嗘灦鐨勬寚閽堛傚湪CView3涓闂瓹View4涓殑鏂規(guī)硶DoIt()銆?
CMainFrame* MainFrame=(CMainFrame*)this->GetParent()->GetParent(); 
          
          CView4* View4=(CView4*)MainFrame->m_wndSplitter1.GetPane(2,0); 
          View4->DoIt(); 

鍒扮幇鍦ㄦ垜浠凡緇忓疄鐜頒簡(jiǎn)CuteFTP鐨勪富紿楀彛鐨勬鏋跺茍涓旇兘澶熷疄鐜頒粬浠箣闂寸浉浜掗氫俊鐨勬鏋躲?鍚屾牱鐨勬垜浠彲浠ュ疄鐜板叾浠栫殑涓浜涙祦琛岀晫闈緥濡侼etAnts錛孎oxmail鐨勫垎鍓層?

涓夈佸叧浜庡璇濇鐨勫垎鍓?/b>
鍒扮洰鍓嶄負(fù)姝紝鍙湁鍩轟簬鏂囨。/瑙嗗浘鐨勭▼搴忔墠鑳戒嬌鐢–SplitterWnd錛岃屽熀浜庡璇濇鐨勫簲鐢ㄧ▼搴忓嵈涓嶆敮鎸丆SplitterWnd,浣嗘槸濡傛灉鎴戜滑鍦ㄧ戶鎵跨被涓噸杞戒竴浜涜櫄鎷熸柟娉曪紝涔熻兘浣緾SplitterWnd 鍦ㄥ璇濇紼嬪簭涓嬌鐢ㄣ備粠MFC鐨勬簮紼嬪簭WinSplit.cpp涓彲浠ョ湅鍑猴紝涓轟簡(jiǎn)鑾峰緱鐖剁獥鍙g殑鍦版柟紼嬪簭閮借皟鐢ㄤ簡(jiǎn)铏氭嫙鏂規(guī)硶GetParentFrame(),鍥犳濡傛灉鍦ㄥ璇濇涓嬌鐢紝鎴戜滑蹇呴』灝嗗畠鏀逛負(fù)GetParent();鍥犳鎴戜滑灝咰SplitterWnd鐨勪笅闈㈠嚑涓柟娉曢噸杞姐?br />
virtual void StartTracking(int ht); 
virtual CWnd* GetActivePane(int* pRow = NULL, int* pCol  = NULL); 
virtual void SetActivePane( int row, int col, CWnd* pWnd  = NULL ); 
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); 
virtual BOOL OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult ); 
virtual BOOL OnWndMsg( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult ); 
鍏蜂綋瀹炵幇濡備笅錛屽疄鐜頒腑鎴戝皢緇欏嚭鍘熸湁浠g爜鐨勪富瑕侀儴鍒嗕互鍙?qiáng)淇敼鍚庣殑浠g爜浠ヤ綔瀵规瘮銆?br />鍦╟pp鏂囦歡涓姞鍏ヤ笅闈㈢殑鏋氫婦綾誨瀷銆?
enum HitTestValue 
{ 
                  noHit = 0,//琛ㄧず娌℃湁閫変腑浠諱綍瀵硅薄
                  vSplitterBox = 1,
                  hSplitterBox = 2,
                  bothSplitterBox = 3,
                  vSplitterBar1 = 101,//浠h〃鍚勪釜鏂瑰悜鐨勬按騫沖垎鍓叉潯
                  vSplitterBar15 = 115,
                  hSplitterBar1 = 201,//浠h〃鍨傜洿鏂瑰悜鐨勫悇涓垎鍓叉潯
                  hSplitterBar15 = 215,
                  splitterIntersection1 = 301,//浠h〃鍚勪釜浜ゅ弶鐐?
                  splitterIntersection225 = 525
};
          
CWnd* CxSplitterWnd::GetActivePane(int* pRow, int* pCol) { ASSERT_VALID(this); //鑾峰緱褰撳墠鐨勮幏寰楃劍鐐圭殑紿楀彛 //涓嬮潰娉ㄩ噴綺椾綋鐨勬槸鍘熸湁鐨勪唬鐮佺殑涓昏閮ㄥ垎銆? // CWnd* pView = NULL; //CFrameWnd* pFrameWnd = GetParentFrame(); //ASSERT_VALID(pFrameWnd); //pView = pFrameWnd->GetActiveView(); //if (pView == NULL) // pView = GetFocus(); CWnd* pView = GetFocus(); if (pView != NULL && !IsChildPane(pView, pRow, pCol)) pView = NULL; return pView; } void CxSplitterWnd::SetActivePane( int row, int col, CWnd* pWnd) { CWnd* pPane = pWnd == NULL ? GetPane(row, col) : pWnd; //涓嬮潰鍔犳敞閲婄矖浣撶殑鏄師鏈変唬鐮佺殑涓昏閮ㄥ垎銆? //FrameWnd* pFrameWnd = GetParentFrame(); //ASSERT_VALID(pFrameWnd); //pFrameWnd->SetActiveView((CView*)pPane); pPane->SetFocus();//淇敼鍚庣殑璇彞 } void CxSplitterWnd::StartTracking(int ht) { ASSERT_VALID(this); if (ht == noHit) return; // GetHitRect will restrict ''''m_rectLimit'''' as appropriate GetInsideRect(m_rectLimit); if (ht >= splitterIntersection1 && ht <= splitterIntersection225) { // split two directions (two tracking rectangles) int row = (ht - splitterIntersection1) / 15; int col = (ht - splitterIntersection1) % 15; GetHitRect(row + vSplitterBar1, m_rectTracker); int yTrackOffset = m_ptTrackOffset.y; m_bTracking2 = TRUE; GetHitRect(col + hSplitterBar1, m_rectTracker2); m_ptTrackOffset.y = yTrackOffset; } else if (ht == bothSplitterBox) { // hit on splitter boxes (for keyboard) GetHitRect(vSplitterBox, m_rectTracker); int yTrackOffset = m_ptTrackOffset.y; m_bTracking2 = TRUE; GetHitRect(hSplitterBox, m_rectTracker2); m_ptTrackOffset.y = yTrackOffset; // center it m_rectTracker.OffsetRect(0, m_rectLimit.Height()/2); m_rectTracker2.OffsetRect(m_rectLimit.Width()/2, 0); } else { // only hit one bar GetHitRect(ht, m_rectTracker); } //涓嬮潰鍔犳敞閲婄殑灝嗕粠紼嬪簭涓垹鍘匯? //CView* pView = (CView*)GetActivePane(); //if (pView != NULL && pView->IsKindOf(RUNTIME_CLASS(CView))) //{ // ASSERT_VALID(pView); // CFrameWnd* pFrameWnd = GetParentFrame(); //ASSERT_VALID(pFrameWnd); //pView->OnActivateFrame(WA_INACTIVE, pFrameWnd); // } // steal focus and capture SetCapture(); SetFocus(); // make sure no updates are pending RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_UPDATENOW); // set tracking state and appropriate cursor m_bTracking = TRUE; OnInvertTracker(m_rectTracker); if (m_bTracking2) OnInvertTracker(m_rectTracker2); m_htTrack = ht; SetSplitCursor(ht); } BOOL CxSplitterWnd::OnCommand(WPARAM wParam, LPARAM lParam) { if (CWnd::OnCommand(wParam, lParam)) return TRUE; //涓嬮潰綺椾綋鐨勬槸鍘熺▼搴忕殑璇彞 //return GetParentFrame()->SendMessage(WM_COMMAND, wParam, lParam); return GetParent()->SendMessage(WM_COMMAND, wParam, lParam); } BOOL CxSplitterWnd::OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult ) { if (CWnd::OnNotify(wParam, lParam, pResult)) return TRUE; //涓嬮潰綺椾綋鐨勬槸婧愮▼搴忕殑璇彞 //*pResult = GetParentFrame()->SendMessage(WM_NOTIFY, wParam, lParam); *pResult = GetParent()->SendMessage(WM_NOTIFY, wParam, lParam); return TRUE; } BOOL CxSplitterWnd::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult) { // The code line below is necessary if using CxSplitterWnd in a regular dll // AFX_MANAGE_STATE(AfxGetStaticModuleState()); return CWnd::OnWndMsg(message, wParam, lParam, pResult); }
榪欐牱鎴戜滑灝卞彲浠ュ湪瀵硅瘽妗嗕腑浣跨敤CxSplitterWnd綾諱簡(jiǎn)銆?

鍥涖丆SplitterWnd鐨勬墿灞?/b>
CSplitterWnd鎵╁睍璇濋鏄緢澶氱殑錛屾垜浠彲浠ラ氳繃瀵瑰師鏈夋柟娉曠殑瑕嗙洊鎴栬呭鍔犳柊鐨勬柟娉曟潵鎵╁睍CSplitterWnd銆傛垜浠湪姝や粎涓句袱涓柟闈㈢殑渚嬪瓙銆?
4.1閿佸畾鍒囧垎鏉?/b>
褰撶敤鎴峰垱寤哄ソ鍒嗗壊紿楀彛鍚庯紝鏈夋椂騫朵笉甯屾湜閫氳繃鎷栧姩鍒囧垎鏉℃潵璋冭妭紿楀彛鐨勫ぇ灝忋傝繖鏃跺氨蹇呴』閿佸畾鍒囧垎鏉°傞攣瀹氬垏鍒嗘潯鐨勬渶綆鍗曠殑鏂規(guī)硶鑾繃浜庝笉璁〤SplitterWnd鏉ュ鐞哤M_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSOR娑堟伅錛岃屾槸灝嗚繖浜涙秷鎭氦緇機(jī)Wnd紿楀彛榪涜澶勭悊錛屼粠鑰屽睆钄芥帀榪欎簺娑堟伅銆傛嬁WM_LBUTTONDOWN澶勭悊榪囩▼鏉ヨ銆備慨鏀逛負(fù)濡備笅錛?
void CXXSplitterWnd::OnLButtonDown(UINT nFlags,CPoint point) 
{ CWnd::OnLButtonDown(nFlags,point); }
鍏朵綑鐨勫鐞嗘柟娉曠被浼箋?
4.2鍒囧垎鏉$殑瀹氬埗
鐢盬indow鑷繁鐢熸垚鐨勫垏鍒嗘潯鎬繪槸鍥哄畾鐨勶紝娌℃湁浠諱綍鐨勫彉鍖栵紝鎴戜滑鍦ㄤ嬌鐢ㄤ竴浜涜蔣浠舵瘮濡侫CDSee鐨勬椂鍊欏嵈鑳藉彂鐜板畠浠殑鍒囧垎鏉″嵈鏄拰鑷姩鐢熸垚鐨勫垏鍒嗘潯涓嶄竴鏍風(fēng)殑銆傞偅涔堝浣曞畾鍒惰嚜宸辯殑鍒囧垎鏉″憿錛熼氳繃閲嶈澆CSplitterWnd鐨勮櫄鏂規(guī)硶OnDrawSplitter鍜孫nInvertTracker鍙互杈懼埌榪欐牱鐨勭洰鐨勩備笅闈㈢殑浠g爜鐢熸垚鐨勬晥鏋滄槸鍒嗗壊紿楀彛鐨勮竟鐣岄鑹蹭負(fù)綰㈣壊錛屽垎鍓叉潯鐨勯鑹蹭負(fù)緇胯壊.浠g爜濡備笅錛?br />
void CSplitterWndEx::OnDrawSplitter(CDC *pDC, ESplitType nType, const CRect &rectArg)
{
                  if(pDC==NULL) 
                  { 
                  RedrawWindow(rectArg,NULL,RDW_INVALIDATE|RDW_NOCHILDREN);
                  return;
                  } 
                  ASSERT_VALID(pDC);
                  CRect rc=rectArg;
                  switch(nType) 
                  { 
                  case splitBorder:
                  //閲嶇敾鍒嗗壊紿楀彛杈圭晫,浣夸箣涓虹孩鑹?
                          pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0));
                          rc.InflateRect(-CX_BORDER,-CY_BORDER); 
                          pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0)); 
          
                          return; 
                  case splitBox:
                          pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
                          rc.InflateRect(-CX_BORDER,-CY_BORDER); 
                          pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
                          rc.InflateRect(-CX_BORDER,-CY_BORDER);
                          pDC->FillSolidRect(rc,RGB(0,0,0)); 
                          pDC->Draw3dRect(rc,RGB(0,0,0),RGB(0,0,0));
                          return; 
                  case splitBar: 
                  //閲嶇敾鍒嗗壊鏉★紝浣夸箣涓虹豢鑹?
                          pDC->FillSolidRect(rc,RGB(255,255,255));
                          rc.InflateRect(-5,-5); 
                          pDC->Draw3dRect(rc,RGB(255,0,0),RGB(255,0,0)); 
          
                          return; 
                  default: 
                          ASSERT(FALSE); 
                  } 
                  pDC->FillSolidRect(rc,RGB(0,0,255));
} 
void CSplitterWndEx::OnInvertTracker(CRect &rect) 
{ 
                  ASSERT_VALID(this);
                  ASSERT(!rect.IsRectEmpty()); 
                  ASSERT((GetStyle()&WS_CLIPCHILDREN)==0);
                  CRect rc=rect; 
                  rc.InflateRect(2,2);
                  CDC* pDC=GetDC(); 
                  CBrush* pBrush=CDC::GetHalftoneBrush();
                  HBRUSH hOldBrush=NULL;
                  if(pBrush!=NULL) hOldBrush=(HBRUSH)SelectObject(pDC->m_hDC,pBrush->m_hObject);
                  pDC->PatBlt(rc.left,rc.top,rc.Width(),rc.Height(),BLACKNESS); 
          
                  if(hOldBrush!=NULL) 
                  SelectObject(pDC->m_hDC,hOldBrush);
                  ReleaseDC(pDC); 
} 


jay 2007-03-28 15:20 鍙戣〃璇勮
]]>
visual C++ 6.0寮鍙戝伐鍏蜂笌璋冭瘯http://www.shnenglu.com/yishanhante/articles/18923.htmljayjayFri, 23 Feb 2007 07:13:00 GMThttp://www.shnenglu.com/yishanhante/articles/18923.htmlhttp://www.shnenglu.com/yishanhante/comments/18923.htmlhttp://www.shnenglu.com/yishanhante/articles/18923.html#Feedback0http://www.shnenglu.com/yishanhante/comments/commentRss/18923.htmlhttp://www.shnenglu.com/yishanhante/services/trackbacks/18923.html闃呰鍏ㄦ枃

jay 2007-02-23 15:13 鍙戣〃璇勮
]]>
VC涓敤浜庤皟璇曠▼搴忕殑瀹?/title><link>http://www.shnenglu.com/yishanhante/articles/18922.html</link><dc:creator>jay</dc:creator><author>jay</author><pubDate>Fri, 23 Feb 2007 06:57:00 GMT</pubDate><guid>http://www.shnenglu.com/yishanhante/articles/18922.html</guid><wfw:comment>http://www.shnenglu.com/yishanhante/comments/18922.html</wfw:comment><comments>http://www.shnenglu.com/yishanhante/articles/18922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/yishanhante/comments/commentRss/18922.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/yishanhante/services/trackbacks/18922.html</trackback:ping><description><![CDATA[ <p style="LINE-HEIGHT: 12pt"> <strong> <span style="COLOR: red"> <font size="1"> <font face="Georgia">ASSERT()</font> </font> </span> </strong> </p> <p style="LINE-HEIGHT: 12pt"> <strong> <span style="COLOR: red"> </span> </strong> <font size="1"> <font face="Georgia">聽聽聽聽 ASSERT()琚祴璇曞畠鐨勫弬鏁幫紝鑻ュ弬鏁頒負(fù)<span>0錛屽垯涓柇鎵ц騫舵墦鍗頒竴孌佃鏄庢秷鎭傚湪 Release 鐗堟湰鐨勭▼搴忎腑瀹冧笉璧蜂換浣曚綔鐢ㄣ侫SSERT()浣跨敤鐨勬椂鍊欏繀欏諱繚璇佸弬鏁拌〃杈懼紡涓笉鑳芥湁鍑芥暟璋冪敤錛堣瘧鑰呮敞錛欰SSERT()瀹忓湪 Release 鐗堟湰涓笉瀵硅〃杈懼紡姹傚鹼級(jí)錛屽洜姝ゅ浜庝換浣曟湁鍑芥暟璋冪敤鐨勫弬鏁拌〃杈懼紡錛屽簲璇ヤ嬌鐢ㄥ畯 VERIFY()錛屼互淇濊瘉琛ㄨ揪寮忎腑鐨勫嚱鏁拌皟鐢ㄥ湪 Release 鐗堟湰涓細(xì)琚紜眰鍊箋?/span></font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">鏂█<span>(assertion)鐢ㄥ甫鏂█淇℃伅(紼嬪簭, 妯″潡, assertion琛?鐨勫璇濇鎵ц. 瀵硅瘽妗嗘湁3涓寜閽? "Break", "Repeat" ("Debug"), and "Continue" ("Ignore"). "Break" 緇撴潫紼嬪簭, "Continue" 蹇界暐鏂█, 鏈鏈夌敤鐨勬槸"Repeat"鎸夐挳. 鎸変笅瀹冨湪鏂█鐨勫湴鏂規(guī)墦寮婧愪唬鐮佺紪杈戝櫒. 鍦ㄨ繖閲屼綘鍙互嫻嬭瘯鎵鏈夌殑鍙橀噺鍊煎茍鏄庣櫧鍝噷鍑轟簡(jiǎn)闂銆?/span></font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <span style="FONT-SIZE: 9pt"> <font size="1"> <font face="Georgia">渚嬪錛欰SSERT(pPointer);ASSERT(n>0 && n<100);ASSERT(0);</font> </font> </span> </p> <p style="LINE-HEIGHT: 12pt" align="left"> <font size="1"> <font face="Georgia">ASSERT鍦ㄦ墽琛岀畝鍗曢獙璇佹椂寰堟湁鐢紝浣嗗浜?span>C++瀵硅薄錛岀壒鍒槸鐢盋Object媧劇敓鐨勫璞★紝鍒欐湁鏇村ソ鐨勬柟娉旳SSERT_VALID鏉ュ疄鐜扮被浼兼搷浣溿備綔涓轟竴鑸鍒欙紝鎴戜滑搴斿湪寮濮嬩嬌鐢ㄦ瘡涓涓璞′箣鍓嶆鏌ユ暟鎹璇?</span></font> </font> </p> <p style="LINE-HEIGHT: 12pt" align="left"> <span> <font face="Georgia" size="1"> </font> </span>聽</p> <p style="LINE-HEIGHT: 12pt" align="left"> <span> <font size="1"> <font face="Georgia"> <strong>ASSERT_VALID</strong>瀹忎嬌寰楀CObject鐨勬淳鐢熺被瀹炵幇璇ユ搷浣滈潪甯哥畝鍗曘?/font> </font> </span> </p> <p style="LINE-HEIGHT: 12pt"> <span style="FONT-SIZE: 9pt"> <font size="1"> <font face="Georgia">渚嬪錛欰SSERT_VALID(this);ASSERT_VALID(pView);</font> </font> </span> </p> <p style="LINE-HEIGHT: 12pt"> <span style="FONT-SIZE: 9pt"> <font face="Georgia" size="1"> </font> </span>聽</p> <p style="LINE-HEIGHT: 12pt" align="left"> <span style="COLOR: red"> <strong> <font size="1"> <font face="Georgia">VERIFY()</font> </font> </strong> </span> </p> <p style="LINE-HEIGHT: 12pt" align="left"> <span style="COLOR: red"> </span> <font face="Georgia"> <font size="1">聽聽聽 VERIFY()鍜?span> ASSERT()寰堢浉浼鹼紝鍖哄埆鍦ㄤ簬鍦?Release 鐗堟湰涓畠浠嶇劧鏈夋晥錛堣瘧鑰呮敞錛氬師浣滆呭湪榪欓噷娌℃湁璁叉竻妤氾紝VERIFY()涓嶄細(xì)鎵撳嵃璇存槑錛屽彧鏄細(xì)瀵瑰弬鏁拌〃杈懼紡姹傚鹼級(jí)銆?</span></font> </font> </p> <p style="LINE-HEIGHT: 12pt" align="left"> <span> <font face="Georgia" size="1"> </font> </span>聽</p> <p style="LINE-HEIGHT: 12pt"> <span style="COLOR: red"> <strong> <font size="1"> <font face="Georgia">TRACE()</font> </font> </strong> </span> </p> <p style="LINE-HEIGHT: 12pt"> <span style="COLOR: red"> </span> <font size="1"> <font face="Georgia"> <font color="#ff0000"> <strong>聽</strong> </font>聽聽聽聽TRACE()鍩烘湰涓婂氨鏄嚱鏁?<span>printf()</span>鐨勪竴涓鍒跺搧錛屽敮涓鐨勫尯鍒槸瀹冩妸緇撴灉杈撳嚭鍒拌皟璇曠獥鍙c傚湪 Release 鐗堟湰涓紝瀹冧篃鏄棤鏁堢殑銆備竴鑸槸鐢═RACE0(),TRACE1(),TRACE2()鈥﹁屼笉鐢═RACE()銆?/font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">飩仿犺繖涓変釜瀹忓湪<span> Release 鐗堟湰涓兘涓嶄細(xì)浜х敓浠諱綍瀹炶川鎬х殑褰卞搷錛屽畠浠槸鍚﹁搗浣滅敤鍙栧喅浜庢槸鍚﹀畾涔変簡(jiǎn)棰勫畾涔変簡(jiǎn)瀹?_DEBUG銆傝繖鏄 Microsoft Visual C++ 鑰岃█錛屽湪鍏跺畠鐨勭紪璇戝櫒涓彲鑳藉叾瀹冧笉鍚岀殑瀹忋?/span></font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <span> <font face="Georgia" size="1"> </font> </span>聽</p> <p style="LINE-HEIGHT: 12pt"> <strong> <font size="1"> <font face="Georgia">甯哥敤鐢ㄦ硶錛?/font> </font> </strong> </p> <p style="LINE-HEIGHT: 12pt"> <strong> <font face="Georgia" size="1"> </font> </strong>聽</p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">涓轟簡(jiǎn)鎺у埗浼犺繘鐨勬寚閽?</font> </font> </p> <p> <font size="1"> <font face="Georgia">void SomeFun(SomeType* pPointer)</font> </font> </p> <p> <font size="1"> <font face="Georgia">{</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <span style="FONT-SIZE: 9pt"> <font size="1"> <font face="Georgia">聽<strong>聽ASSERT(pPointer);</strong></font> </font> </span> </p> <p> <font size="1"> <font face="Georgia">聽//some instructions.</font> </font> </p> <p> <font size="1"> <font face="Georgia">}</font> </font> </p> <p> <font face="Georgia" size="1"> </font>聽</p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">浣犲彲浠ュ湪"switch" 鍜?"if"鎿嶄綔涓崟鑾峰鎬殑鍊?br />渚嬪:</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">switch(nRGBColors){<br />聽 case nRed:聽聽 {//some instructions.} break;<br />聽 case nGreen: {//some instructions.} break;<br />聽 case nBlue:聽 {//some instructions.} break;<br />聽 <strong>default: ASSERT(0);</strong>聽聽聽 // we should have never come here!<br />}</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">if(nWaterTemp >=0 && nWaterTemp < 50){<br />聽 //some instructions.<br />}<br />else if(nWaterTemp >= 50 && nWaterTemp <= 100){<br />聽 //some instructions.<br />}<br />else{<br />聽 <strong>ASSERT(0);聽</strong>聽聽 // we should have never come here!<br />}</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <font face="Georgia" size="1"> </font>聽</p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">瀵瑰肩殑鏂█: <br />ASSERT(nSomeValue >= MinValue and nSomeValue <= MaxValue);<br />ASSERT(nOtherValue != 0);</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <strong> <font face="Georgia" size="1"> </font> </strong>聽</p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia"> <strong>鍙埍鐨?ASSERT 閿欒</strong> <br />ASSERT( m_MyWnd.Create() );</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <font size="1"> <font face="Georgia">鍛? 榪欐槸涓涓彲鎬曠殑閿欒! 紼嬪簭鍦ㄨ皟璇曠増涓甯稿伐浣? 鍦ㄥ彂琛岀増涓笉宸ヤ綔. 璁頒綇: 榪欐槸涓涓湪鍙戣鐗堜腑灝嗚縐婚櫎鐨勫畯. 浠ヨ繖縐嶆柟娉曚綘鐨勭獥鍙e皢姘歌繙涓嶄細(xì)琚垱寤? 濡傛灉浣犵敤 MFC, 榪欐牱鍋?</font> </font> </p> <p style="LINE-HEIGHT: 12pt"> <strong> <font size="1"> <font face="Georgia">VERIFY( m_MyWnd.Create() );</font> </font> </strong> </p> <p> <font face="Georgia"> <font size="1"> <span style="FONT-SIZE: 10.5pt">瀹冨湪璋冭瘯鐗堜腑鍍?/span> <span style="FONT-SIZE: 10.5pt">ASSERT</span> <span style="FONT-SIZE: 10.5pt">涓鏍峰茍涓斿湪鍙戣鐗堜腑鎵ц</span> <span style="FONT-SIZE: 10.5pt">m_MyWnd.Create()</span> <span style="FONT-SIZE: 10.5pt">銆?/span> </font> </font> </p> <img src ="http://www.shnenglu.com/yishanhante/aggbug/18922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/yishanhante/" target="_blank">jay</a> 2007-02-23 14:57 <a href="http://www.shnenglu.com/yishanhante/articles/18922.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.rq5.com.cn" target="_blank">国产福利电影一区二区三区久久久久成人精品综合 </a>| <a href="http://www.suichuan.net.cn" target="_blank">国产一区二区精品久久岳</a>| <a href="http://www.ojl4q.cn" target="_blank">久久久久亚洲AV综合波多野结衣 </a>| <a href="http://www.iview-inc.com.cn" target="_blank">国内精品久久久久影院一蜜桃</a>| <a href="http://www.hg795.cn" target="_blank">国产精品久久久久久影院</a>| <a href="http://www.haibin860313.com.cn" target="_blank">免费一级做a爰片久久毛片潮</a>| <a href="http://www.oqiang.cn" target="_blank">WWW婷婷AV久久久影片</a>| <a href="http://www.qhsy210.cn" target="_blank">久久综合亚洲欧美成人</a>| <a href="http://www.ylog.cn" target="_blank">久久综合九色综合网站</a>| <a href="http://www.520menghuan.cn" target="_blank">久久精品一区二区三区中文字幕</a>| <a href="http://www.dicy888.cn" target="_blank">99久久国产综合精品麻豆</a>| <a href="http://www.94byq.cn" target="_blank">久久性生大片免费观看性</a>| <a href="http://www.huochaipro.com.cn" target="_blank">91久久精品国产成人久久</a>| <a href="http://www.sztaoren.cn" target="_blank">国产麻豆精品久久一二三</a>| <a href="http://www.fbnnfzx.cn" target="_blank">久久99精品久久久久久久不卡</a>| <a href="http://www.clkj168.cn" target="_blank">999久久久无码国产精品</a>| <a href="http://www.bushenba.cn" target="_blank">久久精品国产一区二区三区不卡 </a>| <a href="http://www.xh80.cn" target="_blank">久久人妻无码中文字幕</a>| <a href="http://www.reyouxi.cn" target="_blank">久久精品18</a>| <a href="http://www.jandown.cn" target="_blank">一本伊大人香蕉久久网手机</a>| <a href="http://www.yes365cc.cn" target="_blank">日产精品久久久久久久</a>| <a href="http://www.zhaodongjie.cn" target="_blank">久久精品国产精品亚洲下载</a>| <a href="http://www.jumbo8.cn" target="_blank">久久精品国产半推半就</a>| <a href="http://www.mz025.cn" target="_blank">99久久久国产精品免费无卡顿</a>| <a href="http://www.gdkm2.cn" target="_blank">国产精品一区二区久久精品涩爱</a>| <a href="http://www.qdtiandiyuan.cn" target="_blank">国产农村妇女毛片精品久久</a>| <a href="http://www.126yi.cn" target="_blank">99久久人妻无码精品系列</a>| <a href="http://www.jxhcgd.cn" target="_blank">久久精品国产亚洲av高清漫画</a>| <a href="http://www.6dou.net.cn" target="_blank">国产精品久久久香蕉</a>| <a href="http://www.simple521.cn" target="_blank">天天做夜夜做久久做狠狠</a>| <a href="http://www.17450.cn" target="_blank">久久精品视频91</a>| <a href="http://www.yaott2.cn" target="_blank">亚洲国产婷婷香蕉久久久久久</a>| <a href="http://www.ywck.net.cn" target="_blank">久久强奷乱码老熟女网站</a>| <a href="http://www.ab1987.cn" target="_blank">欧美大战日韩91综合一区婷婷久久青草</a>| <a href="http://www.hnxxzw.cn" target="_blank">国产亚洲欧美成人久久片</a>| <a href="http://www.bbctp.cn" target="_blank">久久久91精品国产一区二区三区</a>| <a href="http://www.xn88.cn" target="_blank">精品综合久久久久久888蜜芽</a>| <a href="http://www.2cafe.cn" target="_blank">97热久久免费频精品99</a>| <a href="http://www.eaglehr.com.cn" target="_blank">avtt天堂网久久精品</a>| <a href="http://www.waygoing.com.cn" target="_blank">久久成人影院精品777</a>| <a href="http://www.arqing.cn" target="_blank">国产999精品久久久久久</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>