利用CTabCtrl控件在一个对话框切换多个其他的对话框
来源:互联网 发布:远东电缆营销网络 编辑:程序博客网 时间:2024/05/21 06:13
利用CTabCtrl控件切换多个对话框。
(CTabCtrl控件所处在的对话框类名为CBack,其他切换的四个对话框类名分别为:CmytsetDlg (通知),CStudent (学生考试成绩情况),CAddExam(试题管理系统),CMy (学生在线考试情况)
注意:以上4个各类窗口都需要进行以下属性设置:属性名为"Style"设置为“child”.(如果不设置,就不能实现切换窗口的功能)
以下是含有CTabCtrl控件的窗口的代码实现:(CTabCtrl控件变量名:m_BackTab)
Back.h
#pragma once// CBack 对话框#include "My.h"#include "Student.h"#include "mytsetDlg.h"#include "afxcmn.h"#include "AddExam.h"class CBack : public CDialogEx{DECLARE_DYNAMIC(CBack)public:CBack(CWnd* pParent = NULL); // 标准构造函数virtual ~CBack();CmytsetDlg *SeverbDlg;CStudent *Student;CAddExam *AddExam;CMy *my;// 对话框数据enum { IDD = IDD_DIALOG1 };protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持DECLARE_MESSAGE_MAP()public:CTabCtrl m_BackTab;virtual BOOL OnInitDialog();afx_msg void OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult);afx_msg void OnPaint();};
Back.cpp
// Back.cpp : 实现文件//#include "stdafx.h"#include "mytset.h"#include "Back.h"#include "afxdialogex.h"// CBack 对话框IMPLEMENT_DYNAMIC(CBack, CDialogEx)CBack::CBack(CWnd* pParent /*=NULL*/): CDialogEx(CBack::IDD, pParent){//初始化new出各类的对象SeverbDlg = new CmytsetDlg;Student = new CStudent;my = new CMy;AddExam = new CAddExam;}CBack::~CBack(){}void CBack::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDC_TAB1, m_BackTab);}BEGIN_MESSAGE_MAP(CBack, CDialogEx)ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, &CBack::OnTcnSelchangeTab1)ON_WM_PAINT()END_MESSAGE_MAP()// CBack 消息处理程序BOOL CBack::OnInitDialog(){CDialogEx::OnInitDialog();// TODO: 在此添加额外的初始化m_BackTab.InsertItem(0, _T("通告"));//按照0到3顺序插入标题,0为第一个窗口m_BackTab.InsertItem(1, _T("试题管理系统"));m_BackTab.InsertItem(2, _T("学生考试成绩情况"));m_BackTab.InsertItem(3, _T("学生在线考试情况"));m_BackTab.SetCurSel(0);//默认设置显示哪个窗口CRect rect;m_BackTab.GetClientRect(rect);rect.DeflateRect(1, 30, 2, 2);//各个窗口绑定列表框SeverbDlg->Create(IDD_MYTSET_DIALOG, &m_BackTab); Student->Create(IDD_DIALOG2, &m_BackTab);my->Create(IDD_DIALOG3, &m_BackTab);AddExam->Create(IDD_AddExam, &m_BackTab);SeverbDlg->MoveWindow(rect);SeverbDlg->ShowWindow(SW_SHOW);//初始时候,首要显示的对话框return TRUE; // return TRUE unless you set the focus to a control// 异常: OCX 属性页应返回 FALSE}//该消息函数在资源视图直接鼠标右键,双击ListCtrl控件而产生void CBack::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESULT *pResult){//切换功能实现// TODO: 在此添加控件通知处理程序代码CRect rect;m_BackTab.GetClientRect(rect);rect.DeflateRect(1, 30, 2, 2);int i = m_BackTab.GetCurSel();SeverbDlg->ShowWindow(SW_HIDE);AddExam->ShowWindow(SW_HIDE);Student->ShowWindow(SW_HIDE);my->ShowWindow(SW_HIDE);switch (i){case 0:{SeverbDlg->MoveWindow(rect);SeverbDlg->ShowWindow(SW_SHOW);AddExam->ShowWindow(SW_HIDE);Student->ShowWindow(SW_HIDE);my->ShowWindow(SW_HIDE);break;}case 1:{AddExam->MoveWindow(rect);AddExam->ShowWindow(SW_SHOW);Student->ShowWindow(SW_HIDE);SeverbDlg->ShowWindow(SW_HIDE);my->ShowWindow(SW_HIDE);break;}case 2:{Student->MoveWindow(rect);Student->ShowWindow(SW_SHOW);AddExam->ShowWindow(SW_HIDE);SeverbDlg->ShowWindow(SW_HIDE);my->ShowWindow(SW_HIDE);break;}case 3:{my->MoveWindow(rect);my->ShowWindow(SW_SHOW);AddExam->ShowWindow(SW_HIDE);SeverbDlg->ShowWindow(SW_HIDE);Student->ShowWindow(SW_HIDE);break;}}*pResult = 0;}
效果如图:
阅读全文
0 0
- 利用CTabCtrl控件在一个对话框切换多个其他的对话框
- MFC多个控件在对话框上的大小变化
- 利用命令切换CTabCtrl控件的Tab页面
- CTabCtrl在配置对话框中的应用
- 利用命令切换Tab控件 CTabCtrl
- 对话框到子控件的切换
- 一个对话框调用另一个对话框的控件值
- 动态改变CTabCtrl上的对话框(恢复初始状态)
- MFC创建嵌入式对话框,实现切换不同的对话框在主对话框指定位置
- 如何使用CTabCtrl来实现多页面属性对话框?
- [转]如何使用CTabCtrl来实现多页面属性对话框?
- 在一个对话框中访问另一个对话框的变量
- 获取控件在对话框上的坐标
- 利用tab_control控件在对话框中加入属性页的方法详细介绍
- android其他类型的对话框
- 如何在WINFORM中弹出一个又控件的对话框 能给个简单的示范C#代码吗 以及一些小问题 菜鸟想学
- 如何在WINFORM中弹出一个又控件的对话框 能给个简单的示范C#代码吗 以及一些小问题 菜鸟想学
- 在一个对话框中显示另一个对话框
- vb.net 初始屏幕界面透明实现方法
- java中instanceof用法
- ECMAScript6中箭头函数的用法
- 数据分析学习笔记
- 欢迎使用CSDN-markdown编辑器
- 利用CTabCtrl控件在一个对话框切换多个其他的对话框
- 地图显示----地图显示
- c++11之单例模式
- 百亿互金平台技术栈大起底
- U-Boot中ARM协处理器CP15的操作分析
- Spring思维导图,让Spring不再难懂(ioc篇)
- 6. 树--二叉搜索树
- 7.4在东软
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结