当前位置:  开发笔记 > 编程语言 > 正文

掌上电脑/ Windows Mobile:如何检测智能最小化

如何解决《掌上电脑/WindowsMobile:如何检测智能最小化》经验,为你挑选了1个好方法。

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

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

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



1> Geries Handa..:

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

我将尝试弄清楚如何在C#中对此进行精确编码并证明该假设.但是你可能比我快,并想出来.

还要检查用于处理消息的函数DefWindowProc和WindowProc.函数在代码中声明如下:

首先要包括:

using System.Runtime.InteropServices;

然后在类中声明这样

[DllImport("coredll.dll")]
static extern IntPtr DefWindowProc(IntPtr hWnd, uint uMsg, UIntPtr wParam,
   IntPtr lParam);

还有一件事你可以做,这更像是一种"哲学"的解决方法.INMO智能最小化X让用户感到困惑,这就是我不喜欢包含它的原因.相反,我在表单的右下角提供了一个按钮,表示"关闭"或"返回",它使用表单的close方法.我以各种形式使用它来保持标准.这对于Windows用户来说不那么模糊,因为他们可能会认为Windows Mobile中的X与PC的Windows中的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);
    }
} 

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有