vb编程如何让主窗口永远放在最前面

作者&投稿:歹定 (若有异议请与网页底部的电邮联系)
如何用vb编程使自己的程序窗口显示在最顶层~

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

Private Const HWND_TOPMOST& = -1
' 将窗口置于列表顶部,并位于任何最顶部窗口的前面
Private Const SWP_NOSIZE& = &H1
' 保持窗口大小
Private Const SWP_NOMOVE& = &H2
' 保持窗口位置

Private Sub Form_Load()
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
' 将窗口设为总在最前
End Sub

Option Explicit

Private Const HWND_TOPMOST = -1
Private Const HWND_BOTTOM = 1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOZORDER = &H4
Private Const SWP_NOACTIVATE = &H10
Private Const SWP_SHOWWINDOW = &H40
Private Const SWP_HIDEWINDOW = &H80

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


Private Sub Command1_Click()
SetWindowPos Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE'置顶

End Sub

Private Sub Command2_Click()
SetWindowPos Me.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE'不置顶

End Sub

这个只要获取他的窗口句柄就可以了

whWnd 是 窗口句柄

SetWindowPos whWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOSIZE Or SWP_NOMOVE'置顶

API函数SetWindowPos
'这个函数能为窗口指定一个新位置和状态。它也可改变窗口在内部窗口列表中的位置。该函数与DeferWindowPos函数相似,只是它的作用是立即表现出来的(在vb里使用:针对vb窗体,如它们在win32下屏蔽或最小化,则需重设最顶部状态。如有必要,请用一个子类处理模块来重设最顶部状态)
Public 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 ----------- Long,欲定位的窗口

'hWndInsertAfter - Long,窗口句柄。在窗口列表中,窗口hwnd会置于这个窗口句柄的后面。也可能选用下述值之一:
Public Const HWND_BOTTOM = 1 '将窗口置于窗口列表底部
Public Const HWND_TOP = 0 '将窗口置于Z序列的顶部;Z序列代表在分级结构中,窗口针对一个给定级别的窗口显示的顺序
Public Const HWND_TOPMOST = -1 '将窗口置于列表顶部,并位于任何最顶部窗口的前面
Public Const HWND_NOTOPMOST = -2 '将窗口置于列表顶部,并位于任何最顶部窗口的后面

'x -------------- Long,窗口新的x坐标。如hwnd是一个子窗口,则x用父窗口的客户区坐标表示

'y -------------- Long,窗口新的y坐标。如hwnd是一个子窗口,则y用父窗口的客户区坐标表示

'cx ------------- Long,指定新的窗口宽度

'cy ------------- Long,指定新的窗口高度

'wFlags --------- Long,包含了旗标的一个整数
Public Const SWP_FRAMECHANGED = &H20 '强迫一条WM_NCCALCSIZE消息进入窗口,即使窗口的大小没有改变
Public Const SWP_DRAWFRAME = SWP_FRAMECHANGED '围绕窗口画一个框
Public Const SWP_HIDEWINDOW = &H80 '隐藏窗口
Public Const SWP_NOACTIVATE = &H10 '不激活窗口
Public Const SWP_NOMOVE = &H2 '保持当前位置 (x和y设定将被忽略)
Public Const SWP_NOREDRAW = &H8 '窗口不自动重画
Public Const SWP_NOSIZE = &H1 '保持当前大小 (cx和cy会被忽略)
Public Const SWP_NOZORDER = &H4 '保持窗口在列表的当前位置 (hWndInsertAfter将被忽略)
Public Const SWP_SHOWWINDOW = &H40 '显示窗口
'用法示例 SetWindowPos Form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE


本人有一个问题想问,请VB编程高手帮个忙!急
可选项。AppWinStyle。从 AppWinStyle 枚举中选择的值,该枚举与要在其中运行程序的窗口样式相对应。如果省略 Style,则 Shell 使用 AppWinStyle.MinimizedFocus,这将使程序以最小化启动并具有焦点。Style 参数可以有以下设置之一:AppWinStyle.Hide 隐藏窗口并为隐藏的窗口提供焦点。AppWinStyle.Normal...

高分替兄弟求VB编程题
A)在工程资源管理器窗口中只能包含一个工程文件及属于该工程的其他文件 B)以.BAS为扩展名的文件是标准模块文件 C)窗体文件包含该窗体及其控件的属性 D)一个工程中可以含有多个标准模块文件 (3)以下叙述中错误的是 A)双击鼠标可以触发DblClick事件 B)窗体或控件的事件的名称可以由编程人员确定 C)移动鼠标时,会触...

VB编程中,怎样将字符串保存在一个文件里,然后用相应的代码去引用字符串...
在[外接程序]菜单下,点击[外接程序管理器],弹出外接程序管理器窗口,窗口左边的列表中列出了所有的外接程序,鼠标双击"VB6资源编辑器"。然后按[确定]按钮返回主窗口。此时系统弹出资源编辑器窗口,同时在主窗口的工具条上添加了快捷按钮。而在弹出的资源编辑器窗口顶部,也有一些快捷按钮中,其中靠右边...

MFC对话框编程问题
InitInstance()函数的后半部分有一段代码就是定义对话框对象并弹出对话框的,鸡啄米下面给出这段代码并加以注释:C++代码 CAdditionDlg dlg; \/\/ 定义对话框类CAdditionDlg的对象dlg m_pMainWnd = &dlg; \/\/ 将dlg设为主窗口 INT_PTR nResponse = dlg.DoModal(); \/\/ 弹出对话框dlg,并...

VB编程的问题,麻烦高手指点指点.
这种命名法的出发点是把量名变按:属性+类型+对象 描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有直观的了解,下面是HN变量命名规范,其中也有一些是我个人的偏向: 属性部分 全局变量 g_ 常量c_ c++类成员变量 m_ 静态变量 s_ 类型部分 指针p 函数fn 无效v 句柄h 长整型 l 布尔b 浮点型(...

Java编程。比如在一个面板上有两个按钮,怎么实现分别点击这两个按钮然后...
import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class Test extends JFrame{public Test(){this.setSize(400,300);this.setLocationRelativeTo(null);\/\/设置居中...

C#编程中怎么在一个窗体按下一个按钮调用另一个窗体的按钮的事件_百度...
先要得到你说的“另一个窗口”的句柄。比如A窗口有一个按钮butA,B窗口有一个按钮butB,你是想通过按butA时,调用butB的onclick事件是吧。在按下butA时候,创建一个窗口B,假如叫FormB formB = new FormB(); formB.butB.onclick();这样就可以调用了。

C#windows窗体程序编程中点击确定弹出新窗口的代码怎么写
强力推荐!楼主~这个方法可以随便点~但是只出来一个窗体!!首先你确定你有两个或两个以上的窗体。\/\/点击按钮的时候值会显示一个窗体 bool opened = false;foreach (Form f1 in Application.OpenForms){ if (f1 is Form2){ opened = true;break;} } if (!opened){ Form2 f2 = new Form2(...

请网络编程高手帮帮我的忙!帮我封闭窗口上的X!最好作个教程!
--- Private Sub Form_Unload(Cancel As Integer)Cancel = True End Sub 让窗体的关闭按钮失效 --- Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long Public Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long...

vc6.0中,一个窗口类A继承自CDialog。现在有一个窗口B,设置B的基类...
添加一般类,如上图,基类中填A即可

银州区17670625691: VB如何使窗口始终前置 -
阳显济生: 窗体总是置顶(API) 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 ...

银州区17670625691: vb中,怎么让程序界面在永远桌面的最前面 -
阳显济生: '窗体通用声明部分 Private Const MF_DISABLED = &H2 Private Const MF_BYPOSITION = &H400 Private Const HWND_TOPMOST = -1 Private Const HWND_BOTTOM = 1 Private Const HWND_NOTOPMOST = -2 Private Const SWP_NOSIZE ...

银州区17670625691: vb如何让一个窗口保持最前?
阳显济生: me.TopMost=True如果要Ctrl+Alt+Del 和win 键不响应,需要放键盘勾子吃掉消息.

银州区17670625691: 在VB中,如何使窗口总在前 -
阳显济生: 代码如下,你可以直接复制我的代码使用: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)Private Sub Form_Load()Call SetWindowPos(Me.hWnd, -1, 0, 0, 0, 0, 3)End Sub

银州区17670625691: VB中 怎么让窗体总是在最上层,不会被其他的窗体覆盖~? -
阳显济生: Dim XX As Long XX = SetWindowPos(Me.Hwnd, HWND_TOP, 0, 0, 0, 0, 3) End Sub

银州区17670625691: VB窗口始终保持最前的代码 -
阳显济生: 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 Private Sub Form_Load() ...

银州区17670625691: VB窗口始终保持最前的代码
阳显济生: 使窗口总在最前曾看到一个问题:如何使我的窗口总在最前?使用api函数 SetWindowPos 可以很容易的作到. 顾名思义, SetWindowPos 就是完成设置窗口位置和状态(pos=position)的功能.源代码如下: Option Explicit Private Declare...

银州区17670625691: 在VB中如何让窗体总在最前端显示(要求在任务管理器之前) -
阳显济生: 楼上的不行 我可以永远让窗体居前,运行资源管理器时不会被遮掩 添加一个Timer控件,将Interval属性设为100Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ...

银州区17670625691: vb如何使窗体永远在最前 -
阳显济生: 用一个定时器,每隔一定时间将窗口置前

银州区17670625691: VB 怎么实现窗口永在最前
阳显济生: 调用API函数SetWindowPos,设置窗体为TopMost就可以了. 如何让窗体总在最前面? 'API函数声明 Declare Function SetWindowPos Lib "user32" ( ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网