我有一个在C#中使用以下CreateParams创建的窗口:
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.ExStyle |= (int) Windows.WS_EX_NOACTIVATE;
return ret;
}
}
我想要的效果是它不会从其他窗口中窃取(键盘)焦点,但仍会响应鼠标输入。
问题:
当我想用鼠标移动它时,我怎么能从代码中激活,移动然后停用它?我正在覆盖WndProc
并使用Windows消息。
必须有能够做到的窗口消息。 sys命令"Move"确实激活它,所以它应该是可能的。但是我需要它让用户更轻松地移动窗口。
修改
我设法使用以下代码激活和停用它,但它不随鼠标移动(仅在鼠标向上更改其位置)。键盘焦点(插入符号)保留在另一个窗口中。这就是我需要保持原样,重点放在另一个窗口。
SendMessage(m.HWnd, WM_NCACTIVATE, new IntPtr(1), IntPtr.Zero); // activate
SendMessage(m.HWnd, WM_NCACTIVATE, IntPtr.Zero, IntPtr.Zero); // deactivate