123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System;
- using System.Windows;
- using System.Windows.Input;
- using System.Windows.Interop;
- namespace OpenSEMI.Ctrlib.Window
- {
- public class CustomWnd : System.Windows.Window
- {
- private HwndSource curHwndSource = null;
- private HwndSourceHook curHwndSourceHook = null;
- static CustomWnd()
- {
- FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(CustomWnd), new FrameworkPropertyMetadata(typeof(CustomWnd)));
- }
- public CustomWnd()
- {
- base.CommandBindings.Add(new CommandBinding(SystemCommands.CloseWindowCommand, CloseWindow));
- base.CommandBindings.Add(new CommandBinding(SystemCommands.MaximizeWindowCommand, MaximizeWindow, CanResizeWindow));
- base.CommandBindings.Add(new CommandBinding(SystemCommands.MinimizeWindowCommand, MinimizeWindow));
- base.CommandBindings.Add(new CommandBinding(SystemCommands.RestoreWindowCommand, RestoreWindow, CanResizeWindow));
- }
- private void CanResizeWindow(object sender, CanExecuteRoutedEventArgs e)
- {
- e.CanExecute = (base.ResizeMode == ResizeMode.CanResize || base.ResizeMode == ResizeMode.CanResizeWithGrip);
- }
- private void RestoreWindow(object sender, ExecutedRoutedEventArgs e)
- {
- base.WindowState = WindowState.Normal;
- }
- private void MinimizeWindow(object sender, ExecutedRoutedEventArgs e)
- {
- base.WindowState = WindowState.Minimized;
- }
- private void MaximizeWindow(object sender, ExecutedRoutedEventArgs e)
- {
- base.WindowState = WindowState.Maximized;
- }
- private void CloseWindow(object sender, ExecutedRoutedEventArgs e)
- {
- Close();
- }
- protected override void OnSourceInitialized(EventArgs e)
- {
- base.OnSourceInitialized(e);
- IntPtr handle = new WindowInteropHelper(this).Handle;
- curHwndSource = HwndSource.FromHwnd(handle);
- if (curHwndSource != null)
- {
- curHwndSourceHook = this.WndProc;
- curHwndSource.AddHook(curHwndSourceHook);
- }
- }
- private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
- {
- IntPtr zero = IntPtr.Zero;
- if (msg != 26)
- {
- handled = false;
- }
- return zero;
- }
- }
- }
|