我覺得去這裏的方式處理WM_ACTIVE消息,然後檢查是否fMinimized參數不爲零。您可以在here的代碼中找到有關如何在此代碼中聲明此消息的更多信息。
我會試着弄清楚如何在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」或「back」,它使用窗體的close方法。我以各種形式使用它來保持標準。這對於Windows用戶來說不太明確,因爲他們可能會認爲windows mobile中的X與PC中的Windows相同。
如果由於某種原因,你需要儘量減少你的應用程序或將其發送到後臺使用下面的代碼:
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);
}
}
** Compact Framework **不允許訪問正常`Form`的`WindowProc`方法,那麼我該如何使用這個建議呢?或者我在這裏錯過了一些東西...... – 2011-06-22 18:11:48