void CTestDlg::OnDblclkTree1(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
*pResult = 0;
}
请教pNMHDR,pResult这两个参数有什么作用呢?例如我想得到刚才双击的是哪列表中的哪一项,可以由这两个参数得到而不是通过GetSelectedItem()可以吗?
5 个解决方案
#1
up
#2
参数pNMHDR指向NMHDR及其扩充结构,里面包含着消息相关的内容,GetSelectedItem()的功能也可以通过它来得到!参数result指向一个处理结果!
下面的内容是复制的,希望你能看懂!
较之传统的Windows 3.x控件,新的Win32控件更加复杂和先进.在新控件发送通知消息的同时,往往还需要附加一些数据来描述控件的状态.传统的WM_COMMAND消息通知机制显然不能完成这一任务,因为WM_COMMAND消息的wParam和lParam已经被占满了,无法容纳新的数据.所以在Win32中,采用新的WM_NOTIFY消息来实现新控件的消息通知机制.在该消息的wParam中含有控件的ID,lParam中则有一个指针,这个指针指向一个结构.这个结构要么是NMHDR结构,要么是一个以NMHDR结构作为第一个成员的扩充结构.通过NMHDR结构及其扩充结构可以传递附加数据.从理论上讲,可以通过扩充结构传送任意多的数据.需要指出的是,由于NMHDR结构是扩充结构的第一个成员,因此lParam中的指针即可以认为是指向NMHDR结构的,也可以认为指向包含NMHDR结构的扩充结构的.
NMHDR结构如下所示:
typedef struct tagNMHDR {
HWND hwndFrom; //控件窗口的句柄
UINT idFrom; //控件的ID
UINT code; //控件的通知消息码
} NMHDR;
一个典型的扩充结构如下所示,该结构用于列表视图控件的LVN_KEYDOWN通知消息.
typedef struct tagLV_KEYDOWN {
NMHDR hdr; //NMHDR结构作为第一个成员
WORD wVKey;
UINT flags;
} LV_KEYDOWN;
下面的内容是复制的,希望你能看懂!
较之传统的Windows 3.x控件,新的Win32控件更加复杂和先进.在新控件发送通知消息的同时,往往还需要附加一些数据来描述控件的状态.传统的WM_COMMAND消息通知机制显然不能完成这一任务,因为WM_COMMAND消息的wParam和lParam已经被占满了,无法容纳新的数据.所以在Win32中,采用新的WM_NOTIFY消息来实现新控件的消息通知机制.在该消息的wParam中含有控件的ID,lParam中则有一个指针,这个指针指向一个结构.这个结构要么是NMHDR结构,要么是一个以NMHDR结构作为第一个成员的扩充结构.通过NMHDR结构及其扩充结构可以传递附加数据.从理论上讲,可以通过扩充结构传送任意多的数据.需要指出的是,由于NMHDR结构是扩充结构的第一个成员,因此lParam中的指针即可以认为是指向NMHDR结构的,也可以认为指向包含NMHDR结构的扩充结构的.
NMHDR结构如下所示:
typedef struct tagNMHDR {
HWND hwndFrom; //控件窗口的句柄
UINT idFrom; //控件的ID
UINT code; //控件的通知消息码
} NMHDR;
一个典型的扩充结构如下所示,该结构用于列表视图控件的LVN_KEYDOWN通知消息.
typedef struct tagLV_KEYDOWN {
NMHDR hdr; //NMHDR结构作为第一个成员
WORD wVKey;
UINT flags;
} LV_KEYDOWN;
#3
你看NMHDR里面是不是包含了wParam和lParam,所以比以前的好使
#4
LPNMTREEVIEW pItem = (LPNMTREEVIEW)pNMHDR
pItem->itemOld->hItem就被选中的项的句柄,用GetSelectedItem也可以
pItem->itemOld->hItem就被选中的项的句柄,用GetSelectedItem也可以
#5
你只要通过它得到了itme的句柄就好用了.
#1
up
#2
参数pNMHDR指向NMHDR及其扩充结构,里面包含着消息相关的内容,GetSelectedItem()的功能也可以通过它来得到!参数result指向一个处理结果!
下面的内容是复制的,希望你能看懂!
较之传统的Windows 3.x控件,新的Win32控件更加复杂和先进.在新控件发送通知消息的同时,往往还需要附加一些数据来描述控件的状态.传统的WM_COMMAND消息通知机制显然不能完成这一任务,因为WM_COMMAND消息的wParam和lParam已经被占满了,无法容纳新的数据.所以在Win32中,采用新的WM_NOTIFY消息来实现新控件的消息通知机制.在该消息的wParam中含有控件的ID,lParam中则有一个指针,这个指针指向一个结构.这个结构要么是NMHDR结构,要么是一个以NMHDR结构作为第一个成员的扩充结构.通过NMHDR结构及其扩充结构可以传递附加数据.从理论上讲,可以通过扩充结构传送任意多的数据.需要指出的是,由于NMHDR结构是扩充结构的第一个成员,因此lParam中的指针即可以认为是指向NMHDR结构的,也可以认为指向包含NMHDR结构的扩充结构的.
NMHDR结构如下所示:
typedef struct tagNMHDR {
HWND hwndFrom; //控件窗口的句柄
UINT idFrom; //控件的ID
UINT code; //控件的通知消息码
} NMHDR;
一个典型的扩充结构如下所示,该结构用于列表视图控件的LVN_KEYDOWN通知消息.
typedef struct tagLV_KEYDOWN {
NMHDR hdr; //NMHDR结构作为第一个成员
WORD wVKey;
UINT flags;
} LV_KEYDOWN;
下面的内容是复制的,希望你能看懂!
较之传统的Windows 3.x控件,新的Win32控件更加复杂和先进.在新控件发送通知消息的同时,往往还需要附加一些数据来描述控件的状态.传统的WM_COMMAND消息通知机制显然不能完成这一任务,因为WM_COMMAND消息的wParam和lParam已经被占满了,无法容纳新的数据.所以在Win32中,采用新的WM_NOTIFY消息来实现新控件的消息通知机制.在该消息的wParam中含有控件的ID,lParam中则有一个指针,这个指针指向一个结构.这个结构要么是NMHDR结构,要么是一个以NMHDR结构作为第一个成员的扩充结构.通过NMHDR结构及其扩充结构可以传递附加数据.从理论上讲,可以通过扩充结构传送任意多的数据.需要指出的是,由于NMHDR结构是扩充结构的第一个成员,因此lParam中的指针即可以认为是指向NMHDR结构的,也可以认为指向包含NMHDR结构的扩充结构的.
NMHDR结构如下所示:
typedef struct tagNMHDR {
HWND hwndFrom; //控件窗口的句柄
UINT idFrom; //控件的ID
UINT code; //控件的通知消息码
} NMHDR;
一个典型的扩充结构如下所示,该结构用于列表视图控件的LVN_KEYDOWN通知消息.
typedef struct tagLV_KEYDOWN {
NMHDR hdr; //NMHDR结构作为第一个成员
WORD wVKey;
UINT flags;
} LV_KEYDOWN;
#3
你看NMHDR里面是不是包含了wParam和lParam,所以比以前的好使
#4
LPNMTREEVIEW pItem = (LPNMTREEVIEW)pNMHDR
pItem->itemOld->hItem就被选中的项的句柄,用GetSelectedItem也可以
pItem->itemOld->hItem就被选中的项的句柄,用GetSelectedItem也可以
#5
你只要通过它得到了itme的句柄就好用了.