Win32 Window관리 함수들
- -
BOOL DestroyWindow(HWND hWnd);
윈도우를 파괴
BOOL CloseWindow(HWND hWnd);
윈도우를 최소화
BOOL GetWindowRect(HWND hWnd, LPRECT lpRect);
윈도우의 위치와 좌표
BOOL GetClientRect(HWND hWnd, LPRECT lpRect);
대상 윈도우의 작업영역의 크기를 구함
BOOL MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight,
BOOL bRepaint);
윈도우의 위치와 크기를 동시에 변경하는 기본적인 함수
BOOL SetWindowPos(HWND hWnd, HWND hWndInsertAfter,
int X, int Y, int cx, int cy, UINT uFlags);
크기 변경및 이동, Z순서를 주고 몇가지 옵션을 줄수 있음
hWndInsertAfter에는 어느 윈도우 다음에 배치할가 인데 아래의 옵션을 줄수도 있다
HWND_TOP (Z순서의 제일 위에 배치
HWND_BOTTOM (Z순서의 바닥에 윈도우를 배치
HWND_TOPMOST 탑 모스트 윈도우로 설정
HWND_NOTOPMOST 탑 모스트 윈도우 설정을 취소
uFlags 값들
SWP_NOSIZE 크기 변경하지 않음
SWP_NOMOVE 위치 변경하지 않음
SWP_NOZORDER 현재의 Z순서를 유지
SWP_SHOWWINDOW 윈도우를 보임
SWP_HIDEWINDOW 윈도우를 숨김
SWP_NOACTIVE 크기 변경후 윈도우를 활성화 하지 않음
HDWP BeginDeferWindowPos(int nNumWindows);
복수 윈도우의 크기와 위치를 저장하기 위한 메모리 할당
HDWP DeferWindowPos(HDWP hWinPosInfo, HWND hWnd, HWND hWndInsertAfter,
int x, int y, int cx, int cy, UINT uFlags);
윈도우의 배치 상태를 배열에 기록
BOOL EndDeferWindowPos(HDWP hWindPosInfo);
이렇게 만들어진 정보대로 윈도우를 일괄 재배치
BOOL GetWindowPlacement(HWND hWnd, WINDOWPLACEMENT* lpwndpl);
BOOL SetWindowPlacement(HWND hWnd, CONST WINDOWPLACEMENT* lpwndpl);
윈도우의 위치, 크기, 최대, 최소화 상태를 한꺼번에 조사하고 변경
lpwndpl구조체
lenght
flags
showCmd;
ptMinPosition
ptMaxPosition
RECT rcNormalPosition
BOOL ScreenToClient(HWND hWnd, LPPOINT lpPoint);
화면좌표를 작업영역 좌표로
BOOL ClientToScreen(HWND hWnd, LPPOINT lpPoint);
작업영역 좌표를 화면좌표로
int MapWindowPoints(HWND hWndFrom, HWND hWndTo, LPPOINT lpPoints,
UINT cPoints);
특정 윈도우를 기준으로 한 좌표들을 다른 윈도우를 기준으로 한 좌표로 변환
BOOL AdjustWindowRect(LPRECT lpRect, DWORD dwStyle, BOOL bMenu);
BOOL AdjustWindowRectEx(LPRECT lpRect, DWORD dwStyle, BOOL bMenu,
DWORD dwExstyle);
원하는 작업영역 크기에 맞는 윈도우 크기를 계산
int GetWindowText(HWND hWnd, LPTSTR lpString, int nMaxCount);
BOOL SetWindowText(HWND hWnd, LPCTSTR lpString);
int GetWindowTextLength(HWND hWnd);
윈도우의 타이틀 바에 나타나는 캡션 문자열을 조사 변경
BOOL EnableWindow(HWND hWnd, BOOL bEnable);
윈도우 사용 금지, 허가
BOOL ShowWindow(HWND hWnd, int nCmdShow);
윈도우를 보이기, 숨기기
BOOL SetForegroundWindow(HWND hWnd);
HWND GetForegroundWindow(void);
이 윈도우가 속한 스레드를 포그라운드 상태로하고 메인 윈도우를 활성화
HWND SetActiveWindow(HWND hWnd);
HWND GEtActiveWindow(void);
같은 스레드내의 윈도우에 대해서 활성화 윈도우를 변경
HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName);
최상위 윈도우들중 조건에 맞는 윈도우를 검색, 이름이나 캡션을 조건으로
HWND WindowFromPoint(POINT Point);
Point 화면 좌표 아래에 있는 윈도우를 조사해서 그 핸들을 리턴
HWND ChildWindowFromPonit(HWND hWndParent, POINT Point);
HWND ChildWindowFromPointEx(HWND hWndParent, POINT Point, UINT uFlags);
부모 윈도우내의 좌표로 차일드 윈도우를 검색
BOOL EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam);
현재 실행 중인 모든 최상위 윈도우들을 열거하여 첫번째 인수로 지정된 콜백함수를 호출
BOOL EnumChildWindow(HWND hWndParent, WNDENUMPROC lpEnumFunc,
LPARAM lParam);
BOOL EnumThreadWindow(DWORD dwThreadid, WNDENUMPROC lpfn,
LPARAM lParam);
특정 부모 윈도우의 차일드, 특정 스레드에 속한 윈도우 목록 조사
WM_SIZE메시지 발생시 wParam에 들어 오는 값
SIZE_MAXHIDE 다른 윈도우가 최대화 되었을 때 모든 팝업 윈도우로 전달
SIZE_MAXIMIZED 최대화
SIZE_MAXSHOW 다른 윈도우가 복구 되었을때 모든 팝업 윈도우로 전달
SIZE_MINIMIZED 최소화
SIZE_RESTORED 최대,최소화가 아닌 크기 변경
WM_WINDOWPOSCHANGING
윈도우가 이동중일때 발생하는 메시지
WM_WINDOWPOSCHANGED
윈도우가 이동 완료후 발생하는 메시지
WM_ACTIVATEAPP
응용프로그램이 활성화 되거나 비 활성화 될때 보내지는 메시지
WM_NCACTIVE
비 작업영역의 활성화 상태가 변경될때 보내지는 메시지
WM_ACTIVE
활성화 상태가 변경되는 개별윈도우에게 보내지는 메시지
WM_ACTIVE의 wParam의 하위 워드
WA_INACTIVE 윈도우가 비활성화
WA_CLICKACTIVE 마우스 클릭에 의해 윈도우가 활성화
WA_ACTIVE 마우스 클릭 이외의 방법으로 윈도우가 활성화
WM_SHOWWINDOW
윈도우가 보여지거나 숨겨지기 직전에 보내지는 메시지
lParam 값(이유)
0 (ShowWindow 함수에 의해 발생함
SW_OTHERUNZOOM 가려졌던 부분이 드러남
SW_OTHERZOOM 이 윈도우가 가려짐
SW_PARENTCLOSING 소유자 윈도우라 최소화
SW_PARENTOPENING 소유자 윈도우가 복구
WM_NCHITTEST
마우스 커서 위치가 윈도우의 어떤 부분인지 조사할때 사용하는 메시지
리턴 값
HTBBORDER 크기 조절이 불가능한 경계선
HTBOTTOM 아래쪽 경계선
HTTOP 위쪽 경계선
HTBOTTOMLEFT 아래 왼쪽 경계선
HTBOTTOMRIGHT 아래 오른쪽 경계선
HTTOPLEFT 위 왼쪽 경계선
HTTOPRIHGT 위 오른쪽 경계선
HTLEFT 왼쪽 경계선
HTRIGHT 오른쪽 경계선
HTCAPTION 타이틀바
HTCLIENT 작업영역
HTCLOSE 닫기 버튼
HTSIZE 크기 변경 박스
HTHELP 도움말 버튼
HTHSCROLL 수평 스크롤바
HTVSCROLL 수직 스크롤바
HTMENU 메뉴
HTMAXBUTTON 최대화 버튼
HTMINBUTTON 최소화 버튼
HTSYSMENU 시스템 메뉴
HTTRANSPARENT 같은 스레드의 다른 윈도우에 가려진 부분
int SetWindowRgn(HWND hWnd, HRGN hRgn, BOOL bRedraw);
불규칙한 모양의 윈도우를 만들기 위해 리전을 설정
hRgn모양 설정, bRedraw윈도우 리전 설정후 다시 그릴것인가(TRUE하면댐)
BOOL SetLayeredWindowAttributes(HWND hWnd, COLORREF crKey,
BYTE bAlpha, DWORD dwFlags);
윈도우의 투명및 반투명 속성지정, crKey는 투명색으로 처리할 색상
bAlpha는 윈도울 전체의 반투명도(0이면 완전투명 255 불투명)
dwFlags 두효과중 효과적용(LWA_COLORKEY는 투명 색상, LWA_ALPHA는 반투명도)
BOOL AnimateWindow(HWND hWnd, DWORD dwTime, DWORD dwFlags);
윈도우에 애니메이션 적용
dwFlags는 애니메이션 종류와 방법
AW_SLIDE, AW_BLEND, AW_CENTER 등
'DEV > C++' 카테고리의 다른 글
[MFC] Static Control 배경 투명화 (0) | 2021.07.07 |
---|---|
[MFC]Dialog UPDATE_COMMAND_UI 안먹는 문제 (0) | 2021.07.05 |
[MFC] CheckBox, RadioButton 체크 옵션 (0) | 2021.07.05 |
fatal error C1073:증분컴파일과 관련된 내부오류 (0) | 2021.06.25 |
MFC 클래스 명 입력 후 DOMODAL 오류 (0) | 2021.06.24 |
Thank you for sympathizing.