# LockWindowUpdate
BOOL LockWindowUpdate(HWND hWndLock);
이 함수는 화면에 그리기를 허가/금지 할 때 사용하는 함수이다.
첫번째 인수로 그리기 금지 대상이 되는 윈도우 핸들을 넘겨주면 된다. 그리기 금지된(Locked)윈도우는 GetDC나
BeginPaint로 DC 핸들을 받을 때 가시 영역이 비어있는 DC를 발급받는다. 가시 영역이 비어있으므로 무효영역과
상관없이 클리핑 영역도 당연히 NULL이 되고 따라서 어떠한 출력도 화면으로 나갈 수 없는 상태가 된다.
그리기를 허가하려면 이 함수를 다시 한번 더 호출하되 인수로 NULL 값을 주면 된다.
락은 한번에 하나의 윈도우에만 걸 수 있다.
다른 윈도우로부터 방해 받고싶지 않다거나 깔끔한 처리를 위해서라든가 등의 이유로 반드시 필요한 경우가 있다.
# SaveDC
DC에는 여러가지 복잡한 정보들이 많이 포함되는데 현재의 DC 상태를 그대로 저장해 놓고 다음에 그 설정상태를
다시 불러 올 수 있는 함수가 제공된다.
int SaveDC(HDC hdc);
BOOL RestoreDC(HDC hdc,int nSavedDC);
SaveDC 함수는 말 그대로 지정한 DC의 모든 설정 상태를 스택에 저장해 놓는다.
그리고 일종의 저장 핸들에 해당하는 정수값 하나를 리턴하고 이렇게 저장된 DC 상태는 언제든지 RestoreDC로
불러 올 수 있다. RestoreDC 함수의 첫번째 인수로 DC의 핸들을 주고 두번째 인수로 SaveDC함수가 리턴한
정수값을 지정한다.
# CreateDC
윈도우와 관련된 DC는 GetDC 등의 함수로 구해 사용하지만 다음 함수를 사용하면 DC를 만들 수도 있다.
HDC CreateDC(LPCWSTR pwszDriver,LPCWSTR pwszDevice,LPCWSTR pszPort, CONST DEVMODE * pdm);
이 함수는 주로 프린터 DC를 만들 때 사용하는데 화면 DC를 만들 때도 쓸 수 있다.
이 함수로 전체 화면에 대한 DC를 구하면 윈도우 내부뿐만 아니라 화면상의 어디에나 출력을 할 수 있어 여러가지
재미있는 효과를 낼 수 있다.
[현재 모니터의 전체화면을 비트맵으로 떠놓고 이 비트맵을 움직이는 예제]
#include <windows.h>
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdParam,int nCmdShow)
{
HDC hdc,hMemDC;
HBITMAP MyBitmap;
int x,y;
int sx=GetSystemMetrics(SM_CXSCREEN);
int sy=GetSystemMetrics(SM_CYSCREEN);
hdc=CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
hMemDC=CreateCompatibleDC(hdc);
MyBitmap=CreateCompatibleBitmap(hdc,sx,sy);
SelectObject(hMemDC,MyBitmap);
BitBlt(hMemDC,0,0,sx,sy,hdc,0,0,SRCCOPY);
for(y=sy;y>=0;y-=10)
{
BitBlt(hdc,0,y,sx,sy,hMemDC,0,0,SRCCOPY);
Sleep(10);
}
for(x=sx;x>=0;x-=10)
{
BitBlt(hdc,x,0,sx,sy,hMemDC,0,0,SRCCOPY);
Sleep(10);
}
BitBlt(hdc,0,0,sx,sy,hMemDC,0,0,SRCCOPY);
DeleteDC(hMemDC);
DeleteDC(hdc);
DeleteObject(MyBitmap);
return0;
}
'프로그래밍 > API' 카테고리의 다른 글
API :: 대화상자(2) 공통 대화상자(파일,색상,폰트,찾기) (0) | 2010.06.26 |
---|---|
API :: 대화상자(1) 파라미터,대화상자 메시지 (0) | 2010.06.26 |
API :: 그리기(3) 그리기메시지,GetDC,정보의 보관 (0) | 2010.06.19 |
API :: 그리기(2) WM_PAINT 메시지 (1) | 2010.06.19 |
API :: 그리기(1) DC(Device Context)의 종류,구조 (1) | 2010.06.18 |