(VBA)Access 최대화 최소화 아이콘 삭제하기

내용 설명

Access로 GUI의 폼 프로그램을 제작하는 과정에서 완성된 프로그램의 Window 크기를 사용자가 최소화, 최대화 할 수 없게 하는 방법에 대해 정리 하였습니다.

[1] (1)의 최소화, 최대화 아이콘을 비표시로 변경하기

[2] (2)의 타이틀 영역을 마우스 오른쪽 버튼 클릭 했을 때 표시되는 서브 메뉴 중에서 (3)의 최소화, 최대화 서브 메뉴 표시를 비활성화 하기

[3] (4)의 아이콘을 클릭 했을 때 표시되는 서브 메뉴 중에서 (5)의 최소화, 최대화 메뉴 표시를 비활성화 하기

변경 방법

폼 화면을 실행 할 때 가장 먼저 실행되는 Form_Load 또는Form_Open 프로시저의 선두에 최소화, 최대화 아이콘 및 서브 메뉴를 비활성화 하는 코드를 작성합니다.

.accdb 또는 .mdb 확장자의 Access프로그램을 실행할 때 가장 먼저 열리는 폼을 지정하기 글은 다음을 참조하세요.

Access를 기동할 때 선택한 폼을 기본 폼으로 열기
샘플 순서Access 파일을 작성할 때 두 개 이상의 폼을 만들어 표시하려면 어떤 폼을 기본 폼으로 표시할지 결정해야 합니다., , 의 3개의 폼을 작성합니다. 메뉴를 선택합니다. 화면 왼쪽 메뉴의 를 선택 오른쪽 ...

코딩 예(Access2013 64bit에서 동작 확인)

Option Compare Database
 Option Explicit
 Private Declare PtrSafe Function GetWindowLong Lib "user32" _
         Alias "GetWindowLongA" _
         (ByVal hWnd As LongPtr _
        , ByVal nIndex As Long) As LongPtr
 Private Declare PtrSafe Function SetWindowLong Lib "user32" _
         Alias "SetWindowLongA" _
         (ByVal hWnd As LongPtr _
         , ByVal nIndex As Long _
         , ByVal dwNewLong As LongPtr) As LongPtr
 Private Const GWL_STYLE = -16
 Private Const WS_MIN_WINDOW = &H20000  '최소화 버튼
 Private Const WS_MAX_WINDOW = &H10000  '최대화 버튼
 Public Sub DiableWindowResize()
   Dim lngAccesshWnd As LongPtr
   'Application.hWndAccessApp <- Access의 윈도우 핸들취득
   '현재값 취득
   lngAccesshWnd = GetWindowLong(Application.hWndAccessApp, GWL_STYLE)
 '현재값에서 최소화 버튼 Disable
   lngAccesshWnd = lngAccesshWnd And Not WS_MIN_WINDOW
   '현재값에서 최대화 버튼 Disable
   lngAccesshWnd = lngAccesshWnd And Not WS_MAX_WINDOW
 '변경값 재 설정
   SetWindowLong Application.hWndAccessApp, GWL_STYLE, lngAccesshWnd
 End Sub
 Private Sub Form_Open(Cancel As Integer)
   DiableWindowResize
   DoCmd.ShowToolbar "Ribbon", acToolbarNo
 End Sub

코딩 예(Access2013 32bit에서 동작 확인)

Option Compare Database
 Option Explicit
 Private Declare Function GetWindowLong Lib "user32" _
         Alias "GetWindowLongA" _
         (ByVal hWnd As Long _
        , ByVal nIndex As Long) As Long
 Private Declare Function SetWindowLong Lib "user32" _
         Alias "SetWindowLongA" _
         (ByVal hWnd As Long _
         , ByVal nIndex As Long _
         , ByVal dwNewLong As Long) As Long
 Private Const GWL_STYLE = -16
 Private Const WS_MIN_WINDOW = &H20000  '최소화 버튼
 Private Const WS_MAX_WINDOW = &H10000  '최대화 버튼
 Public Sub DiableWindowResize()
   Dim lngAccesshWnd As LongPtr
   'Application.hWndAccessApp <- Access의 윈도우 핸들취득
   '현재값 취득
   lngAccesshWnd = GetWindowLong(Application.hWndAccessApp, GWL_STYLE)
 '현재값에서 최소화 버튼 Disable
   lngAccesshWnd = lngAccesshWnd And Not WS_MIN_WINDOW
   '현재값에서 최대화 버튼 Disable
   lngAccesshWnd = lngAccesshWnd And Not WS_MAX_WINDOW
 '변경값 재 설정
   SetWindowLong Application.hWndAccessApp, GWL_STYLE, lngAccesshWnd
 End Sub
 Private Sub Form_Open(Cancel As Integer)
   DiableWindowResize
   DoCmd.ShowToolbar "Ribbon", acToolbarNo
 End Sub

DoCmd.ShowToolbar “Ribbon”, acToolbarNo에 대해서는 다음 글을 참조 하세요.

(VBA)Access 폼 화면을 실행 할 때 기본으로 메뉴 비표시를 하는 방법
프로시저 설정폼 화면을 실행 할 때 가장 먼저 실행되는 Form_Load 또는 Form_Open 프로시저의 선두에 DoCmd.ShowToolbar"Ribbon",acToolbarNo 문을 넣어두면 메뉴 툴바가 없는 ...

변경 후 실행 결과

[1] (1)의 최소화, 최대화 아이콘이 비표시로 변경 됨

[2] (2)의 타이틀 영역을 마우스 오른쪽 버튼 클릭 했을 때 표시되는 서브 메뉴 중에서 (3)의 최소화, 최대화 서브 메뉴 표시가 비활성화로 변경 됨

[3] (4)의 아이콘을 클릭 했을 때 표시되는 서브 메뉴 중에서 (5)의 최소화, 최대화 메뉴 표시가 비활성화로 변경 됨

제목과 URL을 복사했습니다