本帖最后由 wzyzb 于 2009-09-03 15:56:18 编辑

解决方案 »

  1.   

    ON_NOTIFY_EX_RANGE是表示一个范围,虽然是为0,但是也包含在0-0xffff(65535)中................
    这样写应该是为了以后万一变化的话也不会有问题........
      

  2.   

    Note  that  the  id  of  a  tool  tip  is  always  0.   
    这句话只是针对ON_NOTIFY_EX(  TTN_NEEDTEXT,  0,  memberFxn  )的吧
    那个ON_NOTIFY_EX_RANGE表示一个范围和它是不一样的吧
      

  3.   

    那这里0, 0xFFFF, 表示什么意思
           响应消息的函数有三个参数 UINT id, NMHDR * pNMHDR, LRESULT * pResult 
             在函数中对参数id处理也不一样  id 是tool的标识码?
        在ON_NOTIFY_EX_RANGE 对应的函数中
       id = ((UINT_PTR)(WORD)::GetDlgCtrlID((HWND)id))  这是什么意思
       
      

  4.   

    id 
    Identifier of the control that sent the notification. Not used. The control id is taken from the NMHDR structure.
      

  5.   

    为什么我在单文档程序中捕获不到TTN_NEEDTEXT这个消息
      

  6.   


    #define ON_NOTIFY_EX(wNotifyCode, id, memberFxn) \
    { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)id, AfxSig_bwNMHDRpl, \
    (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },#define ON_NOTIFY_EX_RANGE(wNotifyCode, id, idLast, memberFxn) \
    { WM_NOTIFY, (WORD)(int)wNotifyCode, (WORD)id, (WORD)idLast, AfxSig_bwNMHDRpl, \
    (AFX_PMSG)(BOOL (AFX_MSG_CALL CCmdTarget::*)(UINT, NMHDR*, LRESULT*))&memberFxn },
    其实 ON_NOTIFY_EX 和 ON_NOTIFY_EX_RANGE 添的结构体是一样的只不过 ON_NOTIFY_EX 把idLast和id添成一样的值了,id为控件号 idLast是控件号的最大值, id 和idLast表示了有效Id的的范围添0xffff表示早最大如果添ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW, 0, 0, OnToolTipText) 也是没问题的