程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC自動隱藏停泊窗體實現-輕松實現類MSDN2002界面(二)(續)

VC自動隱藏停泊窗體實現-輕松實現類MSDN2002界面(二)(續)

編輯:vc教程

  自動隱藏停泊窗體在商業的MFC圖形庫中(如Xtreme)已支持得很好,但他們大多都重寫了MFC相應的支持代碼像Cristi Posea的CSizingControlBar實現VC6界面那樣,重用大部分MFC Dock 框架類而實現Vc .Net界面的免費庫很少見(偶沒發現:)本實現,准確地說是在Cuick 的《輕松實現類MSDN2002界面(二)》基礎上的增強版。

  其主要更新為:

  Bugfixs:

  1.增加定時器 TID_AUTO_HIDE_DELAY 避免出現兩個自動隱藏窗口(AHFloatWnds)同時顯示的問題.

  2.focus 切換問題(特別是在 自動隱藏窗口(AHFloatwnd) 與 停泊窗體(DockPageBar)之間的切換).

  3.在改變停泊窗體大小時會有的閃爍、顫動.

  4.在改變自動窗體(AHFloatWnd)大小時,尺寸不能超出Mainframe.

  5.static MFC 連接(Release & Debug)的問題(增加STATIC_MFC_LINK 編譯選項).

  6.在CDockPageBar::AddPage 函數中檢驗 pWnd的 style,確保其為 WS_CHILD style,避免由此引發的窗口管理混亂(如把一個WS_POPUP類型的對話框加載到停泊窗).

  Improvements&Newfeatures:

  1.增加自動隱藏窗口( AHFloatWnd) SLIDE_IN/SLIDE_OUT 動畫效果(Windows API ::AnimateWindow 對於自畫窗體好像不行)

  2.增加的新的自動停泊算法,即 精確停泊(as in VC .Net), 但是由於停泊窗體的類是從Cristi Posea的CSizingControlBar繼承而來, 橫向停泊的窗體會優先充滿剩余空間的問題依然存在

  3. 重寫了 CDockPageBar 類的NcPaint,NcCalClIEnt,OnNcLButtonXXXX,OnNcHitTest 的實現

  把標簽和標題欄的重畫放到非客戶區來做,把原來的繪圖效果作了改進

  4.增加對MDI 的支持

  仍有待解決的問題:

  1.橫向停泊的窗體會優先充滿剩余空間 本文發表於http://bianceng.cn(編程入門網)

  2.如果框架程序中有工具條,且為可停泊的(Dockable),在自動隱藏時行為不是很合理(浮動窗體有可能會將遮住工具條)

 
圖一: 多文檔框架的停泊窗體

圖二: 多文檔框架的自動隱藏窗體

  使用的方法與《輕松實現類MSDN2002界面(二)》中基本一樣

  不同在於對於多文檔 CMainframe 是從CDMIAutoHideFrame 繼承的.

  例子工程中MDI是vc2003 作的,SDI VC6和vc2003都可用另外,如果你想使用靜態MFC 連接,需要加一個編譯選項STATIC_MFC_LINK ,否則畫出的窗體會比較難看。很希望有人能幫助解決尚存的兩個問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved