VFP 如何设定当前窗口是活动窗口?(有时候窗口在最前,但焦点在桌面上)
VFP如何设定当前窗口是活动窗口?(有时候窗口在最前,但焦点在桌面上)自作了一个自动刷卡的程序,什么都是全自动的,但焦点有时会在后面,虽然显示的是当前的vfp主画面。
有什么办法 可以使当前画面一直是活动画面? 或者使用定时器,定时的设定vfp窗口为活动窗口?
程序代码:# DEFINE SW_NORMAL 1 && 窗口状态:正常大小
# DEFINE SW_MAXIMIZE 3 && 窗口状态:最大化
DECLARE integer FindWindow IN WIN32API integer,string && 获取应用程序窗口句柄
DECLARE integer ShowWindow IN WIN32API integer,integer && 显示应用程序窗口
DECLARE integer IsZoomed IN WIN32API integer && 判断窗口是否最大化
DECLARE integer SetForegroundWindow IN WIN32API integer
cTitle = '自动刷卡程序' && 应用程序标题
nHwnd = FindWindow(0,cTitle) && 获取窗口句柄
IF nHwnd > 0 && 应用程序已启动
SetForegroundWindow(nHwnd)
IF IsZoomed(nHwnd) = 1 && 原窗口的状态是最大化
ShowWindow(nHwnd,SW_MAXIMIZE) && 激活原窗口,并保持最大化
ELSE
ShowWindow(nHwnd,SW_NORMAL) && 原窗口是隐藏或最小化状态,则激活原窗口,并保持正常大小
ENDIF
ENDIF若要完美实现楼主所要的功能,还要做如下设置:如果刷卡表单是顶层表单,直接设置表单的 AlwaysOnTop = .t.;如果表单不是顶层表单,设置 _Screen.AlwaysOnTop = .t.。这样设置后,即使单击其他窗口,也可以将焦点返回到刷卡程序窗口。