以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- (已解决) 模式窗口置于顶层后,如何设置为活动窗口? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=54364) |
-- 作者:bahamute -- 发布时间:2014/7/26 15:32:00 -- (已解决) 模式窗口置于顶层后,如何设置为活动窗口? 模式窗口采用e.Form.baseform.topmost = true方法置于顶层后,如何设置为活动窗口? 虽然显示于顶层,但有时会变成非活动窗口,还得用鼠标点击窗口,才能输入数据, 如何用代码使其始终保持在活动窗口,这样可以避免用户敲击了一堆字符,结果却没输进去的尴尬。 [此贴子已经被作者于2014-7-26 18:56:43编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2014/7/26 16:11:00 -- 怎么会这样的呢,按道理打开模式窗口,默认就会成为激活窗口的哦。 |
-- 作者:bahamute -- 发布时间:2014/7/26 16:18:00 -- 比如说,超时锁定窗口,10分钟未操作,则弹出,但这时往往屏幕保护也会作用,屏保消失后,有时就会出现窗口的确显示在最顶层,但却不接受键盘输入。也就是说窗口处于非活动状态。 [此贴子已经被作者于2014-7-26 16:20:50编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2014/7/26 16:22:00 -- 这种问题,随它去吧 |
-- 作者:bahamute -- 发布时间:2014/7/26 16:24:00 -- 百度了一下,貌似采用SetForegroundWindow函数可以解决,请狐爸帮忙看一下,能否实现,谢谢。 函数原型:BOOL SetForegroundWindow()SetForegroundWindow 函数功能:该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。 SetForegroundWindow()函数本身是不带参数的,具体激活某个窗口的方法可以用: pWnd->SetForegroundWindow();//这里的pWnd即所要激活窗口的句柄。 返回值:如果窗口设入了前台,返回值为非零;如果窗口未被设入前台,返回值为零。 备注:前台窗口是z序顶部的窗口,是用户的工作窗口。在一个多任务优先抢占环境中,应让用户控制前台窗口。 |
-- 作者:狐狸爸爸 -- 发布时间:2014/7/26 16:26:00 -- http://www.foxtable.com/help/topics/2713.htm
|
-- 作者: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 -- 发布时间: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 -- 发布时间:2014/7/26 19:04:00 -- 好像这样也行: e.Form.Controls("TextBox1").Select \'要成为活动窗口,可以选定其中的控件
这个最简便: e.Form.Show [此贴子已经被作者于2014-7-26 19:13:29编辑过]
|
-- 作者:bahamute -- 发布时间:2014/7/26 19:08:00 -- 这个更简单,回头试试,谢谢! |