一个基于对话框的MFC程序
想把最小化做成托盘管理 就是最小化了之后像QQ一样缩到右下角
请问该怎么做?

解决方案 »

  1.   

    一般的代码是这样的:
    NOTIFYICONDATA m_tnid  
    m_tnid.cbSize=sizeof(NOTIFYICONDATA);//设置结构大小// 
    m_tnid.hWnd=this->m_hWnd;//设置图标对应的窗口 
    m_tnid.uFlags=NIF_MESSAGE|NIF_ICON|NIF_TIP;//图标属性 
    m_tnid.uCallbackMessage=MYWM_NOTIFYICON;//应用程序定义的回调消息ID 
    CString szToolTip; 
    szToolTip=_T("例子"); 
    _tcscpy(m_tnid.szTip, szToolTip);//帮助信息 
    m_tnid.uID=IDR_MAINFRAME;//应用程序图标 
    HICON hIconx; 
    hIconx=AfxGetApp()->LoadIcon(IDI_ICON2); 
    m_tnid.hIcon=hIconx;//图标句柄 
    PNOTIFYICONDATA m_ptnid=&m_tnid; 
    ::Shell_NotifyIcon(NIM_ADD,m_ptnid);//增加图标到系统盘 
      

  2.   


    能说得稍微具体点儿么OTZ
      

  3.   

    就是将我上面的代码加在这两个消息的处理函数里面。另外,还要用ShowWindow(hwnd,SW_HIDE)将你的窗口隐藏掉。
      

  4.   

    这个具体
    http://blog.csdn.net/xyzqiang/archive/2011/04/08/6309576.aspx
      

  5.   

     在vc中,当最小化一个对话框的时候,会产生一个SC_MINIMIZE 消息,然后处理这个消息。在mfc中,OnSysCommand(UINT nID, LPARAM lParam)函数中可以处理这个消息
     void CtestEnvDlg::OnSysCommand(UINT nID, LPARAM lParam)
    {if(nID == SC_MINIMIZE)
     {
      //处理最小化到系统托盘
      NOTIFYICONDATA nid;
      nid.cbSize = (DWORD)sizeof(NOTIFYICONDATA);
      nid.hWnd = this->m_hWnd;
      nid.uID = IDR_MAINFRAME;
      nid.uFlags = NIF_ICON|NIF_MESSAGE|NIF_TIP;
      nid.uCallbackMessage = WM_MINWINDOW;               //自定义的消息,当在系统图标上操作时会触发此消息
      nid.hIcon = LoadIcon(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDR_MAINFRAME));
      StrCpy(nid.szTip,"托盘测试");
      Shell_NotifyIcon(NIM_ADD,&nid);
      ShowWindow(SW_HIDE);
     }