Browse Source

set correct icons

pull/405/head
orignal 9 years ago
parent
commit
ebd356c7bd
  1. 58
      Win32/Win32App.cpp

58
Win32/Win32App.cpp

@ -1,12 +1,16 @@ @@ -1,12 +1,16 @@
#include <string.h>
#include <windows.h>
#include <shellapi.h>
#include "../Daemon.h"
//#include "../Daemon.h"
#include "resource.h"
#include "Win32App.h"
#define ID_ABOUT 2000
#define ID_EXIT 2001
#define ID_TRAY_ICON 2050
#define WM_TRAYICON (WM_USER + 1)
void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem)
{
HMENU hPopup = CreatePopupMenu();
@ -29,23 +33,36 @@ void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem) @@ -29,23 +33,36 @@ void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem)
DestroyMenu(hPopup);
}
void AddTrayIcon (HWND hWnd, UINT uID, UINT uCallbackMsg, UINT uIcon)
void AddTrayIcon (HWND hWnd)
{
NOTIFYICONDATA nid;
memset(&nid, 0, sizeof(nid));
nid.cbSize = sizeof(nid);
nid.hWnd = hWnd;
nid.uID = uID;
nid.uID = ID_TRAY_ICON;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = uCallbackMsg;
nid.hIcon = LoadIcon (GetModuleHandle(NULL), IDI_APPLICATION);
nid.uCallbackMessage = WM_TRAYICON;
// TODO: must set correct icon
// nid.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE (IDI_ICON1));
{
char szIconFile[512];
GetSystemDirectory( szIconFile, sizeof( szIconFile ) );
if ( szIconFile[ strlen( szIconFile ) - 1 ] != '\\' )
strcat( szIconFile, "\\" );
strcat( szIconFile, "shell32.dll" );
// Icon #23 (0-indexed) in shell32.dll is a "help" icon.
ExtractIconEx( szIconFile, 23, NULL, &(nid.hIcon), 1 );
}
strcpy (nid.szTip, "i2pd");
Shell_NotifyIcon(NIM_ADD, &nid );
}
void RemoveTrayIcon (HWND hWnd, UINT uID)
void RemoveTrayIcon (HWND hWnd)
{
NOTIFYICONDATA nid;
nid.hWnd = hWnd;
nid.uID = uID;
nid.uID = ID_TRAY_ICON;
Shell_NotifyIcon (NIM_DELETE, &nid);
}
@ -55,14 +72,14 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa @@ -55,14 +72,14 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa
{
case WM_CREATE:
{
AddTrayIcon (hWnd, 1, WM_APP, 0);
return 0;
AddTrayIcon (hWnd);
break;
}
case WM_CLOSE:
{
RemoveTrayIcon (hWnd, 1);
RemoveTrayIcon (hWnd);
PostQuitMessage (0);
return DefWindowProc (hWnd, uMsg, wParam, lParam);
break;
}
case WM_COMMAND:
{
@ -81,8 +98,9 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa @@ -81,8 +98,9 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa
}
break;
}
case WM_APP:
case WM_TRAYICON:
{
SetForegroundWindow (hWnd);
switch (lParam)
{
case WM_RBUTTONUP:
@ -90,7 +108,7 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa @@ -90,7 +108,7 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa
SetForegroundWindow (hWnd);
ShowPopupMenu(hWnd, NULL, -1);
PostMessage (hWnd, WM_APP + 1, 0, 0);
return 0;
break;
}
}
break;
@ -112,12 +130,12 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa @@ -112,12 +130,12 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa
memset (&wclx, 0, sizeof(wclx));
wclx.cbSize = sizeof(wclx);
wclx.style = 0;
wclx.lpfnWndProc = &WndProc;
wclx.lpfnWndProc = WndProc;
wclx.cbClsExtra = 0;
wclx.cbWndExtra = 0;
wclx.hInstance = hInst;
wclx.hIcon = LoadIcon (hInst, IDI_APPLICATION);
wclx.hIconSm = LoadIcon (hInst, IDI_APPLICATION);
wclx.hIcon = LoadIcon (hInst, MAKEINTRESOURCE (IDI_ICON1));
wclx.hIconSm = LoadIcon (hInst, MAKEINTRESOURCE (IDI_ICON1));
wclx.hCursor = LoadCursor (NULL, IDC_ARROW);
wclx.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wclx.lpszMenuName = NULL;
@ -130,11 +148,11 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa @@ -130,11 +148,11 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa
return 1;
}
// init
/* // init
char * argv[] = { (char *)"i2pd" };
Daemon.init(sizeof (argv)/sizeof (argv[0]), argv);
// start
Daemon.start ();
Daemon.start ();*/
// main loop
MSG msg;
while (GetMessage (&msg, NULL, 0, 0 ))
@ -142,8 +160,8 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa @@ -142,8 +160,8 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa
TranslateMessage (&msg);
DispatchMessage (&msg);
}
// atop
Daemon.stop ();
/* // atop
Daemon.stop ();*/
// terminate
UnregisterClass (I2PD_WIN32_CLASSNAME, hInst);
return msg.wParam;

Loading…
Cancel
Save