如题,我的程序因为功能只有一个所以用纯Win32SDK来编写,没有窗体,也没用MFC。
现在需要用Shell_NotifyIcon在系统托盘中添加一个图标并加入菜单来使程序退出,
可是在NOTIFYICONDATA中的hwnd为程序中将要接收托盘消息的窗口句柄,怎么办?
是用线程消息吗?怎样实现?谢谢了!
现在需要用Shell_NotifyIcon在系统托盘中添加一个图标并加入菜单来使程序退出,
可是在NOTIFYICONDATA中的hwnd为程序中将要接收托盘消息的窗口句柄,怎么办?
是用线程消息吗?怎样实现?谢谢了!
void ShowTrayIcon(BOOL bShowActiveIcon,BOOL Add)
{
NOTIFYICONDATA data;
data.cbSize = sizeof(NOTIFYICONDATA);
data.hIcon = ::LoadIcon(GetCurrentInstance(),MAKEINTRESOURCE(bShowActiveIcon?IDI_ZOOMOPEN:IDI_ZOOMCLOSE)); // 图标
data.hWnd = GetCurrentWindow(); // 自己的窗体,没有就是谁调用的你,你就向那里发
data.uCallbackMessage = APP_SHELL_EVENT;//自定义
data.uFlags = NIF_ICON|NIF_MESSAGE |NIF_TIP ;
data.uID = 98;
strcpy(data.szTip,szAppToolTip);
DWORD dw= Add?NIM_ADD:NIM_MODIFY;
Shell_NotifyIcon(dw,&data);
}void RemoveTrayIcon()
{
NOTIFYICONDATA data;
data.cbSize=sizeof(NOTIFYICONDATA);
data.hWnd = GetCurrentWindow();
data.uID = 98;
Shell_NotifyIcon(NIM_DELETE,&data);
}
GetCurrentWindow();