精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >VB中讓窗體始終處于最前面 創(chuàng)建者:webmaster 更新時(shí)間:2005-05-18 00:01

    我們先來看看SetWindowPos函數(shù)的定義和參數(shù):

       使用API函數(shù)之前必須先在程序中聲明如下:

    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

       其中各參數(shù)的意義如下:

    參數(shù) 意義
    hwnd Long 欲定位的窗口
    hWndInsertAfter Long 窗口句柄。在窗口列表中,窗口hwnd會(huì)置于這個(gè)窗口句柄的后面
    x,y Long 窗口新的x,y坐標(biāo)
    cx,cy Long 指定新的窗口寬度和高度
    wFlags Long 包含了旗標(biāo)的一個(gè)整數(shù),是下列之一
    返回值 Long 非零表示成功,零表示失敗

       下面是部分wFlags參數(shù)和它們的意義:

    參數(shù) 意義和使用方法
    SWP_DRAWFRAME 圍繞窗口畫一個(gè)框
    SWP_HIDEWINDOW 隱藏窗口
    SWP_NOACTIVATE 不激活窗口
    SWP_NOMOVE 保持當(dāng)前位置 (x和y設(shè)定將被忽略) &H2
    SWP_NOREDRAW 窗口不自動(dòng)重畫
    SWP_NOSIZE 保持當(dāng)前大小 (cx和cy會(huì)被忽略) &H1
    SWP_NOZORDER 保持窗口在列表的當(dāng)前位置 (hWndInsertAfter將被忽略)
    SWP_SHOWWINDOW 顯示窗口 &H40
    SWP_FRAMECHANGED 強(qiáng)迫一條WM_NCCALCSIZE消息進(jìn)入窗口,即使窗口的大小沒有改變

       函數(shù)的使用很簡(jiǎn)單,我們只須在Form_Load中加入如下語(yǔ)句即可:

    retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX, Me.CurrentY, 300, 300, SWP_SHOWWINDOW)

       這樣窗體就能保持在所有窗體的前面了。

       為了學(xué)習(xí)方便,下面提供了源碼:

    注釋:-------------------------------------------
    注釋: 讓一個(gè)窗體總是處于最前的例子
    注釋:-------------------------------------------
    注釋:程序說明:
    注釋:本例應(yīng)用SetWindowPos函數(shù),設(shè)置窗體的顯示屬性
    注釋:來實(shí)現(xiàn)讓一個(gè)窗體總是處于其他窗體的前面而不會(huì)
    注釋:被其他窗體所遮住。
    注釋:-------------------------------------------
    Option Explicit

    注釋:【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

    注釋:【說明】
    注釋: 這個(gè)函數(shù)能為窗口指定一個(gè)新位置和狀態(tài)。它也可改變窗口在內(nèi)部窗口列表中的位置。該函數(shù)與DeferWindowPos函數(shù)相似,只是它的作用是立即表現(xiàn)出來的(在vb里使用:針對(duì)vb窗體,如它們?cè)趙in32下屏蔽或最小化,則需重設(shè)最頂部狀態(tài)。如有必要,請(qǐng)用一個(gè)子類處理模塊來重設(shè)最頂部狀態(tài)

    注釋:【返回值】
    注釋: Long,非零表示成功,零表示失敗。會(huì)設(shè)置GetLastError

    注釋:【備注】
    注釋: 窗口成為最頂級(jí)窗口后,它下屬的所有窗口也會(huì)進(jìn)入最頂級(jí)。一旦將其設(shè)為非最頂級(jí),則它的所有下屬和物主窗口也會(huì)轉(zhuǎn)為非最頂級(jí)。Z序列用垂直于屏幕的一根假想Z軸量化這種從頂部到底部排列的窗口順序

    注釋:【參數(shù)表】
    注釋: hwnd ----------- Long,欲定位的窗口

    注釋: hWndInsertAfter - Long,窗口句柄。在窗口列表中,窗口hwnd會(huì)置于這個(gè)窗口句柄的后面。也可能選用下述值之一:
    注釋: HWND_BOTTOM 將窗口置于窗口列表底部
    注釋: HWND_TOP 將窗口置于Z序列的頂部;Z序列代表在分級(jí)結(jié)構(gòu)中,窗口針對(duì)一個(gè)給定級(jí)別的窗口顯示的順序
    注釋: HWND_TOPMOST 將窗口置于列表頂部,并位于任何最頂部窗口的前面 -1
    注釋: HWND_NOTOPMOST 將窗口置于列表頂部,并位于任何最頂部窗口的后面 -2

    注釋: x -------------- Long,窗口新的x坐標(biāo)。如hwnd是一個(gè)子窗口,則x用父窗口的客戶區(qū)坐標(biāo)表示

    注釋: y -------------- Long,窗口新的y坐標(biāo)。如hwnd是一個(gè)子窗口,則y用父窗口的客戶區(qū)坐標(biāo)表示

    注釋: cx ------------- Long,指定新的窗口寬度

    注釋: cy ------------- Long,指定新的窗口高度

    注釋: wFlags --------- Long,包含了旗標(biāo)的一個(gè)整數(shù),是下列之一:
    注釋: SWP_DRAWFRAME 圍繞窗口畫一個(gè)框
    注釋: SWP_HIDEWINDOW 隱藏窗口
    注釋: SWP_NOACTIVATE 不激活窗口 &H10
    注釋: SWP_NOMOVE 保持當(dāng)前位置 (x和y設(shè)定將被忽略) &H2
    注釋: SWP_NOREDRAW 窗口不自動(dòng)重畫
    注釋: SWP_NOSIZE 保持當(dāng)前大小 (cx和cy會(huì)被忽略) &H1
    注釋: SWP_NOZORDER 保持窗口在列表的當(dāng)前位置 (hWndInsertAfter將被忽略)
    注釋: SWP_SHOWWINDOW 顯示窗口 &H40
    注釋: SWP_FRAMECHANGED 強(qiáng)迫一條WM_NCCALCSIZE消息進(jìn)入窗口,即使窗口的大小沒有改變
    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
      Const HWND_TOPMOST = -1
      Const SWP_SHOWWINDOW = &H40
      Private Sub Form_load()
       Dim retValue As Long
       注釋:將窗體設(shè)置為處于所有窗口的頂層,注意在 VB 中運(yùn)行時(shí),
       '可能不行,但編譯成EXE后就可以了
       retValue = SetWindowPos(Me.hwnd, HWND_TOPMOST, Me.CurrentX,
            Me.CurrentY, 300, 300, SWP_SHOWWINDOW)
    End Sub
    相關(guān)文章
    本頁(yè)查看次數(shù):