내용 설명
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)의 최소화, 최대화 메뉴 표시가 비활성화로 변경 됨


