MFC--table键的使用详述
来源:互联网 发布:windows无法停止dhcp 编辑:程序博客网 时间:2024/04/30 01:32
首先 新建一个MFC项目,这里基于的是VS2012平台,命名为TabControlDemo,在资源视图的Dialog中添加两个窗口,方法为:右键Dialog->插入Dialog,将ID名分别命名为:IDD_DIALOG_PAGE1和IDD_DIALOG_PAGE2,在属性里做相应的更改,把style改为child,作为子窗口
两者均改完之后,F5运行并没有什么变化:
连最上面的tab都没有,因此想到初始化的时候没加上以下代码,定位到: BOOL CTabControlDemoDlg::OnInitDialog()
中,添加如下代码:
m_tab.InsertItem(0,L"Page 1");//0代表下标 m_tab.InsertItem(1,L"Page 2");
出现的效果就是在上图中加上一行“page 1”和“page 2”
OK,现在为了看到切换的tab效果,在两个Dialog各加上一个静态文本框:“我爱你!!”,“Do you love me?” 现在的问题是,两个窗口只存在于资源视图中,并不是正儿八经存在于程序中,因此还必须添加两个类来使用这两个窗口,点击两个窗口右击分别添加类CDlgPage1和CDlgPage2,可以看出左边的资源管理器相应的改变。 在TabControlDemoDlg.h 中包含相应的头文件`#include "DlgPage1.h" #include "DlgPage2.h"` 添加全局变量:
CDlgPage1 m_page1; CDlgPage2 m_page2;//全局变量
现在要明确的是,要拿着该对象实现子窗口和父窗口的绑定,因此在TabControlDemoDlg.cpp初始化函数中添加以下代码:
m_page1.Create(MAKEINTRESOURCEW(IDD_DIALOG_PAGE1),&m_tab); m_page2.Create(MAKEINTRESOURCEW(IDD_DIALOG_PAGE2),&m_tab); //第一个参数是利用已有的资源进行创建,第二个参数是父窗口,通过这样的方式实现绑定m_page1.ShowWindow(SW_SHOW);
那这样是不是已经实现了该有的功能了呢 ?发现只有初始的page1界面并不能实现切换:
而且发现窗口的尺寸原因,呈现的效果非常差。挡住了整个父窗口。因此还需要通过代码进行控制,如下:
CRect rec; //位置对象,四点决定矩形大小 m_tab.GetClientRect(rec); rec.top+=20;//在上面留一段小空间 m_page1.MoveWindow(rec);//设置两个窗口设置成一样 m_page2.MoveWindow(rec);
空间完美匹配哦,现在还需要解决最后一个问题:切换!
这里通过类向导->添加响应函数void CTabControlDemoDlg::OnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult)//选择状态发生改变时响应该函数
写下如下代码:
switch (m_tab.GetCurSel())//获取当前选中的位置 { case 0: m_page1.ShowWindow(SW_SHOW); m_page2.ShowWindow(SW_HIDE); break; case 1: m_page1.ShowWindow(SW_HIDE); m_page2.ShowWindow(SW_SHOW); break; default: break; }
OK大功告成!
0 0
- MFC--table键的使用详述
- MFC-日期控件DataTime的使用详述
- MFC Table控件的使用
- 详述RegExp的使用
- MFC拆分窗口详述
- MFC生命周期详述
- 详述MySQL中select的使用
- 有关find和xargs的使用详述
- 详述ThreadLocal的设计与使用
- 详述mysql的表连接及其使用
- 详述 IntelliJ IDEA 的使用界面
- 详述 IntelliJ IDEA 的使用界面
- 详述ROWID的原理及其使用
- 详述 IntelliJ IDEA 的使用界面
- MFC加速键的使用
- SWT - Table的使用
- ec:table 的使用
- lua table的使用
- ListView.getChildAt(i) java.lang.NullPointerException
- 计算十进制数转化为2进制数之后中1的个数
- LintCode 删除链表中的元素
- no such device Entering rescue mode grub rescue
- Java中的多态(一)
- MFC--table键的使用详述
- Golang去除slice和list的重复元素
- [LeetCode]111. Minimum Depth of Binary Tree
- ECharts的简单使用过程
- 今天,你学习了吗?
- ACM中关于memset的用法几点
- 文章标题
- 完美的代价——回文字符串
- javascript时间格式format函数,js日期格式化函数