Foxtable(狐表)用户栏目专家坐堂 → (已解决) 模式窗口置于顶层后,如何设置为活动窗口?


  共有4108人关注过本帖树形打印复制链接

主题:(已解决) 模式窗口置于顶层后,如何设置为活动窗口?

帅哥哟,离线,有人找我吗?
bahamute
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
(已解决) 模式窗口置于顶层后,如何设置为活动窗口?  发帖心情 Post By:2014/7/26 15:32:00 [只看该作者]

模式窗口采用e.Form.baseform.topmost = true方法置于顶层后,如何设置为活动窗口?
虽然显示于顶层,但有时会变成非活动窗口,还得用鼠标点击窗口,才能输入数据,
如何用代码使其始终保持在活动窗口,这样可以避免用户敲击了一堆字符,结果却没输进去的尴尬。

[此贴子已经被作者于2014-7-26 18:56:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/7/26 16:11:00 [只看该作者]

怎么会这样的呢,按道理打开模式窗口,默认就会成为激活窗口的哦。

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/7/26 16:18:00 [只看该作者]

比如说,超时锁定窗口,10分钟未操作,则弹出,但这时往往屏幕保护也会作用,屏保消失后,有时就会出现窗口的确显示在最顶层,但却不接受键盘输入。也就是说窗口处于非活动状态。
[此贴子已经被作者于2014-7-26 16:20:50编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/7/26 16:22:00 [只看该作者]

这种问题,随它去吧


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/7/26 16:24:00 [只看该作者]

百度了一下,貌似采用SetForegroundWindow函数可以解决,请狐爸帮忙看一下,能否实现,谢谢。
SetForegroundWindow  函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。
  函数原型:BOOL SetForegroundWindow()
  SetForegroundWindow()函数本身是不带参数的,具体激活某个窗口的方法可以用:
  pWnd->SetForegroundWindow();//这里的pWnd即所要激活窗口的句柄。
  返回值:如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零。
  备注:前台窗口是z序顶部的窗口,是用户的工作窗口。在一个多任务优先抢占环境中,应让用户控制前台窗口。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/7/26 16:26:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/7/26 18:35:00 [只看该作者]

经解决,供有需要狐友参考。

全局代码:

Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long


窗口计时器代码:

SetForegroundWindow(e.Form.baseform.Handle)



 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/7/26 18:49:00 [只看该作者]

以下是引用bahamute在2014-7-26 18:35:00的发言:
经解决,供有需要狐友参考。

全局代码:

Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long


窗口计时器代码:

SetForegroundWindow(e.Form.baseform.Handle)


谢谢

先收藏,免得用时找不着。


 回到顶部
帅哥哟,离线,有人找我吗?
lsy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2014/7/26 19:04:00 [只看该作者]

好像这样也行:

e.Form.Controls("TextBox1").Select   '要成为活动窗口,可以选定其中的控件

 

这个最简便:

e.Form.Show

[此贴子已经被作者于2014-7-26 19:13:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1425 积分:11332 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/7/26 19:08:00 [只看该作者]

这个更简单,回头试试,谢谢!

 回到顶部
总数 11 1 2 下一页