added popup menu to tray icon with "Exit" option, removing tray icon upon exit

git-svn-id: http://apu.dw.local/svnusers/JoshHoltrop/pppc/trunk@39 8131a0b2-b21c-1c47-bd6a-f003126495bd
This commit is contained in:
joshholtrop 2009-07-30 16:58:47 +00:00
parent 73f3ba093d
commit d2bf8efc1b

43
pppc.cc
View File

@ -92,10 +92,6 @@ int WinMain(
switch (msg.message)
{
case WM_PAINT:
cerr << "WM_PAINT" << endl;
break;
case WM_COMMAND:
cerr << "WM_COMMAND" << endl;
break;
case WM_CLOSE:
case WM_DESTROY:
@ -114,9 +110,20 @@ int WinMain(
pport_write(0x0);
}
break;
case WM_COMMAND:
switch (LOWORD(msg.wParam)) /* menu entry index */
{
case 0: /* exit */
running = false;
break;
}
break;
break;
}
}
Shell_NotifyIcon(NIM_DELETE, &nid);
/* stop listening for session notifications */
session_notification_disable(hWnd);
@ -138,7 +145,33 @@ LRESULT WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
PostQuitMessage(0);
break;
case WM_ICON_NOTIFY:
cerr << "WM_ICON_NOTIFY" << endl;
if (wParam == 0)
{
if (LOWORD(lParam) == WM_RBUTTONUP)
{
HMENU hMenu = ::CreatePopupMenu();
MENUITEMINFO mii;
memset(&mii, 0, sizeof(mii));
mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STRING | MIIM_ID;
mii.wID = 0;
mii.dwTypeData = "E&xit";
mii.cch = strlen(mii.dwTypeData);
if (::InsertMenuItem(hMenu, 0, TRUE, &mii) == 0)
{
cerr << "Warning: InsertMenuItem(): " << GetLastError() << endl;
}
POINT pos;
GetCursorPos(&pos);
::SetForegroundWindow(hWnd);
::TrackPopupMenu(hMenu, 0, pos.x, pos.y, 0, hWnd, NULL);
// BUGFIX: See "PRB: Menus for Notification Icons Don't Work Correctly"
::PostMessage(hWnd, WM_NULL, 0, 0);
DestroyMenu(hMenu);
}
}
break;
}
return 0;