From 8a02b3d31be583bff74f1c67d47d07140ed4e48a Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Tue, 25 Nov 2025 02:03:14 +0000 Subject: [PATCH] hmm git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@812 b9cfdab3-6d41-4d17-bbe4-086880011989 --- include/Mw/LowLevel/GDI.h | 1 + src/backend/gdi.c | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/Mw/LowLevel/GDI.h b/include/Mw/LowLevel/GDI.h index f65763e..eb0fc0a 100644 --- a/include/Mw/LowLevel/GDI.h +++ b/include/Mw/LowLevel/GDI.h @@ -18,6 +18,7 @@ struct _MwLLGDI { HWND hWnd; HDC hDC; HCURSOR cursor; + HICON icon; int grabbed; }; diff --git a/src/backend/gdi.c b/src/backend/gdi.c index 1aa4388..f3e8a45 100644 --- a/src/backend/gdi.c +++ b/src/backend/gdi.c @@ -240,6 +240,7 @@ static MwLL MwLLCreateImpl(MwLL parent, int x, int y, int width, int height) { r->gdi.hWnd = CreateWindow("milsko", "Milsko", parent == NULL ? (WS_OVERLAPPEDWINDOW) : (WS_CHILD | WS_VISIBLE), x == MwDEFAULT ? CW_USEDEFAULT : x, y == MwDEFAULT ? CW_USEDEFAULT : y, width, height, parent == NULL ? NULL : parent->gdi.hWnd, 0, wc.hInstance, NULL); r->gdi.hInstance = wc.hInstance; r->gdi.cursor = NULL; + r->gdi.icon = NULL; u->ll = r; u->min_set = 0; @@ -509,10 +510,10 @@ static void MwLLSetIconImpl(MwLL handle, MwLLPixmap pixmap) { ii.hbmMask = pixmap->gdi.hMask2; ii.hbmColor = pixmap->gdi.hBitmap; - ico = CreateIconIndirect(&ii); - SendMessage(handle->gdi.hWnd, WM_SETICON, ICON_SMALL, (LPARAM)ico); - SendMessage(handle->gdi.hWnd, WM_SETICON, ICON_BIG, (LPARAM)ico); -// DestroyIcon(ico); + if(handle->gdi.icon != NULL) DestroyIcon(handle->gdi.icon); + handle->gdi.icon = CreateIconIndirect(&ii); + SendMessage(handle->gdi.hWnd, WM_SETICON, ICON_SMALL, (LPARAM)handle->gdi.icon); + SendMessage(handle->gdi.hWnd, WM_SETICON, ICON_BIG, (LPARAM)handle->gdi.icon); } static void MwLLForceRenderImpl(MwLL handle) { @@ -561,6 +562,7 @@ static void MwLLSetCursorImpl(MwLL handle, MwCursor* image, MwCursor* mask) { cursor = CreateCursor(GetModuleHandle(NULL), xs, ys, MwCursorDataHeight, MwCursorDataHeight, dmask, dimage); if(handle->gdi.cursor != NULL) DestroyCursor(handle->gdi.cursor); + if(handle->gdi.icon != NULL) DestroyIcon(handle->gdi.icon); handle->gdi.cursor = cursor; free(dimage);