好的,我有一个 ListView,我刚刚研究了如何手动设置它的回调过程:
// Sets the list view procedure
listproc = (D_ListView *) LocalAlloc(LMEM_FIXED, sizeof(D_ListView));
listproc->oldproc = (WNDPROC)SetWindowLongPtr(g_hList, GWL_WNDPROC, (LONG)&ListViewProc);
SetWindowLongPtr(g_hList, GWL_USERDATA, (LONG)&listproc);
我使用了一个我发现的代码示例 -D_ListView
只是一个struct
带有一个WNDPROC
名为oldproc
.
无论如何,我正在向我的 ListView 发送消息以添加项目。但我不想手动处理 ADD 消息,我想将它们传递给 ListView 的默认过程,并且只处理我需要覆盖其功能的消息。
LRESULT CALLBACK ListViewProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
// Just a test - we're getting this message so it worked
case LVM_INSERTCOLUMN:
{
cout << "CREATED" << endl;
}
}
WNDPROC* wp;
wp = (WNDPROC*)(::GetWindowLongPtr(hwnd, GWL_WNDPROC));
return ::CallWindowProc(*wp, hwnd, msg, wParam, lParam);
}
在上面,我不想处理 LVM_INSERTCOLUMN:我只想传递它。
有谁能帮忙吗?
谢谢,罗伯