윈도우 재배치 깜빡임 줄이기 - DeferWindowPos
저장소/VC++DeferWindowPos :
Updates the specified multiple-window – position structure for the specified window.
MSDN : http://msdn.microsoft.com/en-us/library/windows/desktop/ms632681(v=vs.85).aspx
원문 출처 : http://blog.naver.com/lcsco/120051320123
여러개의 윈도우 위치(multiple-window-position)를 위한 메모리를 할당하고 구조체에 Handle을 리턴한다.
여러개의 윈도우를 재배치 할때는 화면의 껌뻑임을 줄이기 위해 DeferWindowPos 함수를 사용한다.
사용방법은 메모리를 할당 한 후 사용하고 해제한다.
1.BeginDeferWindowPos(메모리 할당)
HDWP BeginDeferWindowPos(
int nNumWindows // number of windows
);
여러개의 윈도우 위치(multiple-window-position)를 위한 메모리를 할당하고 구조체에 Handle을 리턴한다.
2.DeferWindowPos
HDWP DeferWindowPos(
HDWP hWinPosInfo, // handle to internal structure
HWND hWnd, // handle to window to position
HWND hWndInsertAfter, // placement-order handle
int x, // horizontal position
int y, // vertical position
int cx, // width
int cy, // height
UINT uFlags // window-positioning flags
);
열거된 여러개의 윈도우 위치(multiple-window-position)를 업데이트한다.
업데이트된 구조체의 핸들을 리턴한다.hWinPosInfo : 한개이상의 윈도우에 대한 크기, 위치정보를 포함한 multiple-window-position 구조체 핸들
이 구조체는 비공개 구조체로 BeginDeferWindowPos에 의해 리턴되거나 최근에 콜한 DeferWindowPos에 의해 리턴된다.
hWnd : handle to window to position
hWndInsertAfter : placement-order handle(SetWindowPos 참조)
x,y : 위치
cx, cy : 크기
uFlag : window-positioning flags(SetWindowPos 참조)
리턴값 : 업데이트된 구조체
3.EndDeferWindowPos(메모리 해제 및 변경)
BOOL EndDeferWindowPos(
HDWP hWinPosInfo // handle to internal structure
);한번의 리플레쉬로 한개이상의 윈도우의 위치,사이즈를 동시에 변경한다.
[출처] DeferWindowPos|작성자 길상
'저장소 > VC++' 카테고리의 다른 글
SHFileOperation API (RemoveDirectory API 대체 사용) (0) | 2014.04.30 |
---|---|
SQLite - insert or replace (upsert) (0) | 2014.04.29 |
How to use VC_EXTRALEAN and WIN32_LEAN_AND_MEAN to enhance the build process in Visual C++ (0) | 2013.11.19 |
PSAPI 사용 주의 (0) | 2013.11.19 |
Aasynchronous WinHTTP (0) | 2013.10.31 |