better rendering

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@99 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-10-01 06:47:08 +00:00
parent 5855f9548f
commit a8baf36477
2 changed files with 22 additions and 15 deletions

View File

@@ -17,7 +17,7 @@ struct _MwLL {
HWND hWnd;
HDC hDC;
void* user;
int copy_buffer;
int copy_buffer;
MwLLHandler handler;
};

View File

@@ -17,23 +17,29 @@ static LRESULT CALLBACK wndproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) {
HBITMAP hbmp;
HDC dc, hbdc;
GetClientRect(hWnd, &rc);
if(u->ll->copy_buffer) {
GetClientRect(hWnd, &rc);
dc = GetDC(hWnd);
hbmp = CreateCompatibleBitmap(dc, rc.right - rc.left, rc.bottom - rc.top);
hbdc = CreateCompatibleDC(dc);
SelectObject(hbdc, hbmp);
ReleaseDC(hWnd, dc);
dc = GetDC(hWnd);
hbmp = CreateCompatibleBitmap(dc, rc.right - rc.left, rc.bottom - rc.top);
hbdc = CreateCompatibleDC(dc);
SelectObject(hbdc, hbmp);
ReleaseDC(hWnd, dc);
u->ll->hDC = hbdc;
MwLLDispatch(u->ll, draw);
u->ll->hDC = hbdc;
MwLLDispatch(u->ll, draw);
dc = BeginPaint(hWnd, &ps);
StretchBlt(dc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hbdc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SRCCOPY);
EndPaint(hWnd, &ps);
dc = BeginPaint(hWnd, &ps);
StretchBlt(dc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, hbdc, 0, 0, rc.right - rc.left, rc.bottom - rc.top, SRCCOPY);
EndPaint(hWnd, &ps);
DeleteDC(hbdc);
DeleteObject(hbmp);
DeleteDC(hbdc);
DeleteObject(hbmp);
} else {
u->ll->hDC = BeginPaint(hWnd, &ps);
MwLLDispatch(u->ll, draw);
EndPaint(hWnd, &ps);
}
} else if(msg == WM_LBUTTONDOWN) {
SetCapture(hWnd);
MwLLDispatch(u->ll, down);
@@ -82,7 +88,8 @@ MwLL MwLLCreate(MwLL parent, int x, int y, int width, int height) {
RegisterClassEx(&wc);
r->hWnd = CreateWindow(parent == NULL ? "milsko" : "STATIC", "Milsko", parent == NULL ? (WS_OVERLAPPEDWINDOW) : (WS_CHILD | WS_VISIBLE), x, y, width, height, parent == NULL ? NULL : parent->hWnd, 0, wc.hInstance, NULL);
r->copy_buffer = 1;
r->hWnd = CreateWindow(parent == NULL ? "milsko" : "STATIC", "Milsko", parent == NULL ? (WS_OVERLAPPEDWINDOW) : (WS_CHILD | WS_VISIBLE), x, y, width, height, parent == NULL ? NULL : parent->hWnd, 0, wc.hInstance, NULL);
u->ll = r;
if(parent == NULL) {