SetWindowLong问题

johntang 2014-02-01 03:31:49
我给一个listctrl设置响应函数

LRESULT CALLBACK clvwinprc(HWND hWnd, UINT Msg,WPARAM wParam,LPARAM lParam)
{
...
}

SetWindowLong(clv.hwnd, GWL_WNDPROC, clvwinprc);

编译时提示错误:不能将参数 3 从“LONG (__cdecl *)(HWND,UINT,WPARAM,LPARAM)”转换为“LONG”
这个问题怎样解决?
...全文
192 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
johntang 2014-02-01
  • 打赏
  • 举报
回复
我用getlasterror() 返回1413, Invalid index. ERROR_INVALID_INDEX
johntang 2014-02-01
  • 打赏
  • 举报
回复
谢谢,编译通过了,可是运行后不调用clvwinprc,这为什么?
screen12 2014-02-01
  • 打赏
  • 举报
回复
SetWindowLong这个函数可以设置窗口的很多参数,这些参数类型各不相同,所以在设置的时候,大多需要进行类型的强制转换。
screen12 2014-02-01
  • 打赏
  • 举报
回复
那是因为SetWindowLong的第三个参数本来就是LONG型,而你输入的却是一个函数指针,当然不行了。 解决办法:强制转换一下就是了: SetWindowLong(clv.hwnd, GWL_WNDPROC, (LONG)clvwinprc);

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧