如何获取气泡通知的超链接(SHNN_LINKSEL)

hellomcu   2009-9-27 15:03 楼主
刚刚接触MFC 现在要做个气泡通知 ,点击里面的HTML文本超链接可以访问URL 参照MSDN 我写了以下代码
  1. HICON hIcon = NULL;
  2. CString myHTML=L"

    This is a List

    • Item1
    • Item2

     

    Clickhereto go to MSNBC.

    ";
  3. SHNOTIFICATIONDATA* pCurrentNotification = NULL;
  4. pCurrentNotification = (SHNOTIFICATIONDATA*)malloc(sizeof(SHNOTIFICATIONDATA));
  5. pCurrentNotification->dwID = NotifyID;
  6. pCurrentNotification->clsid = CLSID_SHNAPI_Test;
  7. pCurrentNotification->npPriority = SHNP_INFORM;
  8. pCurrentNotification->csDuration = 20;
  9. pCurrentNotification->hwndSink =this->m_hWnd;
  10. /*
  11. 1 现在使用的是MFC 创建的 CDialog 类的窗体 ,不知道对应的hwndSink 句柄具体怎么写???
  12. */
  13. pCurrentNotification->pszHTML = myHTML;
  14. pCurrentNotification->hicon =hIcon;
  15. pCurrentNotification->cbStruct = sizeof(SHNOTIFICATIONDATA);
  16. pCurrentNotification->pszTitle =MSG_Title;
  17. pCurrentNotification->grfFlags = NULL;
  18. SHNOTIFICATIONDATA sn2 = {0};
在消息映射函数 BEGIN_MESSAGE_MAP(CPocketPJDlg, CDialog) 里 添加映射,想将点击超链接后 调用TEST函数处理 NMSHN. pzslink 中 选择的链接 ON_NOTIFY(SHNN_LINKSEL,NotifyID, TEST) 2 . 不知道 wnotifyCode 设为SHNN_LINKSEl 对不? 还是使用ON_MESSAGE(WM_NOTIFY,TEST)?? 现在Debug 后发现点击链接后无法激活函数 跟踪后发现在wincore.cpp 中的OnWndMsg 函数里当 消息传入后
  1. if (message == WM_NOTIFY)
  2. {
  3. NMHDR* pNMHDR = (NMHDR*)lParam;
  4. if (pNMHDR->hwndFrom != NULL && OnNotify(wParam, lParam, &lResult))
  5. goto LReturnTrue;
  6. return FALSE;
  7. }
发现pNMHDR->hwndFrom=NULL 推测是pCurrentNotification->hwndSink 设置不对 我试了 this->getsafehwnd()、m_hwnd, 设置了个静态的窗体TheDlg 使用TheDlg->m_hwnd,TheDlg->GetsafeHwnd() 都不行......... 向各位高手求救~~~ 麻烦 解答下上面我的两个疑问,另外 希望能有个代码示例参考下.......... 以上都是我自己摸索的 不知道是否正确..............

回复评论 (5)

去 Mobile 版问一下吧
点赞  2009-9-27 16:10
继续等待高手答疑~~~
点赞  2009-9-28 17:20
up~
点赞  2009-10-9 17:30
CE是不支持的

Mobile没用过
点赞  2009-10-10 11:32
up
点赞  2009-10-10 14:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复