創建類似於輸入法窗口的非激活窗口
阿新 • • 發佈:2019-04-24
輸入法 info setw 程序 pan -- blog import helper 原文:創建類似於輸入法窗口的非激活窗口 return cp;
}
}
方式2, 通過SetWindowLong函數來設置窗口的ExStyle
public const int GWL_EXSTYLE = -20;
public const int WS_EX_NOACTIVATE = 0x8000000;
[DllImport("user32.dll ")]
public static extern int SetWindowLong(IntPtr window, int index, int value);
[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr window, int index);
static void Test(IntPtr hwnd)
{
SetWindowLong(hwnd, GWL_EXSTYLE,
GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE);
} 調用上面的Test(IntPtr hwnd)方法就可以了, 對於WPF程序, 可以通過new WindowInteropHelper(myWindow).Handle來獲取窗口句柄
創建類似於輸入法窗口的非激活窗口
周銀輝
我們註意到輸入法的候選詞窗口是不會被激活而獲得輸入焦點的, 一個很明顯的現象是當你用鼠標點擊該窗口時, 系統焦點不會轉移到該窗口上, 原來獲得焦點的窗口不會失去焦點. 這很棒, 如何實現呢?
很簡單, 只要將窗口的ExStyle設置為WS_EX_NOACTIVATE(0x8000000)即可. (另外, 值得註意的是, 如果窗口在任務欄顯示圖標的話, 仍可以通過任務欄圖標來激活它)
方式1, winform窗口中, 通過重寫CreateParams屬性來修改ExStyle:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= WS_EX_NOACTIVATE;
}
}
方式2, 通過SetWindowLong函數來設置窗口的ExStyle
public const int GWL_EXSTYLE = -20;
public const int WS_EX_NOACTIVATE = 0x8000000;
[DllImport("user32.dll
public static extern int SetWindowLong(IntPtr window, int index, int value);
[DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr window, int index);
static void Test(IntPtr hwnd)
{
SetWindowLong(hwnd, GWL_EXSTYLE,
GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE);
} 調用上面的Test(IntPtr hwnd)方法就可以了, 對於WPF程序, 可以通過new WindowInteropHelper(myWindow).Handle來獲取窗口句柄
創建類似於輸入法窗口的非激活窗口