程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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.橫向停泊的窗體會優先充滿剩余空間

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

有可能會將遮住工具條)

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

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

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

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

例子工程中MDI是vc2003 作的,SDI VC6和vc2003都可用

另外,如果你想使用靜態MFC 連接,需要加一個編譯選項STATIC_MFC_LINK ,否則畫出的窗體會比較難看。

很希望有人能幫助解決尚存的兩個問題

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