win7下 窗体玻璃效果的实现和WindowStyle None模式下的移动 wpf
這些技術(shù)在上一篇文章的介紹的軟件里有用到,現(xiàn)在單獨摘出來說明一下。
添加 using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential)]
public struct MARGINS
{
public int cxLeftWidth;
public int cxRightWidth;
public int cyTopHeight;
public int cyBottomHeight;
}
#region 引用 Dll
[DllImport("DwmApi.dll")] //玻璃
public static extern int DwmExtendFrameIntoClientArea(IntPtr hwnd, ref MARGINS pMarInset);
[DllImport("user32.dll", EntryPoint = "SendMessage")]// 移動
public static extern int SendMessage(int hWnd, int wMsg, int wParam, int lParam);
[DllImport("user32.dll", EntryPoint = "ReleaseCapture")]
public static extern int ReleaseCapture();
public const int WM_SysCommand = 0x0112;
public const int SC_MOVE = 0xF012;
#endregion
public MainWindow()
{
InitializeComponent();
this.Background = Brushes.Transparent;
ExtendAeroGlass(this);
}
private void ExtendAeroGlass(Window window)
{
try
{
// 為WPF程序獲取窗口句柄
IntPtr mainWindowPtr = new WindowInteropHelper(window).Handle;
HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
mainWindowSrc.CompositionTarget.BackgroundColor = Colors.Transparent;
// 設(shè)置Margins
MARGINS margins = new MARGINS();
// 擴展Aero Glass
margins.cxLeftWidth = -1;
margins.cxRightWidth = -1;
margins.cyTopHeight = -1;
margins.cyBottomHeight = -1;
int hr = DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);
if (hr < 0)
{
checkBox1.IsChecked = false;
MessageBox.Show("玻璃效果加載失敗!");
}
}
catch (DllNotFoundException)
{
Application.Current.MainWindow.Background = Brushes.White;
}
}
private void Window_MouseDown(object sender, MouseButtonEventArgs e) //鼠標按下時,移動
{
IntPtr mainWindowPtr = new WindowInteropHelper(this).Handle;
HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
ReleaseCapture();
SendMessage(mainWindowSrc.Handle.ToInt32(), WM_SysCommand, SC_MOVE, 0);
}
完成 。。
轉(zhuǎn)載于:https://www.cnblogs.com/wxdtk1989/archive/2011/08/11/2135383.html
總結(jié)
以上是生活随笔為你收集整理的win7下 窗体玻璃效果的实现和WindowStyle None模式下的移动 wpf的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转 用户注册及输入框js检测范例(reg
- 下一篇: 背景全透明 background: tr