想做一个功能实现,类似QQ的右下角的小图标弹出一个QQ的提示框那样!
请问各位大牛是怎么实现的!跟飞信每次收到消息的那种差不多!

解决方案 »

  1.   

    用对话框模拟就可以了,VS2008SP1、VS2010中有个Sample,DesktopAlertDemo
      

  2.   

    那是系统托盘图标的相关操作typedef struct _NOTIFYICONDATA {
      DWORD cbSize;
      HWND hWnd;
      UINT uID;
      UINT uFlags;
      UINT uCallbackMessage;
      HICON hIcon;
      TCHAR szTip[64];
      DWORD dwState;
      DWORD dwStateMask;
      TCHAR szInfo[256];
      union {
      UINT uTimeout;
      UINT uVersion;
      };
    其中的 szTip 改成自己想要的信息,这样就会在你将鼠标移到右下角的图标上时,
    出现你自己设定的相关的信息
    至于信息内容的格式化,就要自己设定了,希望对你有帮助
      

  3.   

    我也在网上搜了也咨询过其他的人,有朋友推荐说可能用了shell_notifyicon来实现!我不知道上面说用对话框来实现的朋友有没有自己实现过,还是真的知道QQ和飞信或者MSN那种消息提示的机制!
      

  4.   

    我是这样做的
    BOOL CXXXXDlg::TrayNotifyMsg(DWORD Msg, UINT Icon, CString strTip)
    {
    //创建托盘图标
    if (Icon == NULL)
    {
    Icon = IDR_MAINFRAME;
    } NOTIFYICONDATA data;
    data.cbSize = sizeof(NOTIFYICONDATA);
    data.hIcon = (HICON) LoadImage(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(Icon), IMAGE_ICON, 16,16,0);
    data.hWnd = this->GetSafeHwnd();
    data.uCallbackMessage = WM_TRAYICON;
    data.uFlags = NIF_MESSAGE|NIF_TIP|NIF_ICON;
    data.uID = IDR_MAINFRAME; switch(Msg)
    {
    case NIM_DELETE:
    {
    data.hIcon = NULL;
    data.szTip[0] = '\0';
    break;
    }
    case NIM_ADD:
    {
    strcpy(data.szTip, strTip);
    break;
    }
    case NIM_MODIFY:
    {
    strcpy(data.szTip, strTip);
    break;
    }
    } return Shell_NotifyIcon(Msg, &data);
    }
    在调用这个函数时,这样写
    TrayNotifyMsg(NIM_ADD, IDR_MAINFRAME, "消息提示");在消息提示里可以写自己的内容