tab封装2

// MyTabCtrl.cpp : 实现文件
//

#include "stdafx.h"
#include "FileCleaner.h"
#include "MyTabCtrl.h"

// CMyTabCtrl

IMPLEMENT_DYNAMIC(CMyTabCtrl, CTabCtrl)

CMyTabCtrl::CMyTabCtrl()
{

}

CMyTabCtrl::~CMyTabCtrl()
{
}
//参数列表
//第1个位子窗口个数
//后面依次为:窗口名、基类指针、ID
void CMyTabCtrl::Insert(int nCount...)
{//获取客户区尺寸
    CRect RC = {};
    GetClientRect(&RC);
    RC.DeflateRect(1, 30, 1, 1);
    va_list vl;
    va_start(vl, nCount);
    for (int i = 0; i < nCount; i++)
    {//插入窗口名,创建新窗口
        InsertItem(i, va_arg(vl, WCHAR*));
        m_pDlg[i] = va_arg(vl, CDialogEx*);
        int ID = va_arg(vl, int);
        m_pDlg[i]->Create(MAKEINTRESOURCE(ID), this);
        m_pDlg[i]->MoveWindow(RC);
    }
    m_pDlg[0]->ShowWindow(SW_SHOW);
    va_end(vl);
}

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 n = GetCurSel();
    for (int i = 0; i < 2;i++)
    {
        if (i == n)
        {
            m_pDlg[i]->ShowWindow(SW_SHOW);
            continue;
        }
        m_pDlg[i]->ShowWindow(SW_HIDE);
    }
    *pResult = 0;
}
#pragma once

// CMyTabCtrl

class CMyTabCtrl : public CTabCtrl
{
    DECLARE_DYNAMIC(CMyTabCtrl)

public:
    CMyTabCtrl();
    virtual ~CMyTabCtrl();
    void Insert(int nCount...);
    CDialogEx *m_pDlg[2];
protected:
    DECLARE_MESSAGE_MAP()
public:
    afx_msg void OnTcnSelchange(NMHDR *pNMHDR, LRESULT *pResult);
};
时间: 2024-10-22 22:41:36

tab封装2的相关文章

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&quo

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

JS-【同页面多次调用】tab选项卡封装

这两天遇到一个页面,同一个页面中同一个特效会用好多次,比如tab,比如轮播等.我又不想很不负责任的复制一遍代码,那样页面臃肿,自己心里也堵得慌.于是就想着把代码封装起来多次调用. 对于封装,只在公开课看过一个老师操作,自己也是啥也不懂得. 好歹最后在群里大神的指导下,一步一步的由简致难完善了.就上最后的版本吧,中间的迭代版,,也只是方便以后封装其他的话参考用. 最后的总结就是,一口吃不成个胖子,我前两天一直想的是封装起来,就从最难的代码开始捣鼓,捣鼓半天把自己都绕晕了.程序这回事,你思路比电脑清

在DLL中封装的VCL窗体Tab键响应的问题

在DLL中的子窗体不会响应Tab按键的,这个时候就需要手动去指定Tab键的操作,但是前提是主窗体要向这个窗体发送一个消息,一个Tab键按下的消息.基本顺序是这样的: 1. 主窗体用Hook技术捕获Tab按键并向活动子窗体发送一个Tab键按下的消息 2. 子窗体手动定义一个Tab键被按下的处理(需要用到FormKeyDown事件). 3. 移动到下一个焦点的WinAPI函数:Perform(WM_NEXTDLGCTL,0,0); 4.移动到上一个焦点的函数:Perform(WM_NEXTDLGCT

tab 插件封装

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

tab栏切换原型封装------彭记(013)

tab栏切换原型封装 <body> <div class="wrapper" id="wrapper"> <ul class="tab" id="tab-menu"> <li class="tab-item active">文字1<span>◆</span></li> <li class="tab-item&

封装实践——打造微信底部tab栏

目前市面上很多App都采用底部一个Tab栏,管理四到五个Tab,然后选择切换页面的方式的设计,这虽然不太符合metro design,但确是一个不容易出错而又符合国人使用习惯的设计方式.比如微信,支付宝,网易新闻,简书等都采用这种设计.而所谓封装一定是基于某种确定的业务需求,所以针对上述的通用设计方式,我们可以做一个比较理想化的封装. 为什么要做封装 你可能会觉得,这就是一个选择切换嘛,我只要做些if else判断就好了.但是Tab栏一般用在首页,业务逻辑代码量就不用说了,如果这时候不想被各种i

封装一个tab思想方法实现点击的时候显示或隐藏效果

代码实现: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> tab方法 </TITLE> <meta charset="utf-8" /> <script src="jquery-1.11.3.min.js"></script> &

JS——tab函数封装

1.为li标签添加index属性,这个属性正好就是span标签数组的index值 2.函数封装适合页面有多个tab切换,需要注意的在获取的li标签和span标签对象时,必须将对应div对象作为参数传入 li标签添加index属性 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <s