gpt4 book ai didi

.net - 掌上电脑/Windows Mobile : How to detect smart minimize

转载 作者:行者123 更新时间:2023-12-04 12:38:41 26 4
gpt4 key购买 nike

我如何检测我的 Compact Framework 应用程序何时被智能最小化(智能最小化是当用户单击 Pocket PC 右上角的“X”按钮时发生的情况)?

Deactivate 事件不是正确的方式,因为它发生在最小化以外的情况下,例如当消息框或其他窗体显示在主窗体的顶部时。并且窗体的 WindowState 没有帮助,因为 .NET CF 上没有“最小化”WindowState。

我听说通过设置 MinimizeBox = false,我的应用程序将被关闭而不是最小化。但我实际上不想关闭我的应用程序,我只想知道它何时最小化。

最佳答案

我认为去这里的方法是处理 WM_ACTIVE消息,然后检查 fMinimized 参数是否不为零。您可以在 here 中找到有关如何在代码中声明此消息的更多信息。 .

我将尝试找出如何在 C# 中准确编码并证明假设。但是,您可能比我更快并弄清楚。

还要检查功能 DefWindowProcWindowProc ,用于处理消息。函数在您的代码中声明如下:

首先有包括:

using System.Runtime.InteropServices;

然后在类里面像这样声明
[DllImport("coredll.dll")]
static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, UIntPtr wParam,
IntPtr lParam);

您还可以做另一件事,这更像是一种“哲学”解决方法。 INMO 智能最小化 X 使用户感到困惑,这就是我不喜欢包含它的原因。相反,我在表单的右下角提供了一个按钮,上面写着“关闭”或“返回”,它使用表单的关闭方法。我以各种形式使用它来保持标准。这对于 windows 用户来说没有那么模糊,因为他们可能会假设 windows mobile 中的 X 与 windows for PC 中的 X 相同。

如果出于某种原因您需要最小化您的应用程序或将其发送到后台,请使用以下代码:
using System.Runtime.InteropServices;
...

public partial class Main : Form
{
public Main()
{


InitializeComponent();
}

[DllImport("coredll.dll")]
static extern int ShowWindow(IntPtr hWnd, int nCmdShow);

const int SW_MINIMIZED = 6;

...
...

public void HideForm()
{
ShowWindow(this.Handle, SW_MINIMIZED);
}
}

关于.net - 掌上电脑/Windows Mobile : How to detect smart minimize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/365773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com