본문 바로가기
개발언어/VB

항상 위에 표시되는 폼을 만드는 방법

by 엔돌슨 2008. 3. 21.
반응형

아주 간단하다.


폼이름과 모듈을 추가해서 코드만 넣으면 가능하다

나의 경우
버튼을 하나 만들고 클릭시 아래 코드를 넣었다.
Private Sub SetTopWindow_Click()
'// 항상위 설정
    Dim lR As Long

    If SetTopWindow.Caption = "항상위" Then
        SetTopWindow.Caption = "일반폼"
        lR = SetTopMostWindow(funcmngX.hwnd, False)
    Else
        SetTopWindow.Caption = "항상위"
        lR = SetTopMostWindow(funcmngX.hwnd, True)
    End If
End Sub

항상위로 설정할 폼이름은 funcmngX 이다.
클릭시 버튼의 Caption이 항상위이면 일반폼으로 글자를 설정하고
SetTopMostWindow(funcmngX.hwnd, False) 로 설정한다. (일반폼)

그반대로 설정하면
SetTopMostWindow(funcmngX.hwnd, True)로 항상위가 설정되는 것이다.




아래 기술문서 링크

항상 위에 표시되는 폼을 만드는 방법

기술 자료 ID : 184297
마지막 검토 : 2007년 12월 26일 수요일
수정 : 2.3

요약

Microsoft Visual Basic에서는 폼을 맨 위 창으로 만드는 속성이나 메서드를 제공하지 않습니다. 폼을 맨 위 창으로 만들려면 SetWindowPos Win32 API를 사용하면 됩니다.

이 문서에서는 SetWindowPos Win32 API를 사용하여 폼을 맨 위 창으로 만드는 방법을 보여 줍니다.

위로 가기

추가 정보

아래에 나와 있는 예제 코드에서는 SetTopMostWindow라는 함수를 사용합니다. SetTopMostWindow 함수는 자신에게 전달되는 두 개의 매개 변수 hwnd와 Topmost를 기반으로 창을 맨 위 창이나 일반 창으로 설정합니다.

hwnd 매개 변수는 맨 위 창이나 일반 창으로 설정할 창의 핸들을 지정합니다.

Topmost 매개 변수는 폼을 맨 위 창으로 설정할지 아니면 일반 창으로 설정할지 여부를 지정합니다. 값이 true이면 폼이 항상 맨 위에 표시되고 값이 false이면 폼이 일반 창으로 설정됩니다.

위로 가기

단계별 예제

1. 새 표준 EXE 프로젝트를 시작합니다. 기본적으로 Form1이 만들어집니다.
2. Form1에 명령 단추 두 개(Command1 및 Command2)를 추가합니다.
3. Command1의 캡션 속성을 "항상 위"로 설정합니다.
4. Command2의 캡션 속성을 "일반"으로 설정합니다.
5. Form1 선언 구역에 다음 코드를 붙여 넣습니다.
      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 키를 눌러 프로젝트를 실행합니다.
"항상 위" 명령 단추를 누르면 폼이 맨 위 창이 되고 모든 창의 맨 위에 표시됩니다. 따라서 이 창 위에는 다른 창을 놓을 수 없습니다. "일반" 단추를 누르면 폼이 정상적으로 동작합니다. 이 경우 이 창 위에 다른 창을 놓을 수 있습니다.

위로 가기

참조

자세한 내용은 Microsoft 기술 자료에서 다음 문서를 참조하십시오.
84251 (http://support.microsoft.com/kb/84251/EN-US/) Visual Basic에서 맨 위 또는 부동 창을 만드는 방법

150233 (http://support.microsoft.com/kb/150233/EN-US/) FIX: 디자인 환경에서 맨 위 창이 맨 위에 표시되지 않는다
또한 VB\Samples\CallDlls 폴더에 있는 CallDlls 예제 프로젝트를 참조할 수도 있습니다. CallDlls 예제는 폼을 맨 위 창으로 설정하는 코드를 포함하고 있으며 예제에서 실례로 보여 줍니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.

위로 가기


본 문서의 정보는 다음의 제품에 적용됩니다.
• Microsoft Visual Basic 4.0 Professional Edition
• 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
• Microsoft Visual Basic 6.0 Enterprise Edition

위로 가기

키워드:
kbhowto KB184297

위로 가기