# Sorry ! 漏掉了一点东东

Posted by Honey on August 10, 1998 at 18:33:30:

In Reply to: Re: 如何使表单常驻视窗的最上层？及设定程式的热键？ posted by Honey on August 09, 1998 at 18:23:40:

sorry !!!
Form_Activate()
事件中应该这样写
我漏掉了最重要的一行
别介意哦!!
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const HWND_TOPMOST = -1
Dim wFlags As Integer
Dim result As Integer
Dim x As Integer
x = Screen.ActiveForm.hwnd
wFlags = SWP_NOMOVE Or SWP_NOSIZE
Call SetWindowPos(x, HWND_TOPMOST, _
0, 0, 0, 0, wFlags)

: 浮动式视窗得使用 API 中的SetWindowPos函式
: 首先通常是在一般宣告部分这样宣告 若在模组
: 中宣告得去掉Private

: Private Declare Function SetWindowPos _
: Lib "user32" (ByVal hwnd As Long, _
: ByVal hWndInsertAfter As Long, _
: ByVal x As Long, ByVal y As Long, _
: ByVal cx As Long, ByVal cy As Long, _
: ByVal wFlags As Long) As Long
: ' hwnd 代表要放置视窗的hWnd,

: ' hWndInsertAfter 是常数 若常数可为 _
: HWND_BOTTOM : 放在最底层 _
: HWND_TOP : 放在最顶层 _
: HWND_TOPMOST : 放在最顶层 且高于其他视窗 _
: HWND_NOTOPMOST : 放在最底层 且高于其他视窗 _
: 常数所代表的值 请查阅 API检视员

: ' X 代表新视窗的新 X 轴座标

: ' Y 代表新视窗的新 Y 轴座标

: ' wFlags 旗标可重复使用 用 or 连接 _
: 可为下列常数 _
: SWP_DRAWFRAME : 在视窗周围画一框架 _
: SWP_HIDEWINDOW : 隐藏视窗 _
: SWP_NOACTIVE : 不启动(active)视窗 _
: SWP_NOMOVE : 保留目前位置 _
: SWP_NOREDRAW : 不重画视窗 _
: SWP_NOSIZE : 保留目前大小 _
: SWP_NOZORDER : 保留目前位置 _
: SWP_SHOWWINDOW : 显示视窗 _
: 常数所代表的值 请查阅 API检视员
: 之后再 Form_Activate()事件中加入以下
: 程式码就好了

: Const SWP_NOMOVE = &H2
: Const SWP_NOSIZE = &H1
: Const HWND_TOPMOST = -1
: Dim wFlags As Integer
: Dim result As Integer
: Dim x As Integer
: x = Screen.ActiveForm.hwnd
: wFlags = SWP_NOMOVE Or SWP_NOSIZE

: 关于热键 我想可能只有在程式长驻时
: 才可以办到
: : 1.在 window 中如何使表单常驻在最上层呢？即使表单
: : 失去驻点也不会被其它的程式覆盖？

: : 2.是否有什么办法设定程式的热键？例如不管那个视
: : 窗是使用中的视窗,只要按下【Ctrl + O + K】就可
: : 以叫出程式来,还是说程式要随 window 起动并在背
: : 景常驻才可办到？

Follow Ups:

- 参数 Honey 18:56:50 8/11/98 (0)
- 【谢谢 Honey 和 笑儿】 ^_^... 小顺子 02:21:31 8/11/98 (0)