none
软件启动时,未在任务栏显示程序图标 RRS feed

  • 问题

  • 启动时,未调用ShowWindow(nCmdShow),该函数导致布局调整。

    而是调用了RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE);

    界面大小和显示都没问题。但是出现一个新情况,任务栏里面不再显示程序图标了。

    最小化以后在任务栏找不到程序了,用Alt+tab切换应用程序,可以看到。切换到程序以后,任务栏就有图标了。

    我估计是需要手工发一个任务栏显示程序图标的消息。请问这个用什么显示?

    2020年2月7日 2:38

答案

  • 导致这个问题的主要现象,在程序启动时显示了登录窗口,此时任务栏有登录窗口的图标。登录窗口是一个普通对话框。

    然后MainFrame设置了延迟显示,关闭登录窗口时,为了避免闪缩,没有调用ShowWindow,而是直接调用了RedrawWindow强制重刷窗口,然后任务栏里的图标,登录窗口的图标关闭以后,MainFrame的窗口的任务图标就没了。应该是没有调用showWindow的原因。

    现在没办法只好调用一次ShowWindow,启动时界面有些闪缩。但是任务栏图标有了。

    2020年3月24日 1:27

全部回复

  • 你好,

    感谢您在MSDN论坛发帖提问。

    >>需要手工发一个任务栏显示程序图标的消息。请问这个用什么显示?

    我建议你可以尝试使用NOTIFYICONDATA结构Shell_NotifyIcon()函数来实现图标的显示。

    NOTIFYICONDATAA结构包含系统在通知区域中显示通知所需的信息。然后使用Shell_NotifyIcon()函数在任务栏中显示图标。该函数的作用是将消息发送给任务栏的状态区域,系统收到消息后,进行后续处理。

    Best Regards,

    Jeanine Zhang

    2020年2月7日 6:52
    版主
  • Shell_NotifyIcon()这个函数在任务栏的最右边的托盘区增加图标吧?

    现在程序是在任务栏就没显示图标

    具体情况是:

    登录窗口时,任务栏显示登录窗口图标。

    登录结束,关闭登录窗口,任务栏把登录窗口图标销毁。然后没有显示MainFrame的图标。这是主程序显示了。

    如果最小化主程序,任务栏图标也不现实。导致程序无法恢复显示了。

    用alt+tab切换任务,能看到程序。在这里激活程序,任务栏开始可以显示图标了。从此以后正常。

    2020年2月7日 7:44
  • 你好,

    我建议你可以尝试在弹出对话框的类的OnInitDialog()函数中加入如下语句:

    this->ModifyStyleEx(0,WS_EX_APPWINDOW);

    Best Regards,

    Jeanine Zhang

    2020年2月12日 6:42
    版主
  • 您的主窗口的风格是不是WS_EX_TOOLWINDOW,而不是WS_EX_APPWINDOW?

    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.

    2020年3月10日 9:17
    版主
  • 主窗口是向导建立的MDI风格窗口,没有修改过风格。应该是WS_EX_APPWINDOW
    2020年3月24日 1:21
  • 导致这个问题的主要现象,在程序启动时显示了登录窗口,此时任务栏有登录窗口的图标。登录窗口是一个普通对话框。

    然后MainFrame设置了延迟显示,关闭登录窗口时,为了避免闪缩,没有调用ShowWindow,而是直接调用了RedrawWindow强制重刷窗口,然后任务栏里的图标,登录窗口的图标关闭以后,MainFrame的窗口的任务图标就没了。应该是没有调用showWindow的原因。

    现在没办法只好调用一次ShowWindow,启动时界面有些闪缩。但是任务栏图标有了。

    2020年3月24日 1:27