相关疑难解决方法(0)

在WPF中处理系统关闭

如何在WPF中覆盖WndProc?当我的窗口关闭时,我尝试检查我正在使用的文件是否被修改,如果是这样,我必须向用户提示"你想保存更改吗?" 消息,然后关闭正在使用的文件和窗口.但是,当我的窗口仍然打开时,我无法处理用户重新启动/关闭/注销时的情况.我无法覆盖WndProc,因为我正在使用WPF进行开发.我也试过使用这个示例MSDN代码.这就是我所做的private void loadedForm(对象发送者,RoutedEventArgs e){

  HwndSource source = HwndSource.FromHwnd(new WindowInteropHelper(this).Handle);
  source.AddHook(new HwndSourceHook(WndProc));

}
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{


 if (msg == WM_QUERYENDSESION.)
 {
  OnWindowClose(this, new CancelEventArgs())
  handled = true;
  shutdown = true;
 }  
 return IntPtr.Zero;    
}
private void OnWindowClose(object sender, CancelEvetArgs e)
{
   if (modified)
   {
     //show message box
     //if result is yes/no
       e.cancel = false;
     //if cancel
        e.cancel = true;
   }

}
Run Code Online (Sandbox Code Playgroud)

在XAML文件上,我也使用Closing = "OnWindowClose"但是当我单击是/否时没有任何反应,我的应用程序没有关闭.如果我尝试使用关闭按钮再次关闭它,我收到一个错误?为什么会这样?是因为胡克?WPF中的等价物是什么?

private …
Run Code Online (Sandbox Code Playgroud)

wpf shutdown wndproc savechanges

4
推荐指数
1
解决办法
5862
查看次数

标签 统计

savechanges ×1

shutdown ×1

wndproc ×1

wpf ×1