文档章节

C# 实现打开窗口不获取焦点

天体图
 天体图
发布于 2016/12/12 14:48
字数 400
阅读 193
收藏 1

最近,在做一个tooltip窗口,鼠标移到某个控件上去,这个tooltip窗口就打开并显示一些信息(有图片和文字)。

发现如果先tooltipWindow.show()然后再this.focus(),主窗体会有闪烁。

网上搜了一下,发现有前辈说:

  1. 创建窗口时去掉WS_VISIBLE属性,加上WS_DISABLED属性。

  2. 创建窗口,得到窗口句柄。

  3. ::ShowWindow(m_hWnd,SW_SHOWNOACTIVATE)显示窗口,则不会抢夺焦点。

  4. 更进一步,可以屏蔽鼠标点击时获得焦点的行为,响应WM_MOUSEACTIVATE,返回MA_NOACTIVATE。

但是也没有给代码。所以我自己试了试:

发现不需要用到第一步。也不知道是为什么。(我的tooltip不需要第4步)

把tooltipWindow.Show()换成Win32.ShowWindow(tooltipWindow.Handle,SW_SHOWNOACTIVATE)就好了,也不用再使用this.Focus()。

注:ShowWindow的实现和SW_SHOWNOACTIVATE的值自己搜索一下就好了

 

参考资料:http://www.cnblogs.com/cartler/p/4537719.html

 

----------------------------------咯咯咯-------------------------------

后来发现主窗体最小化后再还原,鼠标再移上去的时候就不显示tooltip窗口了,应该是z轴顺序的问题,但是我设了tooltip窗口的TopMost=true之后,主窗口还是会闪烁。

我想要不要换个方式改变tooltip窗口的z轴顺序,就找到了Winapi里的SetWindowPos方法,试了一下,行了!

Win32.ShowWindow(tooltip.Handle,4);//4=SW_SHOWNOACTIVATE
Win32.SetWindowPos(tooltip.Handle, -1, MousePosition.X + 2, MousePosition.Y + 2, 0, 0, 1 | 0x10);

参考资料:

https://yq.aliyun.com/articles/53789

http://www.jb51.net/article/32718.htm

© 著作权归作者所有

天体图

天体图

粉丝 16
博文 5
码字总数 4734
作品 0
南京
私信 提问
通通WPF随笔(4)——通通手写输入法(基于Tablet pc实现)

原文:通通WPF随笔(4)——通通手写输入法(基于Tablet pc实现) 从我在博客园写第一篇博客到现在已经有1年半了,我的第一篇博客写的就是手写识别,当时,客户需求在应用中加入手写输入功能,...

杰克.陈
2018/08/03
0
0
JavaScript[对象.属性]集锦

作者: 蓝色理想 SCRIPT 标记? 用于包含JavaScript代码.? 属性? LANGUAGE 定义脚本语言? SRC 定义一个URL用以指定以.JS结尾的文件? windows对象? 每个HTML文档的顶层对象.? 属性? frames[] ...

晨曦之光
2012/03/09
168
0
C# Winform在win10里弹出无焦点的窗口

原文:C# Winform在win10里弹出无焦点的窗口 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangmy1988/article/details/78617139 有个项目需要在右下角弹出广...

杰克.陈
2018/11/02
0
0
JavaSwing_5.3: 事件处理

本文链接: http://blog.csdn.net/xietansheng/article/details/78389255 Java Swing 图形界面开发(目录) 前面介绍每个组件时,几乎都已经介绍了相应事件的使用。这里仅对常用的事件做一个小...

xietansheng
2017/10/29
0
0
用Winform实现屏幕小键盘

前几天碰到一个问题,需要使用Winform实现屏幕小键盘,研究了一下,有一个自认为比较完美的解决方案。 屏幕小键盘的实现方式很简单,无非就是在窗体上加上几个按钮,然后在鼠标的点击事件里使...

技术小美
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Activity启动模式二

上篇文章Activity启动模式一主要介绍了Activity的四种启动模式,这些启动模式都是在AndroidManifest中进行配置的。除此之外,Android系统还通过Intent类提供了一些标志位,同样可以指定Activ...

ltlovezh
28分钟前
4
0
三原色还原

1、Color Filter Array — CFA 随着数码相机、手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR 模式和 CFA 模式...

天王盖地虎626
39分钟前
3
0
kubernetes pod exec接口调用

正文 一般生产环境上由于网络安全策略,大多数端口是不能为集群外部访问的。多个集群之间一般都是通过k8s的ApiServer组件提供的接口通信,如https://192.168.1.101:6443。所以在做云平台时,...

码农实战
今天
8
0
3_数组

3_数组

行者终成事
今天
8
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部