重载窗体的 WndProc
protected override void WndProc(ref Message m )
{
if (m.WParam.ToInt32()== 61472) // minimize message
{
m.Result = new IntPtr(0); // Take care of message
this.Hide(); // Hide the form
}
else // Else...
base.WndProc(ref m); // ...let Form take care of this message (normally)
}

解决方案 »

  1.   

    这些都是定义好的常量,如果你安装C++,找到WINUSER.H,就会看到这些常量的意义.比如#define SC_MINIMIZE     0xF020 = 61472.你可以把这些整数定义在你的程序中,用这些符号来代替数值,程序可读性强. 比如:private int SC_MINIMIZE = 0xF020;if (m.WParam.ToInt32()== SC_MINIMIZE)#define SC_SIZE         0xF000
    #define SC_MOVE         0xF010
    #define SC_MINIMIZE     0xF020
    #define SC_MAXIMIZE     0xF030
    #define SC_NEXTWINDOW   0xF040
    #define SC_PREVWINDOW   0xF050
    #define SC_CLOSE        0xF060
    #define SC_VSCROLL      0xF070
    #define SC_HSCROLL      0xF080
    #define SC_MOUSEMENU    0xF090
    #define SC_KEYMENU      0xF100
    #define SC_ARRANGE      0xF110
    #define SC_RESTORE      0xF120
    #define SC_TASKLIST     0xF130
    #define SC_SCREENSAVE   0xF140
    #define SC_HOTKEY       0xF150
    #if(WINVER >= 0x0400)
    #define SC_DEFAULT      0xF160
    #define SC_MONITORPOWER 0xF170
    #define SC_CONTEXTHELP  0xF180
    #define SC_SEPARATOR    0xF00F