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