|
3驿站币
本帖最后由 q3326937 于 2019-1-21 23:01 编辑
- class MyTab
- {
- public:
- HWND tHwnd = 0, oldHwnd = 0; //主窗口句柄 、上一个标签句柄
- HWND tOption[256]; //标签页句柄表
- int OptionNum = 0, CurrentOption = 0; //已添加标签数、当前标签索引
- private:
- public:
- BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
- {
- return 0;
- }
- void Binding_window(HWND dwHWND)//绑定主窗口
- {
- tHwnd = dwHWND;
- }
- void Add_Option(HWND Parent)//增加选项卡
- {
- tOption[OptionNum] = Parent;
- OptionNum++;
- }
- bool Switch_Option(int dwOption)//切换指定选项卡
- {
- return 0;
- }
- int GetOptionMax()//获取选项卡数量
- {
- return OptionNum;
- }
- int GetCurrentOption()//获取当前选项卡索引
- {
- return CurrentOption;
- }
- void LoadOption(int Option)//执行绑定主窗口、增加选项卡后调用该句初始化
- {
- RECT *pRect = new RECT[OptionNum];
- for (int Index = 0; Index < OptionNum; Index = Index + 1)
- {
- GetWindowRect(tOption[Index], &pRect[Index]);
- }
- EnumChildWindows(tHwnd, EnumChildProc, (LPARAM)&pRect);
- delete[] pRect;
- }
- };
复制代码
想自己做一个标签选项卡的处理类,思路是每个选项卡的组件放置在一个父组件的尺寸范围内,通过增加选项卡来加入这个父组件的句柄,然后处理的时候判断,组件在哪个父组件的位置内直接设置父句柄,再隐藏显示,切换的时候就直接把父组件变成可视
这里EnumChildWindows(tHwnd, EnumChildProc, (LPARAM)&pRect);第二个参数的函数体我把它放在类外面就没问题,放在类里面加上MyTab::函数还是不行,有什么办法解决吗?
|
最佳答案
查看完整内容
EnumChildProc 本身是一个回调函数,所以你声明成类的普通成员函数是不行的,可以试着把 EnumChildProc 函数声明成类的静态成员函数就可以了!
关键点就在于 this,我只能提示到这儿了,剩下的楼主自己再琢磨琢磨
上一篇: 不是有效的win32应用程序下一篇: 关于在VS中是否可以利用C++生成条形码的问题
|