void CJabberInfoFrame::PaintCompact(HDC hdc) { RECT rc; GetClientRect(m_hwnd, &rc); char *glyphs[] = { "Main,ID=ProtoInfo", "Main,ID=EventArea", "Main,ID=StatusBar", NULL }; PaintSkinGlyph(hdc, &rc, glyphs, m_clBack); HFONT hfntSave = (HFONT)SelectObject(hdc, m_hfntTitle); SetBkMode(hdc, TRANSPARENT); SetTextColor(hdc, m_clTitle); int cx_icon = GetSystemMetrics(SM_CXSMICON); int cy_icon = GetSystemMetrics(SM_CYSMICON); int cx = rc.right - cx_icon - SZ_FRAMEPADDING; for (int i = m_pItems.getCount(); i--;) { CJabberInfoFrameItem &item = m_pItems[i]; SetRect(&item.m_rcItem, 0, 0, 0, 0); if (!item.m_bShow) continue; if (!item.m_bCompact) continue; int depth = 0; for (char *p = item.m_pszName; p = strchr(p+1, '/'); ++depth) ; if (depth == 0) { if (item.m_hIcolibIcon) { HICON hIcon = IcoLib_GetIconByHandle(item.m_hIcolibIcon); if (hIcon) { DrawIconEx(hdc, SZ_FRAMEPADDING, (rc.bottom-cy_icon)/2, hIcon, cx_icon, cy_icon, 0, NULL, DI_NORMAL); g_ReleaseIcon(hIcon); } } RECT rcText; SetRect(&rcText, cx_icon + SZ_FRAMEPADDING + SZ_ICONSPACING, 0, rc.right - SZ_FRAMEPADDING, rc.bottom); DrawText(hdc, item.m_pszText, -1, &rcText, DT_NOPREFIX | DT_SINGLELINE | DT_VCENTER | DT_END_ELLIPSIS); } else { if (item.m_hIcolibIcon) { HICON hIcon = IcoLib_GetIconByHandle(item.m_hIcolibIcon); if (hIcon) { SetRect(&item.m_rcItem, cx, (rc.bottom-cy_icon)/2, cx+cx_icon, (rc.bottom-cy_icon)/2+cy_icon); DrawIconEx(hdc, cx, (rc.bottom-cy_icon)/2, hIcon, cx_icon, cy_icon, 0, NULL, DI_NORMAL); cx -= cx_icon; g_ReleaseIcon(hIcon); SetToolTip(item.m_tooltipId, &item.m_rcItem, item.m_pszText); } } } } SelectObject(hdc, hfntSave); }
int TreeList_AddIcon(HWND hwnd, HICON hIcon, int iOverlay) { HIMAGELIST hIml = ListView_GetImageList(hwnd, LVSIL_SMALL); int idx = ImageList_AddIcon(hIml, hIcon); g_ReleaseIcon(hIcon); if (iOverlay) ImageList_SetOverlayImage(hIml, idx, iOverlay); return idx; }
void CJabberDlgGcJoin::OnDestroy() { g_ReleaseIcon((HICON)SendDlgItemMessage(m_hwnd, IDC_BOOKMARKS, BM_SETIMAGE, IMAGE_ICON, 0)); m_proto->m_pDlgJabberJoinGroupchat = NULL; DeleteObject((HFONT)SendDlgItemMessage(m_hwnd, IDC_TXT_RECENT, WM_GETFONT, 0, 0)); CSuper::OnDestroy(); mir_free(m_jid); m_jid = NULL; }
void CJabberInfoFrame::PaintNormal(HDC hdc) { RECT rc; GetClientRect(m_hwnd, &rc); char *glyphs[] = { "Main,ID=ProtoInfo", "Main,ID=EventArea", "Main,ID=StatusBar", NULL }; PaintSkinGlyph(hdc, &rc, glyphs, m_clBack); HFONT hfntSave = (HFONT)SelectObject(hdc, GetStockObject(DEFAULT_GUI_FONT)); SetBkMode(hdc, TRANSPARENT); int cx_icon = GetSystemMetrics(SM_CXSMICON); int cy_icon = GetSystemMetrics(SM_CYSMICON); int line_height = cy_icon + SZ_LINEPADDING; int cy = SZ_FRAMEPADDING; for (int i=0; i < m_pItems.getCount(); i++) { CJabberInfoFrameItem &item = m_pItems[i]; if (!item.m_bShow) { SetRect(&item.m_rcItem, 0, 0, 0, 0); continue; } int cx = SZ_FRAMEPADDING; int depth = 0; for (char *p = item.m_pszName; p = strchr(p+1, '/'); cx += cx_icon) ++depth; SetRect(&item.m_rcItem, cx, cy, rc.right - SZ_FRAMEPADDING, cy + line_height); if (item.m_hIcolibIcon) { HICON hIcon = IcoLib_GetIconByHandle(item.m_hIcolibIcon); if (hIcon) { DrawIconEx(hdc, cx, cy + (line_height-cy_icon)/2, hIcon, cx_icon, cy_icon, 0, NULL, DI_NORMAL); cx += cx_icon + SZ_ICONSPACING; g_ReleaseIcon(hIcon); } } SelectObject(hdc, depth ? m_hfntText : m_hfntTitle); SetTextColor(hdc, depth ? m_clText : m_clTitle); RECT rcText; SetRect(&rcText, cx, cy, rc.right - SZ_FRAMEPADDING, cy + line_height); DrawText(hdc, item.m_pszText, -1, &rcText, DT_NOPREFIX|DT_SINGLELINE|DT_VCENTER|DT_END_ELLIPSIS); RemoveTooltip(item.m_tooltipId); cy += line_height + SZ_LINESPACING; } SelectObject(hdc, hfntSave); }
void WindowFreeIcon(HWND hWnd) { g_ReleaseIcon((HICON)SendMessage(hWnd, WM_SETICON, ICON_BIG, 0)); g_ReleaseIcon((HICON)SendMessage(hWnd, WM_SETICON, ICON_SMALL, 0)); }
void ImageList_AddIcon_Icolib(HIMAGELIST hIml, HICON hIcon) { ImageList_AddIcon(hIml, hIcon); g_ReleaseIcon(hIcon); }