나는 windows.h (GDI)를 사용하는 C++의 간단한 mspaint와 유사한 프로그램을 작성하고 있습니다. 필자의 프로그램에는 필기 도구 만 필요하다. 그래서, WM_PAINT 메시지에 그려 넣기 위해 메인 윈도우의 그림 (예 : 메모리 HDC와 HBITMAP)을 저장해야합니다.MSPaint 형 앱 쓰기. BitBlt를 올바르게 수행하는 방법?
처음에 창 HDC를 내 메모리 HDC 및 HBITMAP에 저장해야합니까? 창문을 보관해야하는 메시지는 무엇입니까? 예를 들어 WM_CREATE에서는 아직 창이 없기 때문에 불가능하다고 생각합니다.
PatBlt와 BitBlt의 차이점은 무엇입니까? 내 앱에는 무엇을 사용해야합니까?
윈도우의 HDC 컨텐츠를 내 메모리 HDC 및 비트 맵에 복사하는 방법은 무엇입니까?
LPRECT lpRect; GetClientRect(hwnd, lpRect); width = lpRect->right - lpRect->left; height = lpRect->bottom - lpRect->top; HDC hDC = GetDC(hwnd); memoryDC = CreateCompatibleDC(hDC); memoryBitmap = CreateCompatibleBitmap(hDC, width, height); SelectObject(memoryDC, memoryBitmap); PatBlt(memoryDC, 0, 0, width, height, PATCOPY); ReleaseDC(hwnd, hDC);
을하지만이 작동하지 않습니다 :이 같은 것을 할 노력하고있어 프로그램이 충돌합니다.
이후에 WM_PAINT에서 창을 복원하는 방법은 무엇입니까?
흰색으로 창을 지우는 방법은 무엇입니까?
오류를 확인하는 것으로 시작합니다 (유효한 핸들이 반환됩니까?). – sehe