一些关于vc的问答
源代码在线查看: subject_36962.htm
序号:36962 发表者:李岩飞 发表日期:2003-04-20 12:23:31
主题:如何控制,让其他程序中失去焦点的窗口高亮度显示在屏幕的最前面
内容:如题
返回上页访问论坛
回复者:最后疯狂 回复日期:2003-04-20 17:11:39
内容:创建一个顶层窗口即可。
返回上页访问论坛
回复者:李岩飞 回复日期:2003-04-20 17:56:36
内容:情况这样:要写一个程序,主窗口隐藏了,只有托盘区有图标,当某条件满足时,比如收到网络远端的信号,这个程序的主窗口就被激活显示在屏幕最前面了,该怎么做到这一点啊? 我可以让该窗口显示并设置为最顶层,但是却被最小化到任务栏上了,除非我用鼠标点一下,窗口才能得到焦点,怎么办呢?
返回上页访问论坛
答案被接受回复者:最后疯狂 回复日期:2003-04-20 18:13:20
内容:很简单:1、当收以远端信号时,使用ShowWindow(SW_SHOW)使主窗口显示;2、使用Shell_NotifyIcon()让系统托盘中的进程图标消失;当处理完毕后,1、使用ShowWindow(SW_HIDE)让主窗口隐藏;2、使用Shell_NotifyIcon()再次把进程的图标显示在系统托盘。
返回上页访问论坛
回复者:李岩飞 回复日期:2003-04-20 18:45:07
内容:谢谢最后疯狂的回复。这个窗口在init时已被设置为始终在最顶层。可是收到远端信号时我正在其他程序上做其他事情啊,ShowWindow(SW_SHOW)之后这个窗口并没有如我所愿的跑到屏幕最顶层,而是最小化到任务栏上去了。一句话,ShowWIndow(SW_SHOW)之后怎么让该窗口得到焦点?
返回上页访问论坛
回复者:luowen 回复日期:2003-04-20 19:02:59
内容:你可以设定焦点:用函数:setfocus(),SetForegroundWindow();
返回上页访问论坛
回复者:最后疯狂 回复日期:2003-04-20 19:20:39
内容:对不起,这个我也不知道。
返回上页访问论坛
回复者:李岩飞 回复日期:2003-04-20 20:03:32
内容:谢谢luowen的回复。我试了这两个函数,运行后在该窗口仍然是最小化状态,只在任务栏上高亮度闪烁,仍然没有在屏幕中间正常显示出来啊,除非用鼠标点任务栏上的该窗口的任务条。这个问题的关键是:不管我当前在电脑上干什么,只要这个程序被触发,就要让这个程序的窗口显示在屏幕最顶层!可以想象,如果触发之前我点击了快捷图标“显示桌面”,然后什么也不做,这时该程序被网络远端悄悄触发了,怎么显示该程序的窗口到最顶层啊。类似于某些黑客程序。
返回上页访问论坛
回复者:李岩飞 回复日期:2003-04-20 20:08:53
内容:对不起,其实很简单,就是ShowWindow(SW_SHOW)就可以的。我忘了之前我把下面注释了,呵呵if ( GetExStyle() != WS_EX_TOPMOST ) {// SetWindowPos(&wndTopMost, 0, 0, 0, 0,SWP_NOSIZE | SWP_NOMOVE); }取消注释就可以了。呵呵
返回上页访问论坛
回复者:最后疯狂 回复日期:2003-04-21 03:10:23
内容:ShowWindow()就把程序调到前台了吧?呵呵
返回上页访问论坛