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

MS-Access

내용 설명

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

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

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

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

변경 방법

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

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

눈깨비 정보창고 - 분기탱천
마우스 영역 지정 이미지 캡처를 문자 인식 및 번역하기 버튼 클릭 만으로  을 실행 해 주는 소프트웨어를 작성 했습니다. 자세한 도움말은 여기를 참조 하십시오. 웹 서비스 구축 눈깨비가 본업으로 하고 있는 기술적인 ...

코딩 예(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에 대해서는 다음 글을 참조 하세요.

눈깨비 정보창고 - 분기탱천
마우스 영역 지정 이미지 캡처를 문자 인식 및 번역하기 버튼 클릭 만으로  을 실행 해 주는 소프트웨어를 작성 했습니다. 자세한 도움말은 여기를 참조 하십시오. 웹 서비스 구축 눈깨비가 본업으로 하고 있는 기술적인 ...

변경 후 실행 결과

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

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

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

제목과 URL을 복사했습니다