본문 바로가기
개발언어/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

위로 가기