如何在系统右下角给出提示,却不抢夺当前用户的操作焦点

kunting 2013-01-22 02:27:11
大家好,最近做了个小程序,平时程序可以最小化到任务栏右下角,在有新的消息时出现一个小口窗口提示用户,不过现在出现一个问题就是,消息提示窗口会抢夺用户操作的焦点,请问大家帮忙指点一下,谢谢
...全文
138 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sosoben 2013-01-26
  • 打赏
  • 举报
回复
引用 8 楼 dylike 的回复:
把弹窗做成单独的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,或者把窗口位置从底部移上来
dylike 2013-01-23
  • 打赏
  • 举报
回复
把弹窗做成单独的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的,则扩展样式中“不可激活不抢焦点”就失效了。
kunting 2013-01-22
  • 打赏
  • 举报
回复
vb。net没有active方法 我试一下:GetForegroundWindow(); SetForegroundWindow(IntPtr hWnd);
  • 打赏
  • 举报
回复
Api: GetForegroundWindow(); SetForegroundWindow(IntPtr hWnd);
  • 打赏
  • 举报
回复
在弹出form之前先记录下焦点在哪,弹出之后立刻将焦点还给人家
kunting 2013-01-22
  • 打赏
  • 举报
回复
我是想不夺取光标和焦点
gxingmin 2013-01-22
  • 打赏
  • 举报
回复
vb.net不是this,是me
  Dim frm As New frmTip
        frm.Show()
        Me.Activate()
kunting 2013-01-22
  • 打赏
  • 举报
回复
to:gxingmin ,谢谢支持,vb.net中没有this.Activate()方法 ,你提供的应该是c#的方法吧!刚刚试了一下没找到vb.net对应的方法
gxingmin 2013-01-22
  • 打赏
  • 举报
回复
假设右下角窗体为frmTip,当前窗体为frmMain 在frmMain里显示frmTip后加上一句this.Activate(); frmTip frm=new frmTip(); frm.Show(); this.Activate();

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧