현재 비공개로 설정된 예전 글을 보려면 …
  1. 2010/01/02 VB.NET에서 최상위 폼 구현하기


최상위 폼은 프로그램의 내용을 사용자에게 효과적으로 보여줄 수 있습니다. 예를 들어 여러분이 지금 윈도우즈를 쓰시고 계시다면 바로 밑의 작업표시줄이나 작업관리자도 최상위 폼을 사용한 프로그램의 하나라고 할 수가 있겠네요. 그러나 최상위 폼을 VB 6에서 구현 하려면 아래와 같이 API를 호출해야 되었습니다.
 
VB 6에서의 최상위 폼 구현
Option Explicit
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

Sub FAOT(F As Form, OnTop As Boolean) ' FAOT=Form Always On Top
'hwndInsertAfter values
Const HWND_TOP = 0
Const HWND_BOTTOM = 1
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2

'wFlags values
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOZORDER = &H4
Const SWP_NOREDRAW = &H8
Const SWP_NOACTIVATE = &H10
Const SWP_FRAMECHANGED = &H20 'The frame changed: send WM_NCCALCSIZE
Const SWP_SHOWWINDOW = &H40
Const SWP_HIDEWINDOW = &H80
Const SWP_NOCOPYBITS = &H100
Const SWP_NOOWNERZORDER = &H200 'Don't do owner Z ordering
Const SWP_DRAWFRAME = SWP_FRAMECHANGED
Const SWP_NOREPOSITION = SWP_NOOWNERZORDER

If OnTop = True Then
'Turn on the TopMost attribute.
SetWindowPos F.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
ElseIf OnTop = False Then
'Turn off the TopMost attribute.
SetWindowPos F.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOSIZE Or SWP_NOMOVE
End If
End Sub
를 모듈로 선언하고 최상위화 시킬 폼의 로드 부분에
FAOT Me, True
를 써주면 된다.

그러나 VB.NET에선 최상위 폼을 아래와 같이 간편히 지정해줄 수가 있습니다.

VB.NET에서의 최상위 폼 구현

최상위할 폼의 로드 부분에
Me.TopMost = true
를 써주거나 해당 폼의 디자이너에서 속성의 TopMost를 True로 바꿔주면 된다.

이렇게 VB.NET에선 간편하면서도 강력한 프로그래밍을 할 수가 있습니다. 비주얼 스튜디오의 도움말을 보시면 이 외에도 VB6 사용자를 위한 도움말이 많이 준비되어 있습니다. 다음은 VB.NET에서 레지스트리에 접근하는 법을 알아보겠습니다.