| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4234 人关注过本帖
标题:系统环境下如何判断VFP表单窗口处于激活状态?
只看楼主 加入收藏
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
结帖率:60%
收藏
已结贴  问题点数:20 回复次数:19 
系统环境下如何判断VFP表单窗口处于激活状态?
我有一个程序,是在播放PPT的同时显示VFP表单的内容,需要在PPT和VFP表单之间来回切换,但由于PPT和VFP表单均未显示窗口标题栏,所以有时候不知道哪个窗口处于激活状态,各位可有什么好办法检测VFP窗口当前是否处于激活状态呢?(在VFP环境下两个VFP表单哪个是激活的知道,但在系统环境下利用ALT+TAB切换窗口时表单中的响应事件ACTIVATE没有反应)
搜索更多相关主题的帖子: 环境 VFP 表单 窗口 激活 
2017-08-18 08:45
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:10 
这问题,吹斑竹知道,我记得他以前在这个论坛上说过,好像是用API函数处理的.
2017-08-18 08:53
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 2楼 mywisdom88
可惜的是我不知道怎么联系他,您记得当时的题目内容吗?我搜一下。
2017-08-18 09:15
红星二锅头
Rank: 8Rank: 8
等 级:贵宾
威 望:46
帖 子:491
专家分:754
注 册:2016-8-25
收藏
得分:0 
VFP 可以 PPT 自动化的,可以直接嵌入和播放 PPT 文档的

团队红星二锅头,队长王猛,领队李冲,顾问杨伟,副队张挺,外联马彪,内勤韩秀,人事顾闯,财务赵魁,后勤周强
2017-08-18 09:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
** test.prg
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
_SCREEN.Visible = .F.
of = CREATEOBJECT("myForm")
of.show
READ EVENTS
RETURN

DEFINE CLASS myForm As Form
    ShowWindow = 2
   
    PROCEDURE UnLoad
        CLEAR EVENTS
    ENDPROC

    PROCEDURE Init
        BINDEVENT(this.hWnd, 7, this, "_SetFocus")
        BINDEVENT(this.hWnd, 8, this, "_KillFocus")
    ENDPROC
   
    FUNCTION _SetFocus(hWnd, nMsg, wParam, lParam)
        this.Caption = this.name + "窗口获得焦点"
        SendMessage(hWnd, nMsg, wParam, lParam)
    ENDFUNC

    FUNCTION _KillFocus(hWnd, nMsg, wParam, lParam)
        this.Caption = this.name + "窗口失去焦点"
        SendMessage(hWnd, nMsg, wParam, lParam)
    ENDFUNC
ENDDEFINE
2017-08-18 09:40
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 5楼 吹水佬
非常感谢!
2017-08-18 09:45
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 5楼 吹水佬
不好意思,我是菜鸟,我再请教一下,在我的表单中如何利用您教给我的功能呢?
是否将:
DECLARE LONG SendMessage IN User32 LONG, LONG, LONG, LONG
_SCREEN.Visible = .F.

BINDEVENT(this.hWnd, 7, this, "_SetFocus")
BINDEVENT(this.hWnd, 8, this, "_KillFocus")

以上代码放入表单的INIT事件中,
然后剩下的部分:
    FUNCTION _SetFocus(hWnd, nMsg, wParam, lParam)
        this.Caption = this.name + "窗口获得焦点"
        SendMessage(hWnd, nMsg, wParam, lParam)
    ENDFUNC

    FUNCTION _KillFocus(hWnd, nMsg, wParam, lParam)
        this.Caption = this.name + "窗口失去焦点"
        SendMessage(hWnd, nMsg, wParam, lParam)
    ENDFUNC
如何在表单中调用呢?
也就是说我运行我的表单,然后用您的办法来实现,但我不知道如何在表单中实现,还请赐教,非常感谢!
2017-08-18 10:17
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
_SetFocus和_KillFocus是自定义表单的方法,在“菜单--表单--新建方法程序”定义。
入口参数:
LPARAMETERS hWnd, nMsg, wParam, lParam
2017-08-18 10:26
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 8楼 吹水佬
谢谢,我试试,弄不明白的地方再请教您!
2017-08-18 10:29
w7802672
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2015-5-20
收藏
得分:0 
回复 8楼 吹水佬
测试成功了!非常非常的感谢!
2017-08-18 10:43
快速回复:系统环境下如何判断VFP表单窗口处于激活状态?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023375 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved