어떤 이벤트 (WM_PAINT
메시지가 아님)에 대한 응답으로 창에서 클라이언트 영역에 텍스트를 그립니다 (그리기) 중입니다. WM_PAINT
에 대한 호출 사이의 클라이언트 영역? 나는 WM_PAINT
메시지가있을 때마다 (또는 창이 새로 고침) 윈도우가 다시 그려지고 측면의 모든 것이 더 이상 중요하지 않다는 것을 이해합니다. 나는 코드와 더 잘 의사 소통 할 수있을 것이라고 생각한다. 그래서 지금 내가 가진 것은 여기있다. 당신이 볼 수 있듯이win32에서 WM_PAINT 호출 사이에 그려진 클라이언트 영역을 유지합니다.
HDC mdc;
int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nFunsterStil)
{
LoadBitmap(...); // for skinning the app.
stuff..
}
LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
case WM_PAINT:
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);
BITMAP bm;
HDC dcSkin = CreateCompatibleDC(hdc);
GetObject(hSkinBmp, sizeof(bm), &bm);
SelectObject(dcSkin, hSkinBmp);
BitBlt(dcSkin, 0, 0, wWidth, wHeight, mdc, 0, 0, SRCCOPY);
BitBlt(hdc, 0, 0, wWidth, wHeight, dcSkin, 0, 0, SRCCOPY);
DeleteDC(dcSkin);
EndPaint(hwnd, &ps);
break;
case WM_LBUTTONDOWN;
HDC hdc = GetDC(hwnd);
mdc = CreateCompatibleDC(hdc);
LPRECT rect;
GetClientRect(hwnd, rect);
SelectObject(mdc, CreateCompatibleBitmap(hdc, rect->right, rect->bottom));
BitBlt(mdc,0,0,rect->right,rect->bottom,hdc,0,0,SRCCOPY);
HFONT hfont = CreateFont(0, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
PROOF_QUALITY, DEFAULT_PITCH | FF_SWISS , 0);
HFONT hOldFont = (HFONT)SelectObject(mdc, hfont);
SetTextColor(mdc, RGB(255,0,0));
SetBkColor(mdc, RGB(255,255,0));
TextOut(mdc, 50, 150, logintext.c_str(), strlen(logintext.c_str()));
SelectObject(mdc, hOldFont);
ReleaseDC(hwnd, hdc);
InvalidateRect(hwnd, 0, TRUE);
break;
}
, 내가 출력에 피부 클라이언트 영역의 상단에 텍스트를 마우스 버튼을 아래로 메시지가 오면 그 다음, BMP와 윈도우의 클라이언트 영역을 페인트합니다. 내가이 WM_LBUTTONDOWN
메시지에서 만든 메모리 DC를 저장하고 피부에 직류 텍스트의 직류 (WM_LBUTTONDOWN
에서 만든 메모리 DC) 먼저 윈도우 직류 페인트 위해 노력하고있는 중이 야.
은 피부 비트 맵 쇼는 그것에 생각하지만, 텍스트하지 않습니다 때문입니다.
내가 이것을 어떻게 달성합니까?
'WM_PAINT' 핸들러에게 "이봐, 칠할 때 로그인 텍스트를 그릴 수 있겠 니? 고마워."라고 말하면됩니다. –