source: trunk/Utilities/Miscellaneous/RuntimeIcon/RuntimeIcon.cpp @ 937

Last change on this file since 937 was 123, checked in by roman, 12 years ago
  • Property svn:keywords set to Id
File size: 2.5 KB
Line 
1////////////////////////////////////////////////////////////
2// Copyright (C) Roman Ryltsov, 2012
3// Created by Roman Ryltsov roman@alax.info
4//
5// $Id: RuntimeIcon.cpp 123 2012-09-13 06:50:30Z roman $
6
7#include "stdafx.h"
8#include <commctrl.h>
9#include "resource.h"
10
11#pragma comment(lib, "comctl32.lib")
12
13int _tmain(int argc, _TCHAR* argv[])
14{
15        INITCOMMONCONTROLSEX Controls = { sizeof Controls, ICC_WIN95_CLASSES };
16        ATLVERIFY(InitCommonControlsEx(&Controls));
17        HICON hResourceIcon = LoadIcon(NULL, MAKEINTRESOURCE(IDI_MODULE));
18        ICONINFOEX ResourceIconInformation = { sizeof ResourceIconInformation };
19        ATLVERIFY(GetIconInfoEx(hResourceIcon, &ResourceIconInformation));
20        ATLASSERT(ResourceIconInformation.hbmColor);
21        BITMAP ResourceIconColorBitmap;
22        ATLVERIFY(GetObject(ResourceIconInformation.hbmColor, sizeof ResourceIconColorBitmap, &ResourceIconColorBitmap) == sizeof ResourceIconColorBitmap);
23        HDC hDc = CreateCompatibleDC(NULL);
24
25        //HBITMAP hBitmap = CreateCompatibleBitmap(hDc, ResourceIconColorBitmap.bmWidth, ResourceIconColorBitmap.bmHeight);
26        BITMAPINFO BitmapInformation;
27        ZeroMemory(&BitmapInformation, sizeof BitmapInformation);
28        BitmapInformation.bmiHeader.biSize = sizeof BitmapInformation.bmiHeader;
29        BitmapInformation.bmiHeader.biWidth = ResourceIconColorBitmap.bmWidth;
30        BitmapInformation.bmiHeader.biHeight = ResourceIconColorBitmap.bmHeight;
31        BitmapInformation.bmiHeader.biPlanes = 1;
32        BitmapInformation.bmiHeader.biBitCount = 24;
33        VOID* pvBits;
34        HBITMAP hBitmap = CreateDIBSection(hDc, &BitmapInformation, DIB_RGB_COLORS, &pvBits, NULL, 0);
35
36        HGDIOBJ hPreviousBitmap = SelectObject(hDc, hBitmap);
37        ATLVERIFY(DrawIcon(hDc, 0, 0, hResourceIcon));
38        SelectObject(hDc, hPreviousBitmap);
39        HIMAGELIST hImageList = ImageList_Create(ResourceIconColorBitmap.bmWidth, ResourceIconColorBitmap.bmHeight, ILC_COLORDDB, 1, 1);
40        ATLASSERT(hImageList);
41        INT nIndex = ImageList_Add(hImageList, hBitmap, NULL);
42        HICON hIcon = ImageList_GetIcon(hImageList, nIndex, ILD_NORMAL);
43        ATLASSERT(nIndex >= 0);
44        #pragma region Test Output
45        HDC hDesktopDc = GetDC(GetDesktopWindow());
46        ATLVERIFY(DrawIcon(hDesktopDc, 1680, 0, hIcon)); // Runtime Icon
47        ATLVERIFY(DrawIcon(hDesktopDc, 1680, ResourceIconColorBitmap.bmHeight, hResourceIcon)); // Resource Icon
48        hPreviousBitmap = SelectObject(hDc, hBitmap);
49        ATLVERIFY(BitBlt(hDesktopDc, 1680, 2 * ResourceIconColorBitmap.bmHeight, ResourceIconColorBitmap.bmWidth, ResourceIconColorBitmap.bmHeight, hDc, 0, 0, SRCCOPY));
50        SelectObject(hDc, hPreviousBitmap);
51        #pragma endregion
52        return 0;
53}
54
Note: See TracBrowser for help on using the repository browser.