首页 新闻 搜索 专区 学院

将窗口设置为不激活状态后,窗口的文本框也不能获取焦点了

0
悬赏园豆:10 [已解决问题] 解决于 2013-12-19 20:35

我在WPF程序中使用下面的代码将一个窗口设置为不能获取焦点,但是设置完成后,这个窗口中的文本框中不能输入文字了,该怎样让这个窗口既不获取焦点,也能在其中的文本框中输入文字?

 

#region 设置窗口为无焦点

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);

/// <summary>
/// 设置窗口为无焦点
/// </summary>
/// <param name="hwnd"></param>
public static void SetWindowNoFocus(IntPtr hwnd)
{
SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE );
}

#endregion 设置窗口为无焦点

于为源的主页 于为源 | 小虾三级 | 园豆:956
提问于:2013-12-19 15:55
< >
分享
最佳答案
0

不行,行不通。通常的做法是通过自绘窗体实现,也就是看上去不像被激活了。

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2013-12-19 15:57

偶是希望能达到这样的效果呀,我看Windows自带的语音识别的听写面板就是这种效果,窗口本身不获得焦点,文本框还可以编辑的,点击插入时可以将文字插入到指定的窗口中。

于为源 | 园豆:956 (小虾三级) | 2013-12-19 16:09

@于为源: 哦,你是如何知道窗口本身没有获得焦点的?你如何看出文本框还可以编辑?点击插入时,你如何知道窗口本身没有被激活?

Launcher | 园豆:45045 (高人七级) | 2013-12-19 16:19

@Launcher: 哦,是这样的我是打算模拟微软的那个语音识别的效果,刚才又打开他那个试了试,他也不能做到。分就给你啦,多谢多谢。

于为源 | 园豆:956 (小虾三级) | 2013-12-19 20:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册