|
|
@ -11,7 +11,11 @@ |
|
|
|
#define ID_TRAY_ICON 2050 |
|
|
|
#define ID_TRAY_ICON 2050 |
|
|
|
#define WM_TRAYICON (WM_USER + 1) |
|
|
|
#define WM_TRAYICON (WM_USER + 1) |
|
|
|
|
|
|
|
|
|
|
|
void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem) |
|
|
|
namespace i2p |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
namespace win32 |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
static void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem) |
|
|
|
{ |
|
|
|
{ |
|
|
|
HMENU hPopup = CreatePopupMenu(); |
|
|
|
HMENU hPopup = CreatePopupMenu(); |
|
|
|
InsertMenu (hPopup, 0, MF_BYPOSITION | MF_STRING, ID_ABOUT, "About..."); |
|
|
|
InsertMenu (hPopup, 0, MF_BYPOSITION | MF_STRING, ID_ABOUT, "About..."); |
|
|
@ -33,7 +37,7 @@ void ShowPopupMenu (HWND hWnd, POINT *curpos, int wDefaultItem) |
|
|
|
DestroyMenu(hPopup); |
|
|
|
DestroyMenu(hPopup); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void AddTrayIcon (HWND hWnd) |
|
|
|
static void AddTrayIcon (HWND hWnd) |
|
|
|
{ |
|
|
|
{ |
|
|
|
NOTIFYICONDATA nid; |
|
|
|
NOTIFYICONDATA nid; |
|
|
|
memset(&nid, 0, sizeof(nid)); |
|
|
|
memset(&nid, 0, sizeof(nid)); |
|
|
@ -47,7 +51,7 @@ void AddTrayIcon (HWND hWnd) |
|
|
|
Shell_NotifyIcon(NIM_ADD, &nid ); |
|
|
|
Shell_NotifyIcon(NIM_ADD, &nid ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void RemoveTrayIcon (HWND hWnd) |
|
|
|
static void RemoveTrayIcon (HWND hWnd) |
|
|
|
{ |
|
|
|
{ |
|
|
|
NOTIFYICONDATA nid; |
|
|
|
NOTIFYICONDATA nid; |
|
|
|
nid.hWnd = hWnd; |
|
|
|
nid.hWnd = hWnd; |
|
|
@ -106,15 +110,15 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa |
|
|
|
return DefWindowProc( hWnd, uMsg, wParam, lParam); |
|
|
|
return DefWindowProc( hWnd, uMsg, wParam, lParam); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int WINAPI WinMain (HINSTANCE hInst, HINSTANCE prev, LPSTR cmdline, int show) |
|
|
|
bool StartWin32App () |
|
|
|
{ |
|
|
|
{ |
|
|
|
// check if tunning already
|
|
|
|
|
|
|
|
if (FindWindow (I2PD_WIN32_CLASSNAME, TEXT("i2pd"))) |
|
|
|
if (FindWindow (I2PD_WIN32_CLASSNAME, TEXT("i2pd"))) |
|
|
|
{ |
|
|
|
{ |
|
|
|
MessageBox(NULL, TEXT("I2Pd is running already"), TEXT("Warning"), MB_OK); |
|
|
|
MessageBox(NULL, TEXT("I2Pd is running already"), TEXT("Warning"), MB_OK); |
|
|
|
return 0; |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
// register main window
|
|
|
|
// register main window
|
|
|
|
|
|
|
|
auto hInst = GetModuleHandle(NULL); |
|
|
|
WNDCLASSEX wclx; |
|
|
|
WNDCLASSEX wclx; |
|
|
|
memset (&wclx, 0, sizeof(wclx)); |
|
|
|
memset (&wclx, 0, sizeof(wclx)); |
|
|
|
wclx.cbSize = sizeof(wclx); |
|
|
|
wclx.cbSize = sizeof(wclx); |
|
|
@ -134,24 +138,25 @@ static LRESULT CALLBACK WndProc (HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPa |
|
|
|
if (!CreateWindow(I2PD_WIN32_CLASSNAME, TEXT("i2pd"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 250, 150, NULL, NULL, hInst, NULL)) |
|
|
|
if (!CreateWindow(I2PD_WIN32_CLASSNAME, TEXT("i2pd"), WS_OVERLAPPEDWINDOW | WS_VISIBLE, 100, 100, 250, 150, NULL, NULL, hInst, NULL)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
MessageBox(NULL, "Failed to create main window", TEXT("Warning!"), MB_ICONERROR | MB_OK | MB_TOPMOST); |
|
|
|
MessageBox(NULL, "Failed to create main window", TEXT("Warning!"), MB_ICONERROR | MB_OK | MB_TOPMOST); |
|
|
|
return 1; |
|
|
|
return false; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* // init
|
|
|
|
int RunWin32App () |
|
|
|
char * argv[] = { (char *)"i2pd" }; |
|
|
|
{ |
|
|
|
Daemon.init(sizeof (argv)/sizeof (argv[0]), argv); |
|
|
|
|
|
|
|
// start
|
|
|
|
|
|
|
|
Daemon.start ();*/ |
|
|
|
|
|
|
|
// main loop
|
|
|
|
|
|
|
|
MSG msg; |
|
|
|
MSG msg; |
|
|
|
while (GetMessage (&msg, NULL, 0, 0 )) |
|
|
|
while (GetMessage (&msg, NULL, 0, 0 )) |
|
|
|
{ |
|
|
|
{ |
|
|
|
TranslateMessage (&msg); |
|
|
|
TranslateMessage (&msg); |
|
|
|
DispatchMessage (&msg); |
|
|
|
DispatchMessage (&msg); |
|
|
|
} |
|
|
|
} |
|
|
|
/* // atop
|
|
|
|
|
|
|
|
Daemon.stop ();*/ |
|
|
|
|
|
|
|
// terminate
|
|
|
|
|
|
|
|
UnregisterClass (I2PD_WIN32_CLASSNAME, hInst); |
|
|
|
|
|
|
|
return msg.wParam; |
|
|
|
return msg.wParam; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void StopWin32App () |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
UnregisterClass (I2PD_WIN32_CLASSNAME, GetModuleHandle(NULL)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|