최상단 광고

2012년 4월 9일 월요일

윈도우의 변경 MoveWindow & SetWindowPos & DeferWindowPos &SetWindowPlacement


< 윈도우의 변경 >

- 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 uFlag);
윈도우의 위치, 크기, Z순서를 변경(바로 앞에 있을 윈도우의 핸들값을 주거나 HWND_TOP, HWND_BOTTOM..등의 값도 줄 수 있다 )할 수 있으며 크기 변경 및 이동에 몇가지 옵션(uFlag)을 줄 수 있다.
!!!!!개별 윈도우의 위치나 크기, Z순서를 바꿀때~

- 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 hWinPosInfo);
!!!!!여러개의 윈도우를 일괄 조정 한다.( 따라서 화면 깜박임이 덜하고, 재배치 속도가 빠르다.)


- BOOL SetWindowPlacement(HWND hWnd, CONST WINDOWPLACEMENT *lpwndpl);
BOOL GetWIndowPlacement(HWND hWnd, WINDOWPLACEMENT *lpwndpl);
윈도우의 위치, 크기, 최대, 최소 상태를 한꺼번에 조사 및 변경 할 수 있다.
(최대화 된 메모장을 다시 원래대로 복구해 보면, 최대화 되기 전의 노멀 좌표(자기 자신의 좌표)로 정확하게 찾아간다. 이것은 시스템이 윈도우의 노멀 좌표를 기억하고 있기 때문이다.)

댓글 없음: