Killer feature: Windows app can have icons, now.

The doc explains everything.

SVN revision: 54283
This commit is contained in:
Vincent Torri 2010-11-07 20:29:08 +00:00
parent f334d907ae
commit 48d416b359
1 changed files with 56 additions and 4 deletions

View File

@ -35,6 +35,8 @@ DEFINE_OLEGUID(IID_IDropSource, 0x00000121L, 0, 0);
DEFINE_OLEGUID(IID_IDropTarget, 0x00000122L, 0, 0);
DEFINE_OLEGUID(IID_IUnknown, 0x00000000L, 0, 0);
#define IDI_ICON 101
static int _ecore_win32_init_count = 0;
LRESULT CALLBACK
@ -260,6 +262,35 @@ int ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = 0;
* Ecore_Win32 is a library that wraps Windows graphic functions
* and integrate them nicely into the Ecore main loop.
*
* @section Ecore_Win32_Sec_Init Initialisation / Shutdown
*
* To fill...
*
* @section Ecore_Win32_Sec_Icons How to set icons to an application
*
* It is possible to also sets the icon of the application easily:
*
* @li Create an icon with your favorite image creator. The Gimp is a
* good choice. Create several images of size 16, 32 and 48. You can
* also create images of size 24, 64, 128 and 256. Paste all of them
* in the image of size 16 as a layer. Save the image of size 16 with
* the name my_icon.ico. Put it where the source code of the
* application is located.
* @li Create my_icon_rc.rc file with your code editor and add in it:
* @code
* 101 ICON DISCARDABLE "my_icon.ico"
* @endcode
* @li With Visual Studio, put that file in the 'Resource file' part
* of the project.
* @li With MinGW, you have to compile it with windres:
* @code
* windres my_icon_rc.rc my_icon_rc.o
* @endcode
* and add my_icon_rc.o to the object files of the application.
*
* @note The value 101 must not be changed, it's the ID used
* internally by Ecore_Win32 to get the icons.
*
* @{
*/
@ -278,7 +309,9 @@ int ECORE_WIN32_EVENT_WINDOW_DELETE_REQUEST = 0;
EAPI int
ecore_win32_init()
{
WNDCLASS wc;
WNDCLASSEX wc;
HICON icon;
HICON icon_sm;
if (++_ecore_win32_init_count != 1)
return _ecore_win32_init_count;
@ -307,19 +340,38 @@ ecore_win32_init()
goto shutdown_ecore_event;
}
memset (&wc, 0, sizeof (WNDCLASS));
icon = LoadImage(_ecore_win32_instance,
MAKEINTRESOURCE(IDI_ICON),
IMAGE_ICON,
GetSystemMetrics(SM_CXICON),
GetSystemMetrics(SM_CYICON),
LR_DEFAULTCOLOR);
icon_sm = LoadImage(_ecore_win32_instance,
MAKEINTRESOURCE(IDI_ICON),
IMAGE_ICON,
GetSystemMetrics(SM_CXSMICON),
GetSystemMetrics(SM_CYSMICON),
LR_DEFAULTCOLOR);
if (!icon)
icon = LoadIcon (NULL, IDI_APPLICATION);
if (!icon_sm)
icon_sm = LoadIcon (NULL, IDI_APPLICATION);
memset (&wc, 0, sizeof (WNDCLASSEX));
wc.cbSize = sizeof (WNDCLASSEX);
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = _ecore_win32_window_procedure;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = _ecore_win32_instance;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.hIcon = icon;
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
wc.lpszMenuName = NULL;
wc.lpszClassName = ECORE_WIN32_WINDOW_CLASS;
wc.hIconSm = icon_sm;
if(!RegisterClass(&wc))
if(!RegisterClassEx(&wc))
{
ERR("RegisterClass() failed");
goto free_library;