VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 550|回复: 2

类方法的疑问

[复制链接]
34_avatar_middle
最佳答案
0 
在线会员 发表于 2019-1-21 22:58:42 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 q3326937 于 2019-1-21 23:01 编辑
  1. class MyTab
  2. {
  3. public:
  4.         HWND tHwnd = 0, oldHwnd = 0;                        //主窗口句柄 、上一个标签句柄
  5.         HWND tOption[256];                                                //标签页句柄表
  6.         int OptionNum = 0, CurrentOption = 0;        //已添加标签数、当前标签索引

  7. private:

  8. public:
  9.         BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
  10.         {
  11.                 return 0;
  12.         }
  13.         void Binding_window(HWND dwHWND)//绑定主窗口
  14.         {
  15.                 tHwnd = dwHWND;
  16.         }
  17.         void Add_Option(HWND Parent)//增加选项卡
  18.         {
  19.                 tOption[OptionNum] = Parent;
  20.                 OptionNum++;
  21.         }
  22.         bool Switch_Option(int dwOption)//切换指定选项卡
  23.         {
  24.                 return 0;
  25.         }
  26.         int GetOptionMax()//获取选项卡数量
  27.         {
  28.                 return OptionNum;
  29.         }
  30.         int GetCurrentOption()//获取当前选项卡索引
  31.         {
  32.                 return CurrentOption;
  33.         }
  34.         void LoadOption(int Option)//执行绑定主窗口、增加选项卡后调用该句初始化
  35.         {
  36.                 RECT *pRect = new RECT[OptionNum];
  37.                 for (int Index = 0; Index < OptionNum; Index = Index + 1)
  38.                 {
  39.                         GetWindowRect(tOption[Index], &pRect[Index]);
  40.                 }
  41.                 EnumChildWindows(tHwnd, EnumChildProc, (LPARAM)&pRect);
  42.                 delete[] pRect;
  43.         }
  44. };
复制代码



想自己做一个标签选项卡的处理类,思路是每个选项卡的组件放置在一个父组件的尺寸范围内,通过增加选项卡来加入这个父组件的句柄,然后处理的时候判断,组件在哪个父组件的位置内直接设置父句柄,再隐藏显示,切换的时候就直接把父组件变成可视

这里EnumChildWindows(tHwnd, EnumChildProc, (LPARAM)&pRect);第二个参数的函数体我把它放在类外面就没问题,放在类里面加上MyTab::函数还是不行,有什么办法解决吗?

最佳答案

查看完整内容

EnumChildProc 本身是一个回调函数,所以你声明成类的普通成员函数是不行的,可以试着把 EnumChildProc 函数声明成类的静态成员函数就可以了! 关键点就在于 this,我只能提示到这儿了,剩下的楼主自己再琢磨琢磨




上一篇:不是有效的win32应用程序
下一篇:关于在VS中是否可以利用C++生成条形码的问题
81_avatar_middle
最佳答案
3 
online_supermod 发表于 2019-1-21 22:58:43 | 显示全部楼层
EnumChildProc 本身是一个回调函数,所以你声明成类的普通成员函数是不行的,可以试着把 EnumChildProc 函数声明成类的静态成员函数就可以了!类方法的疑问
关键点就在于 this,我只能提示到这儿了,剩下的楼主自己再琢磨琢磨
34_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2019-1-22 00:12:19 | 显示全部楼层
Debug 发表于 2019-1-21 23:08
EnumChildProc 本身是一个回调函数,所以你声明成类的普通成员函数是不行的,可以试着把 EnumChildProc 函 ...

谢谢版主,解决了
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-27 19:34

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表