2013-05-21 61 views
0

我想實現簡單的metro樣式窗口使用WinAPI(基本上像Visual Studio 2012樣式)在Windows 7和Windows 8上運行,我知道這是一項艱苦的工作,在開始時,我有這些問題:WinAPI創建metro樣式應用程序問題

1.創建一個平方窗口
我可以做到這一點通過創建一個borderless窗口(平均無邊框,無標題欄,只有客戶區),但通過這種方式,我不能調整這個窗口當然標題欄丟失了。這些方法是否可以創建一個方形角窗並保持標題欄(包括close,max,min,...按鈕)?

2.所有者繪製closemaximizeminimize按鈕
通過捕捉WM_NCPAINT事件,我可以所有者繪製整個標題欄,但這種方式我看到這些按鈕(關閉,最大化,最小化)去地獄。我如何以我的方式顯示這些按鈕(我的意思是根據我的想法繪製)?

3.創建陰影
你可以看到,如果的Visual Studio 2012的窗口沒有最大化,它表明一個影子,它看起來棒極了,我想申請我簡單的窗口作用。我怎樣才能做到這一點?

+2

1&2:您需要編寫繪製按鈕並處理鼠標事件的代碼。祝你好運。另見'WM_NCHITTEST'。 3:創建一個具有部分透明背景的分層窗口。 – SLaks

+0

一個更基本的問題是爲什麼你甚至想這樣做? :) Metro幾乎不是用戶界面設計的巔峯之作。 –

+0

@SLaks:你可以在創建具有部分透明背景的分層窗口中提供更多細節嗎? –

回答

1

您需要編寫自己的代碼來繪製基本的窗口元素,並手動處理鼠標事件以使它們交互。 (掛鉤WM_NCHITTEST可能有助於交互)

要製作陰影,請將窗口分層,然後使用alpha透明陰影設置背景圖像。

+0

請再提一個問題。我用'WM_POPUPWINDOW'風格創建了一個窗口(放置一個完美的平方窗口的標題欄),問題是當我從'WM_NCHITTEST'返回'HTTOP'(或'HTTOPLEFT',...)時,它不會調整窗口的大小。如何解決這個問題? –

+0

@BìnhNguyên:我不知道。 – SLaks

+0

謝謝你:) –

1

除了SLaks所說的,哪些方法可行,但需要花費很多精力和時間,您可能需要考慮是否可以使用框架來開發程序。如果可以,那麼您可以使用框架工具包來實現「窗口鑲邊」,讓您可以自由地處理應用程序的重要部分:邏輯

如果你可以使用MFC,那麼我會推薦CodeJock的Toolkit Pro 2013;我不以任何方式隸屬於他們,但過去曾使用過他們的產品,而且相當不錯。

我確定還有其他工具包,其中一些工具包可能會針對不同的框架,但我沒有經驗,也沒有推薦它們的基礎。

+0

謝謝你!,我這樣做只是爲了好玩:D –

相關問題