那位大虾帮我解释一下在ListCtrl的OnItemchangedList1(NMHDR* pNMHDR, LRESULT* pResult) 事件中,两个参数的意思,以及如何使用他们?    谢谢!!

解决方案 »

  1.   

    NMHDR相当于一类结构的指针。
    看一下NMHDR的定义:
    typedef struct tagNMHDR { 
        HWND hwndFrom; 
        UINT idFrom; 
        UINT code; 
    } NMHDR;
    再看一下NMLISTVIEW的定义:
    typedef struct tagNMLISTVIEW{
        NMHDR   hdr;
        int     iItem;
        int     iSubItem;
        UINT    uNewState;
        UINT    uOldState;
        UINT    uChanged;
        POINT   ptAction;
        LPARAM  lParam;
    } NMLISTVIEW, FAR *LPNMLISTVIEW;可见,NMLISTVIEW是完全包含NMHDR这个结构的,因为前三个成员长度是相同的。所以可以通过强制转换来获取NMLISTVIEW结构指针。同样,例如,typedef struct tagNMHEADER{
        NMHDR    hdr;
        int      iItem;
        int      iButton;
        HDITEM  FAR* pitem;
    } NMHEADER, FAR* LPNMHEADER;这个结构也是完全包含NMHDR这个结构的。所以NMHDR象一个基类,参数用NMHDR指针,因此我们可以随意转换成其它结构的指针来获取更多的信息。至于LRESULT* pResult,我现在看到的例子中,好像没有什么用。应该是一个返回值,而不是输入值。
      

  2.   

    MSDN:
    LRESULT   A 32-bit value returned from a window procedure or callback function.