现在可以实现对话框最小化后,在任务栏的右下角出现托盘图标
但怎么消除任务栏下面的该对话框窗口呢?
就是
按最小化按钮后,只要现在图标就可以了,然后我双击这个图标的时候,才让这个对话框出现在任务栏的上!

解决方案 »

  1.   

    NOTIFYICONDATA nid;
    void AddTaskBarIcon() {
    nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);   
    nid.hWnd = hDlgMain;   
    nid.uID = IDI_ICON1;   
    nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;   
    nid.uCallbackMessage = WM_SHOWTASK;//自定义的消息名称   
    nid.hIcon = LoadIcon(hx, MAKEINTRESOURCE(IDI_ICON1));   
    strcpy(nid.szTip, "魔兽战争");//信息提示条为“计划任务提醒”   
    Shell_NotifyIcon(NIM_ADD, &nid);//在托盘区添加图标
    }
    void RemoveTaskBarIcon() {
    Shell_NotifyIcon(NIM_DELETE, &nid);
    }
      

  2.   

    case WM_SIZE:
    if(wParam == SIZE_MINIMIZED) {
    AddTaskBarIcon();
    ShowWindow(hDlg, SW_HIDE);//隐藏主窗口   
    }
    break;
      

  3.   

    void CMy578979Dlg::OnSysCommand(UINT nID, LPARAM lParam)
    {
    if(nID == SC_MINIMIZE)
    {
    NOTIFYICONDATA tnd; 
    tnd.cbSize = sizeof(NOTIFYICONDATA);
    tnd.hWnd = this->m_hWnd;
    tnd.uID = IDR_MAINFRAME; //显示托盘的图标
    tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
    tnd.uCallbackMessage = WM_LIBEN; //用户在鼠标上做操作时的自定义消息
    tnd.hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)); 
    Shell_NotifyIcon(NIM_ADD,&tnd); ShowWindow(SW_HIDE); //我也隐藏了啊,但窗口还是会出现在任务栏上! if(lpszTip)
    scpy(tnd.szTip, lpszTip); //使用_T("….")
    else
    d.szTip[0]='\0'; return Shell_NotifyIcon(NIM_ADD,&d); } CDialog::OnSysCommand(nID, lParam);
    }
      

  4.   

    NOTIFYICONDATA  nd;
    nd.uFlags = 0;
    Shell_NotifyIcon(NIM_DELETE, &nd); //把图标从托盘上删除