动态创建TabCtrl控件的用法
2012-08-02 19:50
197 查看
TabCtrl控件可以通过对话框方式直接采用控件静态添加,但是有时候需要去动态创建一个TabCtrl控件,本文是在CFormView上动态创建TabCtrl控件:
1、添加CTabCtrl类的对象:
2、为TabCtrl控件添加页面,本文创建两个对话框:
CDialog1 m_page1;
CDialog2 m_page2;
3、在资源视图中为m_tabCtrl设置资源ID:
方法:右键资源,选择Resource Symbols,然后弹出资源ID对话框,添加CTabCtrl资源ID号:IDC_TABCTRL;
4、WM_CREATE消息响应,在OnCreate(...)函数中添加如下代码:
1)在CFormView的cpp文件中的BEGIN_MESSAGE_MAP......END_MESSAGE_MAP()之间加入:ON_NOTIFY(TCN_SELCHANGE,IDC_TABCTRLDOWN,OnSelChangeTab)
2)在在CFormView的h文件中的{{AFX_MSG(CFormViewDown).....//}}AFX_MSG之间加入:afx_msg void OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult);
3)实现OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult)
1、添加CTabCtrl类的对象:
CTabCtrl m_tabCtrl;
2、为TabCtrl控件添加页面,本文创建两个对话框:
CDialog1 m_page1;
CDialog2 m_page2;
3、在资源视图中为m_tabCtrl设置资源ID:
方法:右键资源,选择Resource Symbols,然后弹出资源ID对话框,添加CTabCtrl资源ID号:IDC_TABCTRL;
4、WM_CREATE消息响应,在OnCreate(...)函数中添加如下代码:
//得到窗口的大小 CRect rec; GetClientRect(&rec); //创建tabCtrl控件 m_tabCtrl.Create(TCS_TABS|WS_CHILD|WS_VISIBLE,rec,this,IDC_TABCTRL); //添加控件按钮名称 m_tabCtrl.InsertItem(0,"车辆信息列表"); m_tabCtrl.InsertItem(1,"地图列表"); //对话框页面 m_page1.Create(IDD_DIALOG1,GetDlgItem(IDC_TABCTRL)); m_page2.Create(IDD_DIALOG2,GetDlgItem(IDC_TABCTRL)); //显示第一个页面 m_carList.ShowWindow(SW_SHOW); //设置第一个页面显示 m_tabCtrl.SetCurSel(0);5、WM_SIZE消息响应,该函数是为了使得页面布局和FormView页面大小相同,不然会出现空闲部分,显得布局很不美观,在对应的函数中添加如下代码:
m_tabCtrl.MoveWindow(0,0,cx,cy); m_page1.MoveWindow(0,25,cx,cy); m_page2.MoveWindow(0,25,cx,cy);6、TabCtrl控件TCN_SELCHANGE消息响应,这里并没有静态的TabCtrl控件,所以需要动态添加,方法如下:
1)在CFormView的cpp文件中的BEGIN_MESSAGE_MAP......END_MESSAGE_MAP()之间加入:ON_NOTIFY(TCN_SELCHANGE,IDC_TABCTRLDOWN,OnSelChangeTab)
2)在在CFormView的h文件中的{{AFX_MSG(CFormViewDown).....//}}AFX_MSG之间加入:afx_msg void OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult);
3)实现OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult)
void CFormViewDown::OnSelChangeTab(NMHDR *pNMHDR,LRESULT *pResult) { //获取所选择的页面 int nCurSel = m_tabCtrl.GetCurSel(); if(nCurSel == 0) { //页面一显示,页面二隐藏 m_page1.ShowWindow(SW_SHOW); m_page2.ShowWindow(SW_HIDE); } else if(nCurSel == 1) { ////页面二显示,页面一隐藏 m_driverInfo.ShowWindow(SW_SHOW); m_carInfo.ShowWindow(SW_HIDE); } *pResult = 0; }
相关文章推荐
- 在Asp.net Ajax中动态创建TabPanel控件中碰到的一个问题
- 创建动态控件和动态事件
- C#中动态创建控件及事件处理程序
- android 动态创建控件并设置布局
- 代码创建一个居中的按钮(动态创建控件)
- MFC中创建动态控件的生成与响应
- 控件的动态创建-SDK方式
- VS2003 C#:重写键盘响应事件、动态创建控件、创建线程、在线程中使用委托在界面显示数据
- MFC动态创建控件(按钮)及添加消息响应
- Web 页面动态创建ASP控件
- C#动态创建控件之事件响应(刚刚答复提问,正好一并录之)
- 一步一步学List Control控件的用法(第一步)----创建第一列 .
- 基于ASP.NET的Web动态控件创建
- MFC中动态创建列表控件及其刷新重绘的方法
- 利用JS动态创建html控件并在后台实现取值
- 动态创建控件
- XIB创建的cell中的已经适配过的控件如何动态改变高度?
- 总结Asp.net中Page加载PostData的具体过程 进而解决"获取动态创建的控件的PostData数据"问题
- android 动态创建控件并设置布局
- 动态创建 ASP.NET Web 服务器控件模板(出自MSDN)