2013-03-09 24 views
4

Steam window 這是Steam客戶端窗口正在調整大小的屏幕截圖。如何使用winapi實現Steam-like窗口?

Steam的客戶窗口有兩個很酷的功能。

  1. 自定義窗口,它是非常敏感的。
  2. 酷玻璃調整的影響,從標準的Windows不同的(認爲這可能是一個副作用密切相關,1)

比方說,我想用WINAPI創建類似的窗口。我該怎麼做?

我不問小部件管理相關的東西,而是關於技術winapi技巧。

回答

6

基本上,你幾乎可以用你的窗戶做任何事情。但大部分技巧都是手動實現的。

  1. 什麼是'非常敏感'我不知道。如果您的意思是窗口沒有標準邊框,則很容易實現:創建WS_POPUP窗口時,不要指定WS_BORDERWS_CAPTION。之後,您必須自己繪製邊框和標題。像往常一樣處理WM_ERASEBKGNDWM_PAINT消息,繪製背景,菜單。
  2. 這個效果在我看來更像是一個bug。它發生這種情況:窗口被調整大小,它得到一個WM_SIZE消息,處理它,Windows發送一個窗口忽略的消息WM_ERASEBKGND。因此,系統在尚未充滿新窗口圖像的新窗口框架周圍繪製新的陰影。在這裏,我們得到了這個很酷的玻璃效果:帶有窗戶航空陰影的下層窗戶的舊圖像。您可以嘗試禁用窗口陰影並查看此效果。

爲了創建一個自定義縮放邊框,您可能會發現有用的這些功能:LoadCursorSetCursorMoveWindow

爲了繪製自定義邊框,可以使用標準的GDI函數。你也可以創建一些子窗口並委託他們繪圖。這是winapi的基礎知識。