From f55035cdaddf4d9d52a43d6e463a1885703be306 Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Thu, 4 Apr 2024 07:58:16 +0900 Subject: [PATCH] Fix #70 2 --- XgDictList.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/XgDictList.cpp b/XgDictList.cpp index 8221325..4b3c5b9 100644 --- a/XgDictList.cpp +++ b/XgDictList.cpp @@ -1,22 +1,24 @@ -// イメージリストを作成する。 +// ラジオボタン風の状態を表示するためのイメージリストを作成する。 HIMAGELIST XgDictList_CreateRadioButtonImageList(HWND hwnd) { HIMAGELIST himl; HDC hdc_wnd, hdc; HBITMAP hbm_im, hbm_mask; HGDIOBJ hbm_orig; - HBRUSH hbr_white = GetStockBrush(WHITE_BRUSH); - HBRUSH hbr_black = GetStockBrush(BLACK_BRUSH); + HBRUSH hbr_white = GetStockBrush(WHITE_BRUSH), hbr_black = GetStockBrush(BLACK_BRUSH); RECT rc; + // 小さいイメージリストを作成する。 himl = ImageList_Create(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), ILC_COLOR | ILC_MASK, 2, 2); + // いろいろ準備。 hdc_wnd = GetDC(hwnd); hdc = CreateCompatibleDC(hdc_wnd); hbm_im = CreateCompatibleBitmap(hdc_wnd, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); hbm_mask = CreateBitmap(GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), 1, 1, NULL); ReleaseDC(hwnd, hdc_wnd); + // マスクビットマップを描画。 SetRect(&rc, 0, 0, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON)); hbm_orig = SelectObject(hdc, hbm_mask); FillRect(hdc, &rc, hbr_white); @@ -24,18 +26,21 @@ HIMAGELIST XgDictList_CreateRadioButtonImageList(HWND hwnd) SelectObject(hdc, hbr_black); Ellipse(hdc, rc.left, rc.top, rc.right, rc.bottom); + // チェックしていないアイコンを追加。 SelectObject(hdc, hbm_im); SelectObject(hdc, GetSysColorBrush(COLOR_WINDOW)); Ellipse(hdc, rc.left, rc.top, rc.right, rc.bottom); SelectObject(hdc, hbm_orig); ImageList_Add(himl, hbm_im, hbm_mask); + // チェック済みのアイコンを追加。 SelectObject(hdc, hbm_im); SelectObject(hdc, GetSysColorBrush(COLOR_WINDOWTEXT)); Ellipse(hdc, rc.left, rc.top, rc.right, rc.bottom); SelectObject(hdc, hbm_orig); ImageList_Add(himl, hbm_im, hbm_mask); + // 後片付け。 DeleteObject(hbm_mask); DeleteObject(hbm_im); DeleteDC(hdc);