tab封装MFC

#pragma once
#include <vector>
using  std::vector;

// CMyTabCtrl

class CMyTabCtrl : public CTabCtrl
{
    DECLARE_DYNAMIC(CMyTabCtrl)

public:
    CMyTabCtrl();
    virtual ~CMyTabCtrl();
    //     m_ctrlTab.InsertDlg(5,
    //         L"呵呵1", ID_DLGA, &DlgA,
    //         L"呵呵2", ID_DLGB, &DlgB,
    //         L"呵呵3", ID_DLGC, &DlgC,
    //         L"呵呵4", ID_DLGD, &DlgD,
    //         L"呵呵5", ID_DLGE, &DlgE, );

    void  InsertDlg(DWORD  dwCount, ...)
    {
        va_list  vl;
        va_start(vl, dwCount);
        TCHAR* szName = NULL;
        DWORD dwId = 0;
        CDialogEx* pDlg = NULL;
        CRect  rt = {};
        GetClientRect(rt);
        rt.DeflateRect(1, 23, 1, 1);
        for (DWORD i = 0; i < dwCount;i++)
        {
            // 获取选项的名字
            szName = va_arg(vl, TCHAR*);
            //获取对话框的ID
            dwId = va_arg(vl, DWORD);
            //获取子对话框的对象指针
            pDlg = va_arg(vl, CDialogEx*);
            //添加一项
            InsertItem(i, szName);
            //创建子窗口
            pDlg->Create(dwId, this);
            pDlg->MoveWindow(rt, TRUE);
            m_vecDlg.push_back(pDlg);
        }
        m_vecDlg[0]->ShowWindow(SW_SHOW);
        va_end(vl);
    }

    vector<CDialogEx*> m_vecDlg;

protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult);
};
// MyTabCtrl.cpp : 实现文件
//

#include "stdafx.h"
#include "01 Tab控件的封装.h"
#include "MyTabCtrl.h"

// CMyTabCtrl

IMPLEMENT_DYNAMIC(CMyTabCtrl, CTabCtrl)

CMyTabCtrl::CMyTabCtrl()
{

}

CMyTabCtrl::~CMyTabCtrl()
{
}

BEGIN_MESSAGE_MAP(CMyTabCtrl, CTabCtrl)
    ON_NOTIFY_REFLECT(TCN_SELCHANGE, &CMyTabCtrl::OnTcnSelchange)
END_MESSAGE_MAP()

// CMyTabCtrl 消息处理程序

//注意:反射消息,用以处理当选项改变时,窗口的显式隐藏问题
void CMyTabCtrl::OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult)
{
    // TODO:  在此添加控件通知处理程序代码
    int nSel = GetCurSel();
    for (int i = 0; i < m_vecDlg.size();i++)
    {
        //找到被选择的项,将其显示出来
        if (i == nSel)
        {
            m_vecDlg[i]->ShowWindow(SW_SHOW);
        }
        //非选择项,将其隐藏
        else
        m_vecDlg[i]->ShowWindow(SW_HIDE);
    }
    *pResult = 0;
}
    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);            // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    // TODO:  在此添加额外的初始化代码
         m_ctrlTab.InsertDlg(4,
             L"呵呵1", IDD_DLGA, new CDlgA,
            L"呵呵2", IDD_DLGB, new CDlgB,
            L"呵呵3", IDD_DLGC, new CDlgC,
            L"呵呵4", IDD_DLGD,new CDlgD);
时间: 2024-08-07 12:04:30

tab封装MFC的相关文章

tab封装2

// MyTabCtrl.cpp : 实现文件 // #include "stdafx.h" #include "FileCleaner.h" #include "MyTabCtrl.h" // CMyTabCtrl IMPLEMENT_DYNAMIC(CMyTabCtrl, CTabCtrl) CMyTabCtrl::CMyTabCtrl() { } CMyTabCtrl::~CMyTabCtrl() { } //参数列表 //第1个位子窗口个

VC++编程之第三课笔记——MFC窗口创建过程以及窗口类的封装

第三课 MFC窗口创建过程以及窗口类的封装 MFC的每一个类都是以C开头的,表明这是一个Class. 工程包含(单文档) 创建工程名为aaa的工程(单文档)时,在类视图中可看见五个类: CAboutDlg CMainFrame CAaaApp CAaaDoc CAaaView 其中: 类CAboutDlg继承自CDialog类,对话框的类 类CMainFrame继承自CFrameWnd类,创建整个程序的框架窗口 类CAaaApp继承自CWinApp类,创建唯一的应用程序对象 类CAaaDoc继承

MFC总结

一MFC 的概念和作用 1 什么是MFC? 全称Microsoft Foundation Class Library 我们称之为 微软基础类库,封装了绝大部分WIN32 api 函数,还封装 了程序流程. 1.1 硬盘存在形式就是一个库(静态库/动态库) 1.2 原理上还是一个程序框架 2 为什么使用MFC? 基于框架编程,提供工作效率,减少开发周期,节约开发 成本. 二几个重要头文件 afx.h - MFC 绝大部分类的声明 afxwin.h - 包含了afx.h 和windows.h afx

【转载】ATL问题集

原文:http://blog.csdn.net/fengrx/article/details/4171629 这些问题是以前在csdn当版主是一些朋友整理的,今天找到了,贴到这里来! #1 如何使用控件不能改变大小? 答:有时我们需要创建不可改变大小的控件,像那种在运行时没有界面的控件(例:时间控件,SysInfo 等),想做到这种功能的话,请把以下代码加入到控件类的构造函数: m_bAutoSize = TRUE; SIZEL size = {24, 24}; AtlPixelToHiMetr

GDI+编程小结

GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息. GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选. 一.              GDI+的特点和新增功能 GDI+与GDI一样,都具有设备无关性.应用程序的程序员可利用GDI+这样

机器视觉项目基础框架

一.背景 ?              虽然OPENCV是可以在多平台下面运行,并且通过封包(DLL)的形式,可以被多种程序所调用,但是在windows平台下面,OPENCV和MFC程序一起使用还是最常见,也是功能最强大的.这里搭建基础的MFC+OPENCV框架,为在此之上进行机器视觉设计奠定基础.在实现的过程中,有许多选择是由于自己的偏好和习惯,请辩证分析. 二.MFC部分具体设计实现 1)创建MFC对话框程序 2)添加并且设计menu,挂在主窗体上 3)添加tab并且编写内容,创建对应成员变

初识MFC----MFC简介

一.MFC的概念和作用 1.什么是MFC? 全称:Microsoft Foundation Class Library(微软基础类库) 1-MFC从硬盘存在形式来说就是一个库(静态MFC库.动态MFC库) 2-MFC从原理来说还是一个程序框架 2.为什么使用MFC? 基于框架编程,提高工作效率,减少开发周期,降低开发成本. 二.几个重要的头文件 afx.h--包含了MFC中绝大部分类的声明 afxwin.h--包含了afx.h和windows.h afxext.h--提供了对扩展类的支持,例如:

windows程序设计(三)

MFC所有封装类一共200多个,但在MFC的内部技术不只是简单的封装 MFC的内部总共有六大关键技术,架构起了整个MFC的开发平台 一.MFC的六大关键技术包括: a).MFC程序的初始化过程 b).消息映射机制 c).运行时类型识别(RTTI) d).动态创建 e).永久保存 f).消息传递 六大关键技术的目的是为了提高开发效率,开发者只要在局部做简单的修改,即可处理大部分窗口事物 二.SendMessage和PostMessage函数的功能 a).能够向指定的窗口内发送窗口消息.既可以是本进

js封装tab标签页

1 <html> 2 <head> 3 <title></title> 4 <meta charset="UTF-8"> 5 <style> 6 *{ padding:0; margin:0;} 7 .block{ display:block;} 8 .none{ display:none;} 9 #wrap,#wraps{ width:500px; height:230px; overflow:hidden; m