您现在的位置是: 软件 > 设计在线 > 网页陶吧 > 技术平台 > HTML学习 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

引起注意
2000-08-30· ·吴中卫··yesky

  我们在实际应用中,如果不做特殊处理(如屏蔽掉ALT+TAB或CTRL+ALT+DEL)的话,正在运行的软件就会被窗口焦点(Focus)的转移所遮盖,在多窗口下(上网冲浪)

  尤为显见。现在想实现的想法是,既不打扰我的喜爱(游戏),又可以提示我被Back-ground的应用是否正常,该怎么做呢?

  在Delphi的VCL帮助里是找不到简单答案的。快捷的方法是掌握Win32的函数调用FlashWindow,其原型见下:

  BOOL FlashWindow(

  HWND hWnd, //要闪烁提示的窗口句柄

  BOOL bInvert //闪烁开关

  );

  此外,为了侦察当前窗口是否激活,还要知道GetActiveWindow这个函数。该函数没有参数并且返回一个HWND值,它代表当前获得焦点的窗口句柄。在建立应用时,考虑到Application处于被动状态,我们要么是建立一个TTIMER的实例(INSTANCE)以备定时调用我们的事务,要么是把事务处理放在Application.OnIDLE事件中去,以一定的时差侦察应用是否被放入了后台。

  对应TTIMER.OnTimer事件的简单例子:

  

  procedure TForm1.Timer1Timer(Sender: TObject);

  begin

  if GetActiveWindow $#@60;$#@62; Form1.Handle Then //窗口被遮住了吗

  begin

  //是,那么让TaskBar上的Application标题闪烁

  FlashWindow(Application.Handle, Flash);

  //反转一下,待下一次用

  Flash := not Flash;

  ...

  //如果运行正常...

  //反之...

  end;

  end;

  

  这样,在游戏娱乐时,还可以见她(该应用)说:“瞧,我在这儿呢...”.

■ 相关内容
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!