???? ID: 184297 - ????? ???????: 03 ?????? 2010 - ??????: 4.0

???? ????? ???? ??????? ?? ????? ????? ?? ???? ??

?????? ??????This article applies to a different operating system than the one you are using. Article content that may not be relevant to you is disabled.

?? ????? ??

??? ?? ??????? ???? | ??? ?? ??????? ????

??????

??? ?? ???? topmost ????? ??????? ????? ?? ??? Microsoft Visual Basic ??? ???? ???? ??????? ?? ??????? ?? ???? ??? ??? ?? SetWindowPos Win32 API ?? ????? ?? ??? ???

?? ???? ????????? ???? ?? ?? ???? ?? ??????? topmost ????? SetWindowPos Win32 API ?? ????? ???? ??? ?? ??? ??? ??? ?????

???? ???????

???? ??? ?? ????? ??? SetTopMostWindow ??? ??? ??? ?????? ?? ????? ???? ??? ?? ?????? ?????, ?? ???? ?? ?? ????????, hwnd ?? Topmost, ??? ???? ?? ??? ???? ??? ?? ??? ??? ?? ???? topmost ????? ?? ??? ??? SetTopMostWindow ?????? ??? ?? ????? ?? ???? ???

Hwnd ???????? ?? ??????? ?? ??? ??? ?? topmost ?? ??? ??? ??? ???? ?? ??? ????? ????? ?? ????????? ???? ???

Topmost ???????? ?? ??? ??? ??????? ?? topmost ?? ??? ??? ??????? ?? ??? ???? ?? ??? ?? ???? ????????? ???? ??? ??? ???? ??, ??? ?????? ????? ???? ??? ???? ?? ??? ??????? ??? ???? ??? ??? ??? ??? ??, ?? ?????? ??? ?????? ????? ?? ??? ??? ??????? ??? ???? ???

Step-by-Step ??????

  1. ?? ?? ???? EXE ????????? ??????? ????? Form1 ???????? ??? ?? ???? ??..
  2. Form1 (Command1 ?? Command2) ?? ???? ??? ???????
  3. ?????? ??? ?? "?? ???." ???? ?? ??? Command1 ??? ????
  4. "???????." ???? ?? ??? Command2 ?? ?????? ??? ??? ????
  5. Form1 Declaration ?????? ??? ????? ??? ?? ????:
          Option Explicit
    
          Private Sub Command1_Click()
             Dim lR As Long
             lR = SetTopMostWindow(Form1.hwnd, True)
          End Sub
    
          Private Sub Command2_Click()
             Dim lR As Long
             lR = SetTopMostWindow(Form1.hwnd, False)
          End Sub
    
    					
  6. ????????? ???? ?? ?????? ???????, ????????? ?? ??? ?? ?? ??????? ??? ?????? ?? ??? ????? ?????
  7. ?? ??????? ??? ????? ??? ??????:
          Option Explicit
          Public Const SWP_NOMOVE = 2
          Public Const SWP_NOSIZE = 1
          Public Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
          Public Const HWND_TOPMOST = -1
          Public Const HWND_NOTOPMOST = -2
    
          Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos"  _
                (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
    
          Public Function SetTopMostWindow(hwnd As Long, Topmost As Boolean) _
             As Long
    
             If Topmost = True Then 'Make the window topmost
                SetTopMostWindow = SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, _
                   0, FLAGS)
             Else
                SetTopMostWindow = SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, _
                   0, 0,FLAGS)
                SetTopMostWindow = False
             End If
          End Function
    
    					

    ????? ???:, ??????? ????? ??? ??? ??? ?????? ?? ??? ??? ?? ????????? (_) ????? ??? ?? ?? ???? ?? ?????? ?? ???????? ?? ??? ????

  8. ????????? ?? ????? ?? ??? F5 ?????..
??? ???? "????? ????? ??" ???? ??? ????? ????, ???? ??????? topmost ????? ?? ???? ?? ?? ???????? ????? ?? ????? ?? ???? ??; ?? ??? ?? ??? ??? ???? ????? ???? ?? ?? ????? ??????? ??? ???? "???????" ??? ????? ????, ??????? ???? ??????? ??? ?? (?? ?? ???? ??? ?? ???? ??????? ?? ????? ?? ???)?

??????

???????? ??????? ?? ???, ????? ????? ?????? ?? Microsoft ???????? ??? ?????:
84251  (http://support.microsoft.com/kb/84251/EN-US/ ) Visual Basic ??? Topmost ?? ????????? ????? ?? ????? ?? ??? ???? ????

150233  (http://support.microsoft.com/kb/150233/EN-US/ ) BUG: Topmost ????? ???? ???? ?????? ??????? ??? ????? ??
?? ????? ?????????, CallDlls, VB\Samples\CallDlls ??????? ??? ????? ?????? CallDlls ????? ??? topmost ????? ?? ??? ??? ???? ??????? ?? ??? ???? ?? ??? ?? ?? ????? ??? illustrated ???

???? ???? ???? ??:
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 4.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
??????: 
kbhowto kbmt KB184297 KbMthi
???? ?????? ???????????? ?????? ????????
??????????: ?? ???? ?? ???? ??????? ?? ????? ?? Microsoft ????-?????? ?????????? ?????? ?????? ???? ??? ??. Microsoft ???? ??? ????-???????? ?? ????-???????? ????? ?????? ?? ???? ???????? ???? ?? ???? ????? ????? ??? ?? ??? ?????? ?? ???? ???? ???? ??? ????? ??. ???????, ????-???????? ???? ????? ???? ???? ???? ???. ?????, ????????, ?????-???? ?? ??????? ?? ???????? ?? ???? ???, ???? ?? ??? ?????? ???? ???? ??? ????? ??? ?? ???? ??. Microsoft ??????? ??? ???? ?? ?????? ?? ??????????, ????????? ?? ??? ?????? ?? ???? ????? ?? ???? ???????? ?? ??? ???? ????? ?? ??? ????????? ???? ??. Microsoft ????-?????? ?????????? ?? ????? ?????? ?? ?? ??? ??.
?????????? ?? ??????? ????????? ??????? ??:184297  (http://support.microsoft.com/kb/184297/en-us/ )