天天看點

類似QQ貼邊掩藏功能的實作(一)

        由于現有的系統中加入了即時通訊的功能,是以需要實作類似于QQ的一些常用的功能,這其中就包括QQ的貼邊掩藏功能。于是檢視了網上很多相關的話題,結合現有系統的實際需求,實作了類似QQ的貼邊掩藏功能。

       首先要仔細研究一下QQ的貼邊掩藏時的一些細節:貼邊掩藏實在何時觸發的?如何自動實作掩藏的?将光标移到掩藏邊界時視窗又是如何自動伸展出來的?于是帶着這些想知道的問題,在操作QQ視窗過程中,仔細觀察了貼邊掩藏的方式和界面效果。研究對象是最新版的QQ2011,經觀察發現:

       1、貼邊掩藏有三種方式:向上掩藏、向左掩藏和向右掩藏。當然向下掩藏也可以實作,結合使用者的使用習慣,估計沒有太大的實用價值,是以就沒實作了。

       2、貼邊掩藏的觸發條件:通過檢測拖動QQ視窗時的光标與桌面邊界的距離來決定是否需要掩藏視窗,當小于指定的值後才會觸發視窗掩藏。具體的,向上掩藏就是檢測拖動QQ視窗時的光标距離桌面上邊界的距離;向左掩藏則是檢測與桌面左邊界的距離;向右掩藏則是檢測與桌面右邊界的距離。

       3、主窗體貼邊掩藏後,在對應的桌面邊界上會有一個boarder,而且這部分窗體屬于主窗體的非客戶區域。當我們将光标移到該boarder上,主窗體則會自動顯示出來;在顯示後,當我們将光标從主窗體中移走後,主窗體則會自動掩藏起來。

       4、向上掩藏,掩藏前後窗體的大小沒有改變。向左或右掩藏,窗體的寬度沒有改變,窗體的高度則發生了改變:從桌面的高度方向看,掩藏後的視窗充滿整個桌面客戶區。要退出掩藏狀态,隻要将視窗拖到客戶區以内就可以了。對于向左或右掩藏,在退出掩藏狀态後會恢複之前的視窗高度。

        事實上,這裡說的掩藏不是真正地将視窗Hide起來,而是将視窗移動到桌面外的區域,給人一種視窗被掩藏的感覺。界面操作細節和效果已經有結果了,那麼接下來就是研究怎麼通過具體的代碼來實作了。