0

我有一个 Windows 移动应用程序,当用户单击“X”而不是隐藏它时,我想完全关闭它。

我已将以下方法添加到我的表单中,但它有错误。代码是从其他地方复制的,如果我完全诚实,我不确定如何正确使用表单处理程序等,所以我想知道是否有人可以帮助我?

protected override void WndProc(ref Message m)
{
if (m.Msg == 0x0005)
{ 
    // WM_SIZE
    if (m.WParam == new IntPtr(0x04))
    { 
        // SIZE_MINIMIZED
        this.Close();
    }
}
base.WndProc(ref m);
}

错误 1.“找不到类型或命名空间名称‘消息’(您是否缺少 using 指令或程序集引用?)”

错误 2.“'System.Windows.Forms.Form' 不包含 'WndProc' 的定义”

4

2 回答 2

1

您不能在 Compact Framework 窗体或控件中覆盖 WndProc。您已从桌面项目复制代码。对于紧凑的框架,它有点复杂。在许多情况下,只需使用 aMessageWindow就足以看到传入的消息供您做出反应(可以在此处找到示例)。但是,如果您需要完全子类化,那就有点复杂了。这是一个子类化控件的 MSDN 示例,尽管表单是相同的。

于 2012-12-03T17:21:33.963 回答
1

在您的特定情况下,解决实际问题的最简单方法就是将 to 的MinimizeBox属性设置Formfalse。这会将 X 按钮变成一个带有文本“Ok”的白色圆圈。点击该按钮将通过发布退出消息退出表单的运行循环,这通常会终止进程,除非您明确编写代码来执行其他操作。

于 2012-12-04T15:49:43.517 回答