WinForm发送最小化消息无效
最近在做一个登陆窗口的时候,把WinForm的FormBorderStyle改成了None,然后自己贴图来实现最小化和关闭按钮,用PictureBox来做最小化按钮,单击事件的代码如下:
private void pictureBoxMinimize_Click(object sender, EventArgs e)
{
int code = SendMessage(this.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
Console.WriteLine("SendMessage返回值为:" + code);
}
其中消息常量和SendMessage为
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MINIMIZE = 0xF020;
[DllImport("User32.dll")]
public static extern int SendMessage(IntPtr hWnd, int message, int wParam, int lParam);
不知道为什么SendMessage无效(SendMessage返回值为0),窗口没有反应,我重写了WndProc,发现确实能捕获到WM_SYSCOMMAND,并且wParam的值为SC_MINIMIZE。
请教高手,上面的做法有错吗?原因是什么?
------解决方案-------------------- this.WindowState=FormWindowState.Minimized不就行了,为何要发消息?
------解决方案-------------------- 引用: this.WindowState=FormWindowState.Minimized不就行了,为何要发消息?
------解决方案-------------------- 不需要用句柄
this.WindowState=FormWindowState.Minimized
或者this.Hide()
------解决方案-------------------- 请用 PostMessage 代替 SendMessage
------解决方案--------------------
private void button1_Click(object sender, EventArgs e)
{
int code = SendMessage(this.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); // 1