代码之家  ›  专栏  ›  技术社区  ›  Tester101

在其他窗口上显示窗口,但不显示任务栏

  •  1
  • Tester101  · 技术社区  · 16 年前

    我的应用程序会弹出一个自定义对话框每当在RSS源中发现新项目时,自定义对话框将从屏幕底部开始,向上升起,暂停,然后再向下下拉。

    我希望对话框位于其他窗口之上(因为通知对我很重要),所以我将窗体上最顶层的属性设置为true。问题是它也在任务栏的顶部(我不想要)。

    是否有方法使对话框位于其他窗口的顶部,而不是任务栏?

    (请不要讨论我是否 应该 这样做。这是一个自定义应用程序,仅供我使用,这就是 我 想让它发挥作用。我还添加了一个设置来打开/关闭此功能,以防我不希望它再这样工作。)

    2 回复  |  直到 16 年前
        1
  •  0
  •   Pieter van Ginkel    16 年前

    这不起作用的原因是你不知道你想要弹出窗口结束的最上面的窗口是在任务栏上面还是下面。大多数情况下,实际的最上面的窗口将位于任务栏上。如果另一个窗口已经在任务栏上,则在任务栏下面和另一个窗口上面不能有窗口。

    你可以稍微摆弄一下setwindowpos,看看你是否能得到你喜欢的结果,但这将变得非常困难。

    见 http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx 有关setWindowPos()的工作方式,以及 http://www.pinvoke.net/default.aspx/user32.setwindowpos 和 http://www.pinvoke.net/default.aspx/Constants.SWP 有关如何从WinForms调用此函数的信息。

        2
  •  1
  •   James King    16 年前

    这里有一个在任务栏上方弹出的好例子:
    http://www.codeproject.com/KB/miscctrl/taskbarnotifier.aspx

    如果用户正在拖动窗口,则需要重写 OnPaint 事件。钥匙在叫 SetBounds() 在窗体上,计算窗体大小和 Screen.PrimaryScreen.WorkingArea 从高度上排除任务栏。

    HTH
    詹姆斯