簡體   English   中英

WPF玻璃窗后退?

[英]WPF Glass window fallback?

創建Glass窗口就像在WPF中調用DwmExtendFrameIntoClientArea一樣簡單,但這只是技巧的一半。 如果您禁用aero,並獲得疼痛開始的類似XP的皮膚:

在XP(或禁用aero)中,你必須調用DrawThemeBackground以獲得“透明感覺”,Internet Explorer也會在頂部執行此操作,嘗試禁用aero並查看。

我已經熟了的應用程序,做到這一點, 當航空在Windows.Forms的禁用后備優雅。

問題是:但是在WPF中執行它是不同的,OnRender(OnPaint equiv.in avalon)它為您提供了DrawingContext,如何使用DrawThemeBackground WINAPI調用它?

好吧, DrawThemeBackground需要一個設備上下文句柄,這是一個純粹的Win32概念...... WPF不使用設備上下文或窗口句柄。 但是,WPF應用程序托管在Win32窗口中,您可以檢索該窗口的HWND:

using System.Windows.Interop;

...

IntPtr hwnd = new WindowInteropHelper(this).Handle;

然后,您可以使用GetDC API獲取此窗口的DC:

[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);

...

IntPtr hdc = GetDC(hwnd);

然后你應該能夠使用這個DC使用DrawThemeBackground

請注意,這完全是理論上的,我沒有測試它...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM