Wow... that makes things a little more complicated. Anyway, here is the code listed below:
Dialog Tray.cpp
Code:
#include <windows.h>
#include "resource.h"
#include "Dialog Tray.h"
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int iCmdShow)
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG),0,(DLGPROC) DialogProc);
return 1;
}
BOOL CALLBACK DialogProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg)
{
case WM_INITDIALOG:
return (TRUE);
case WM_COMMAND:
if(wParam==IDOK) {
SendMessage(hWnd,WM_SIZE,SIZE_MINIMIZED,NULL);
}
else if(wParam==IDCANCEL) {
SendMessage(hWnd,WM_CLOSE,NULL,NULL);
}
break;
case WM_TRAYMESSAGE:
switch(wParam)
{
case ICONIDENT:
switch(lParam)
{
case WM_RBUTTONUP:
SendMessage(hWnd,WM_SIZE,SIZE_RESTORED,NULL);
break;
case WM_LBUTTONUP:
MessageBox(hWnd,"You clicked the right mouse button!","Dialog Tray",MB_OK);
break;
}
break;
}
break;
case WM_SIZE:
if(wParam==SIZE_MINIMIZED) {
ShowWindow(hWnd,SW_HIDE);
NotifySysIcon(hWnd,IDI_ICON1,ToolTip,NIM_ADD);
}
else if(wParam==SIZE_RESTORED) {
ShowWindow(hWnd,SW_NORMAL);
Shell_NotifyIcon(NIM_DELETE,&Nicon);
}
break;
case WM_CLOSE:
Shell_NotifyIcon(NIM_DELETE,&Nicon);
DestroyWindow(hWnd);
break;
case WM_DESTROY:
EndDialog(hWnd,0);
break;
}
return 0;
}
int NotifySysIcon (HWND hWnd,int IconNum,PSTR ToolTip,DWORD NimType)
{
Nicon.cbSize=sizeof(NOTIFYICONDATA);
Nicon.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IconNum));
Nicon.hWnd = hWnd;
Nicon.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
Nicon.uCallbackMessage = WM_TRAYMESSAGE;
Nicon.uID = ICONIDENT;
strcpy(Nicon.szTip,ToolTip);
Shell_NotifyIcon(NimType,&Nicon);
return 0;
}
Dialog Tray.h
Code:
#define WM_TRAYMESSAGE (WM_USER+1)
#define ICONIDENT 0
BOOL CALLBACK DialogProc (HWND, UINT, WPARAM, LPARAM);
int NotifySysIcon (HWND,int,PSTR,DWORD);
NOTIFYICONDATA Nicon;
HWND hWnd;
HINSTANCE hInst;
char ToolTip[] = {"This is the tooltip"};
Resource.h
Code:
#define IDD_DIALOG 101
#define IDI_ICON1 104
Thanks for the help.