如题,我的程序因为功能只有一个所以用纯Win32SDK来编写,没有窗体,也没用MFC。
现在需要用Shell_NotifyIcon在系统托盘中添加一个图标并加入菜单来使程序退出,
可是在NOTIFYICONDATA中的hwnd为程序中将要接收托盘消息的窗口句柄,怎么办?
是用线程消息吗?怎样实现?谢谢了!

解决方案 »

  1.   


    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);
    }
      

  2.   

    没有窗体的程序用桌面做窗体可以吗?
    GetCurrentWindow();