[英]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.