当前位置: 代码迷 >> VB Dotnet >> 怎么在系统右上角给出提示,却不抢夺当前用户的操作焦点
  详细解决方案

怎么在系统右上角给出提示,却不抢夺当前用户的操作焦点

热度:7019   发布时间:2013-02-26 00:00:00.0
如何在系统右下角给出提示,却不抢夺当前用户的操作焦点
大家好,最近做了个小程序,平时程序可以最小化到任务栏右下角,在有新的消息时出现一个小口窗口提示用户,不过现在出现一个问题就是,消息提示窗口会抢夺用户操作的焦点,请问大家帮忙指点一下,谢谢

------解决方案--------------------------------------------------------
假设右下角窗体为frmTip,当前窗体为frmMain

在frmMain里显示frmTip后加上一句this.Activate();

frmTip frm=new frmTip();
frm.Show();
this.Activate();
------解决方案--------------------------------------------------------
Api:
GetForegroundWindow();
SetForegroundWindow(IntPtr hWnd);
------解决方案--------------------------------------------------------
把弹窗做成单独的EXE,在弹窗代码里加上一段
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
        Get
            Dim cp As CreateParams = MyBase.CreateParams
            cp.ExStyle = cp.ExStyle Or &H8000000
            Return cp
        End Get
    End Property


之所以要做成单独EXE,是因为如果这个窗体是由其他窗体show的,则扩展样式中“不可激活不抢焦点”就失效了。
------解决方案--------------------------------------------------------
引用:
把弹窗做成单独的EXE,在弹窗代码里加上一段
Visual Basic code?1234567Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams        Get            Dim cp As CreateParams = MyBase.Creat……


楼上方法看似可行! 以后我也试试

目前我的方法是这样的
窗口只把visiable 设为 false 有需要的时候 才 true
然后加两句 
topmost= true
topmost= false
这时候窗体就在最前面了,但焦点并不会抢夺

然后你想要效果的话,就把透明度逐步从0到100,或者把窗口位置从底部移上来
  相关解决方案