// HDC WINAPI BeginPaint( HWND hwnd, PAINTSTRUCT *lps ) public static int BeginPaint(int hwnd, int lps) { WinWindow win = WinWindow.get(hwnd); if (lps == 0) return 0; Caret.HideCaret(hwnd); int rgn = WinRegion.CreateRectRgn(0, 0, win.rectWindow.width(), win.rectWindow.height()); Message.SendMessageA(hwnd, WM_NCPAINT, rgn, 0); GdiObj.DeleteObject(rgn); WinDC dc = win.getDC(); if (win.invalidationRect == null) { new WinRect(0, 0, win.rectClient.width(), win.rectClient.height()).write(lps + 8); } else { dc.clipX = win.invalidationRect.left; dc.clipY = win.invalidationRect.top; dc.clipCx = win.invalidationRect.width(); dc.clipCy = win.invalidationRect.height(); win.invalidationRect.write(lps + 8); } int hdc = dc.handle; writed(lps, hdc); writed(lps + 4, Message.SendMessageA(hwnd, WM_ERASEBKGND, hdc, 0)); return readd(lps); }