ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zyz995462

请问怎样使EXCEL窗口成为顶层?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-28 16:52 | 显示全部楼层
本帖已被收录到知识树中,索引项:窗体

搜了半天,看到setwindowpos的说明:这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个子类处理模块来重设最顶部状态

是不是说一旦被屏蔽或最小化,用该函数定义的顶层窗口立即失效了?一直不失效的难道要用deferwindowpos吗?我一头雾水,对API具体编程一窍不通,请大侠多多指教。

TA的精华主题

TA的得分主题

发表于 2006-7-28 17:38 | 显示全部楼层

Private
    Sub Workbook_BeforeClose(Cancel As Boolean)
    Call MakeNormal(Application.hwnd)
End Sub

'

'---------------------------------------------------------------------------------------
' Module    : Module1
' DateTime  :
' Author    :
' Purpose   :
'---------------------------------------------------------------------------------------
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, y, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Private Const TOPMOST_FLAGS = SWP_NOMOVE Or SWP_NOSIZE

Public Sub MakeNormal(hwnd As Long)
    SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub
Public Sub MakeTopMost(hwnd As Long)
    SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
End Sub

Sub Test()
    Call MakeTopMost(Application.hwnd)
    ' Call MakeNormal(Application.hwnd)
End Sub

[此贴子已经被作者于2006-7-28 17:42:06编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-28 19:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢lotustower大侠热情指教!只是我实在菜鸟,对VBA编程一窍不通,只知道录制宏。哪位大哥能根据上面的代码制作一个例子啊

TA的精华主题

TA的得分主题

发表于 2006-7-28 19:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
lotustower把该做的都做了, 剩下的就要你自己去学了.

TA的精华主题

TA的得分主题

发表于 2006-7-28 20:21 | 显示全部楼层

小玩笑,活跃一下紧张的学习气氛---张---驰

楼主怎么这么笨啊,都写了这么多了,你怎么还学不会啊,高手们那有那么多的时间照顾你一个人啊,我说句公道话,高手们你们写一个例子给我发过来,我看懂了再教教他。。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-28 20:43 | 显示全部楼层
楼上的我确实笨哦,你知道怎样利用上面的代码就教教我哦,我只会利用现成的

TA的精华主题

TA的得分主题

发表于 2006-7-29 09:15 | 显示全部楼层
QUOTE:
以下是引用zyz995462在2006-7-28 20:43:04的发言:
楼上的我确实笨哦,你知道怎样利用上面的代码就教教我哦,我只会利用现成的

M94Ah40k.zip (9.3 KB, 下载次数: 101)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-7-29 10:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

再次谢谢lotustower大侠热情地、无微不至地指教。也许是我这里电脑是WIN98+EXCEL2000缘故,不能顺利执行呀,请大侠看在我这个菜鸟想把问题彻底解决的份上,再次给我指点一下呀


 

[此贴子已经被作者于2006-7-29 10:36:22编辑过]

[●解决中...]请问怎样使EXCEL窗口成为顶层?

[●解决中...]请问怎样使EXCEL窗口成为顶层?

[●解决中...]请问怎样使EXCEL窗口成为顶层?

[●解决中...]请问怎样使EXCEL窗口成为顶层?
3nFWIoge.jpg

TA的精华主题

TA的得分主题

发表于 2006-7-29 10:40 | 显示全部楼层

12 楼的附件就是可以实现你的功能. 帮你搞定了还不知道,以后不再帮你了....

TA的精华主题

TA的得分主题

发表于 2006-7-29 10:41 | 显示全部楼层
可能是excel2000没有Application.hwnd属性,如果这样,那还得通过API的GetWimdows函数去获得此句柄。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 16:37 , Processed in 0.046493 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表