社区
界面
帖子详情
各位帮帮忙 关于CTabCtrl
zhangsen_817
2004-08-14 04:22:41
各位,我想求一些关于CTabCtrl方面的资料,初学的新手,手边的书上没有介绍,网上又找不到初级的教程,我就是想做一个有3个标签的标签框,每个页面里有几个控件供选择,然后把结果传出来,就这么简单,大家推荐一下拉!谢谢各位。
...全文
139
3
打赏
收藏
各位帮帮忙 关于CTabCtrl
各位,我想求一些关于CTabCtrl方面的资料,初学的新手,手边的书上没有介绍,网上又找不到初级的教程,我就是想做一个有3个标签的标签框,每个页面里有几个控件供选择,然后把结果传出来,就这么简单,大家推荐一下拉!谢谢各位。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
miladuo
2004-09-03
打赏
举报
回复
谢谢,我按照你的方法作了一遍,非常好。
lixiaosan
2004-08-14
打赏
举报
回复
同意楼上的
1、首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在一起,这里设为m_tabctrl
2、创建两个新的对话框资源,其属性作如下修改:
Border:none //边界为空,这样它就没了标题栏
Style :Child // 这样这个模板就可以当作另一个窗口的子窗口了。
其它如果没有必要,就不用改了。
在上面加一些控件什么的,具体操作跟普通对话框没有区别。
完成后从这两个对话框模板生成两个新的对话框类。
3、在主对话框中为新添加进来的两个类增加两个变量:
如:CDialog1 m_mm1;
CDialog2 m_mm2;
4、在主对话框的OnInitDialog()函数中添加如下类似的代码:
TCITEM item;
item.mask = TCIF_TEXT;
item.pszText = "第一页";
m_tabctrl.InsertItem (0,&item);
item.pszText ="第二页";
m_tabctrl.InsertItem (1,&item);
m_mm1.Create (IDD_DIALOG1,&m_tabctrl);
m_mm2.Create (IDD_DIALOG2,&m_tabctrl);
m_mm1.SetWindowPos (NULL,10,30,400,100,SWP_SHOWWINDOW);
m_mm2.SetWindowPos (NULL,10,30,400,100,SWP_HIDEWINDOW );
解释如下:
两个InsertItem函数的调用是为了给标签控件增加两个标签页面,文本是标题。
SetWindowPos()函数设置这两个对话框在Z顺序中的位置,显示或隐藏状态.。
5、在主对话中为标签控件添加一个标签选择改变(TCN_SELCHANGE)的控件通知消息,以便在用户选择标签时通知主对话框。在主对话框的编辑界面右击标签控件,选择添加一个事件可以完成这个操作。
在事件处理中添加如下代码,如下例:
void CtabdialogDlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)
{
CRect r;
m_tabctrl.GetClientRect (&r);
switch(m_tabctrl.GetCurSel())
{
case 0:
m_mm1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW);
m_mm2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW );
break;
case 1:
m_mm1.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_HIDEWINDOW);
m_mm2.SetWindowPos (NULL,10,30,r.right -20,r.bottom -40,SWP_SHOWWINDOW );
break;
}
*pResult = 0;
}
要想知道用户选择那个标签页,要通过m_tabctrl.GetCurSel() 函数。为了不使显示的子对话框覆盖标签控件的显示,所以要获得标签控件的尺寸然后设置各页面的尺寸。
flyelf
2004-08-14
打赏
举报
回复
使用CPropertySheet/CPropertyPage比较简单的就能实现这个功能
基础
各位兄弟,在SDK编程中如果实现窗口分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?高分请教如何限制程序运行的方法?求助:通过编程DirectX抓屏-----...
UI和其他
小问题,关于树控件,选中的问题?就是怎么得到当前选中项怎样在标题栏上添加自己的button或其他控件请问显示桌面按钮触发的Windows消息是什么?哪位有像Windows2000任务管理器中性能的那个曲线图的源代码。控件中如何...
CSDN回帖得分大全(近两年)
求在PC上通过手机USB数据线发送短信的VC++源码 哪位大侠
帮帮忙
[VC/MFC 硬件/系统] √ CHTMLView 或其它的方式可以让超链接打开的是一个Dialog(VC)吗? [VC/MFC 界面] √ google移师,baidu扯蛋 [VC/MFC 非技术类] √...
在对话框中加入属性页
本文共使用了5种方法在对话框中加属性页,当然应该还有其他方法,当本人水平有限,如果各位读者有更好的方法,可不要忘了告诉我。 最新评论 [发表评论] [文章投稿] 查看所有评论 推荐给...
VC常用小知识
[转]VC常用小知识 (1) 如何通过代码获得应用程序主窗口的 指针? 主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. ...
界面
15,979
社区成员
115,896
社区内容
发帖
与我相关
我的任务
界面
VC/MFC 界面
复制链接
扫一扫
分享
社区描述
VC/MFC 界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章