关于SetWindowLongPtr在类中使用时报错

菜码农 2014-03-08 07:04:13
非MFC程序来的。
直接使用SetWindowLongPtr,按钮事件能正常回调,代码如下:

treMouse_close.cbSize = sizeof(TRACKMOUSEEVENT);
treMouse_close.hwndTrack = hwndClose;
treMouse_close.dwFlags = TME_HOVER | TME_LEAVE ;
treMouse_close.dwHoverTime = 10000;
_TrackMouseEvent(&treMouse_close);
btnOld_close = (WNDPROC)SetWindowLongPtr(hwndClose, GWLP_WNDPROC, (LONG_PTR)closeButtonSubclassProc);


因为创建的按钮多起来,所以想把按钮封装到类里,结果把以上函数放到类里时,编译就报错:
> : error C2440: “类型转换”: 无法从“LRESULT (__stdcall iButton::* )(HWND,UINT,WPARAM,LPARAM)”转换为“LONG_PTR”
> : 没有使该转换得以执行的上下文

请问SetWindowLongPtr在类中使用是不是有什么注册事项?
或者需要怎样使用才能正常编译
...全文
172 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
真相重于对错 2014-03-08
  • 打赏
  • 举报
回复
不能把非静态类成员函数付给它
gfm688 2014-03-08
  • 打赏
  • 举报
回复
用这个转换: template <class ToType, class FromType> ToType union_cast (FromType f) { union { FromType _f; ToType _t; } ut; ut._f = f; return ut._t; } union_cast<LONG_PTR>closeButtonSubclassProc 不过让你编译过了,估计也不能运行,需要用Thunk才行 还是用静态成员函数吧
菜码农 2014-03-08
  • 打赏
  • 举报
回复
那有没有办法非MFC的按钮类呢?都搜过,怎么就没有相关资料
Windows API 一日一练(1)第一个应用程序 ---------------------------------------------------------------3 Windows API 一日一练(2)使用应用程序句柄------------------------------------------------------------4 Windows API 一日一练(3)使用命令行参数 ---------------------------------------------------------------6 Windows API 一日一练(4)MessageBox函数--------------------------------------------------------9 Windows API 一日一练(5)RegisterClass 和 RegisterClassEx 函数---------------11 Windows API 一日一练(6)CreateWindow 函数 -------------------------------------------------14 Windows API 一日一练(7)ShowWindow 函数 ---------------------------------------------------17 1 Windows API 一日一练(8)UpdateWindow 函数------------------------------------------------18 Windows API 一日一练(9)WindowProc 和 DefWindowProc 函数-----------------20 Windows API 一日一练(10)LoadAccelerators 函数------------------------------------------22 Windows API 一日一练(11)GetMessage 函数----------------------------------------------------24 Windows API 一日一练(12)TranslateAccelerator 函数-----------------------------------26 Windows API 一日一练(13)TranslateMessage 函数----------------------------------------28 Windows API 一日一练(14)DispatchMessage 函数------------------------------------------30 Windows API 一日一练(15)PostQuitMessage 函数------------------------------------------32 Windows API 一日一练(16)BeginPaint 和 EndPaint 函数 -------------------------------34 Windows API 一日一练(17)DialogBox 和 DialogBoxParam 函数------------------36 Windows API 一日一练(18)EndDialog 函数--------------------------------------------------------39 Windows API 一日一练(19)DestroyWindow 函数 --------------------------------------------40 Windows API 一日一练(20)LoadString、LoadIcon 和 LoadCursor 函数-----42 Windows API一日一练(21)SetWindowLongPtr 和 GetWindowLongPtr 函数

15,979

社区成员

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

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