怎样使窗口获得焦点

gt 2000-11-30 09:12:00
我可以用SetWindowPos将VB的窗口位于最前面,这时候打开记事本,输入焦点就移动到记事本上去了,应该用什么API函数使每隔一定时间就将焦点转换到我的VB窗口上呢?麻烦各位写的详细一点。
...全文
1538 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gt 2000-12-03
  • 打赏
  • 举报
回复
请各位再帮帮忙,我要的是:在win2000下,我的VB程序一起动,就不能对其他程序进行操作了。
y1g1y1 2000-12-02
  • 打赏
  • 举报
回复
请问用CTRL+ALT+DEL弹出的窗口是不是系统模式的?

你不把它关掉你能进行其它操作吗?

设置系统模式,要用API ,具体用哪个API 我一下子想不起来了,好像是SetWindowLong
y1g1y1 2000-12-01
  • 打赏
  • 举报
回复
你可以将你的窗体设置为模式窗口,系统模式.
这样用户只有关闭你的窗口,方可操作别的程序了!
fjqiwei 2000-12-01
  • 打赏
  • 举报
回复
用SetFocus可以获得焦点
如果问题解决请给分
gt 2000-12-01
  • 打赏
  • 举报
回复
我是想让 记事本等其他程序不能工作,就是说VB程序启动后所有在键盘上输入的内容都出现在
Text1中。
用Text1.SetFocus不行,在记事本中还是能输入内容。
gameboy999写的好像对头,我就是想没有机会操作别的窗体,只是我还是不知道语句要怎么写,
麻烦gameboy帮我写的详细一点。谢谢谢谢。

gt 2000-12-01
  • 打赏
  • 举报
回复
Private Sub Form_Deactivate()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
在Win2000下还是可以用ALT+TAB切换到记事本中用键盘输入,用timer也一样。

窗体设置为模式窗口,系统模式,在那里设置?
gameboy999 2000-12-01
  • 打赏
  • 举报
回复
你不需要用timer,只要在你想显示在最前的那个窗体的对Deactive事件响应的那个函数里加入
setwindowpos(me.hwnd,XXX_TOPMOST,0,0,0,0,XX_NOMOVE|XXX_NOSIZE)
'标记XX的是我记得不大清楚的地方,你可以去查一查.
由于只要你的窗体被别的窗体覆盖,则发生该事件,自然又会把窗体提前.
如果一定要timer的话,把它设为50毫秒,就可以满足要求了,太快则有点耗资源,还影响你的操作.
其实我觉得always_on_top窗体也就是这样实现的,只不过在delphi和vc++里都可以直接选择.
gameboy999 2000-11-30
  • 打赏
  • 举报
回复
在自己的form的deactive事件发生时用
setwindowpos重新定位就可以了。
但是注意,这时你不能,也就是没有机会操作别的窗体了!

如果你只是想把你的窗体置前,而记事本却可以继续工作,不受影响,
则记得在setwindowpos里多加一个参数,好象是XX_NOACTIVE吧,这就行了。
xddll 2000-11-30
  • 打赏
  • 举报
回复
首先我不知你的用意,好象想做触摸屏,不过用以下代码即可完成:
Private Sub Timer1_Timer()
Text1.SetFocus
End Sub

定时即可聚焦

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧