⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmdtabctrl.cpp

📁 国半usbn9604芯片开发办的源码
💻 CPP
字号:
/*----------------------------------------------------------------------------
 *  Copyright (c) 2001 by National Semiconductor Corporation
 *  National Semiconductor Corporation
 *  2900 Semiconductor Drive
 *  Santa Clara, California 95051
 *
 *  All rights reserved
 *
 *<<<-------------------------------------------------------------------------
 * File Contents:
 *	CommandTabCtrl.cpp - this class implements the GUI tabs.
 *						 All the test tabs in the application are members in this
 *						 class.It intializes and manages then in the means of 
 *						 tabs transitions, etc.
 *
 *  Project: USB Demo Application
 *  Author : Yan Nosovitsky
 *  Date   : Dec 2001
 *----------------------------------------------------------------------->>>*/
// CommandTabCtrl.cpp : implementation file
//

#include "stdafx.h"
#include "Demo.h"
#include "CmdTabCtrl.h"





#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CommandTabCtrl


CCmdTabCtrl::CCmdTabCtrl()
{
	m_ControlTab	= new controlCmdTab;
	m_IntTab		= new intCmdTab;
	m_IsoTab		= new isoCmdTab;
	m_ReadWriteTab	= new readWriteCmdTab;
	m_BulkTab		= new BulkCmdTab;
	


	m_tabPages[CONTROL]		= m_ControlTab; 
	m_tabPages[BULK]		= m_BulkTab;
	m_tabPages[INTERRUPT]	= m_IntTab; 
	m_tabPages[ISOCHRONOUS]	= m_IsoTab;
	m_tabPages[DIAGNOSTIC]	= m_ReadWriteTab;


	m_nNumberOfPages = NUM_OF_TABS;
}

CCmdTabCtrl::~CCmdTabCtrl()
{
	for(int counter=0; counter < m_nNumberOfPages; counter++){
		delete m_tabPages[counter];
	}
}


void CCmdTabCtrl::CommandTabCtrlInit() {

	m_tabCurrent = CONTROL;

	m_tabPages[CONTROL]		-> Create(IDD_CONTROL_TAB, this);
	m_tabPages[BULK]		-> Create(IDD_BULK_TAB, this);
	m_tabPages[INTERRUPT]	-> Create(IDD_INT_TAB, this);
	m_tabPages[ISOCHRONOUS]	-> Create(IDD_ISO_TAB, this);
	m_tabPages[DIAGNOSTIC]	-> Create(IDD_READ_WRITE_TAB, this);

	m_tabPages[CONTROL]		-> ShowWindow(SW_SHOW);
	m_tabPages[BULK]		-> ShowWindow(SW_HIDE);
	m_tabPages[INTERRUPT]	-> ShowWindow(SW_HIDE);
	m_tabPages[ISOCHRONOUS]	-> ShowWindow(SW_HIDE);
	m_tabPages[DIAGNOSTIC]	-> ShowWindow(SW_HIDE);


	

	//Initialize Tab Controls
	////////////////////////////////////////////////
	////Bulk Tab

	m_BulkTab->m_immedRadio.SetCheck(BST_CHECKED);
	m_BulkTab->m_incrRadio.SetCheck(BST_CHECKED);
	m_BulkTab->m_progressBar.SetStep(1);
	m_BulkTab->m_dataSize.LimitText(8);
	m_BulkTab->m_loopSize.LimitText(8);
	m_BulkTab->m_hexByte.LimitText(2);
	m_BulkTab->UpdatePipes();

	////////////////////////////////////////////////
	////Interrupt 

	m_IntTab->m_intervalSlider.SetRange(0,14);
	m_IntTab->m_intervalSlider.SetPos(1);
	m_IntTab->m_intNum.LimitText(3);
	m_IntTab->m_interval.SetWindowText("2");
	m_IntTab->m_arrivedInt.SetWindowText("0");
	
	m_IntTab->UpdatePipes();

	////////////////////////////////////////////////
	////Isochronous

	m_IsoTab->m_incrRadio.SetCheck(BST_CHECKED);
	m_IsoTab->m_progressBar.SetStep(1);
	m_IsoTab->m_dataSize.LimitText(8);
	m_IsoTab->m_loopSize.LimitText(8);
	m_IsoTab->m_hexByte.LimitText(2);
	m_IsoTab->UpdatePipes();

	////////////////////////////////////////////////
	////control
	m_ControlTab->BuildReqList();

	////////////////////////////////////////////////
	////diagnostic
	m_ReadWriteTab->BuildRegList();
	m_ReadWriteTab->m_addressSpin.SetBuddy(&m_ReadWriteTab->m_regAddress);
	m_ReadWriteTab->m_addressSpin.SetBase(16);
	m_ReadWriteTab->m_addressSpin.SetRange(0,0x3f);
	m_ReadWriteTab->m_serialRadio.SetCheck(BST_CHECKED);
	m_ReadWriteTab->m_comList.SetCurSel(0);
	m_ReadWriteTab->m_bit0Edit.LimitText(1);
	m_ReadWriteTab->m_bit1Edit.LimitText(1);
	m_ReadWriteTab->m_bit2Edit.LimitText(1);
	m_ReadWriteTab->m_bit3Edit.LimitText(1);
	m_ReadWriteTab->m_bit4Edit.LimitText(1);
	m_ReadWriteTab->m_bit5Edit.LimitText(1);
	m_ReadWriteTab->m_bit6Edit.LimitText(1);
	m_ReadWriteTab->m_bit7Edit.LimitText(1);

//	m_ReadWriteTab->ClearBits();

	SetRectangle();
}

void CCmdTabCtrl::SetRectangle() {

	CRect tabRect, itemRect;
	int nX, nY, nXc, nYc;

	GetClientRect(&tabRect);
	GetItemRect(0, &itemRect);

	nX=itemRect.left;
	nY=itemRect.bottom+1;
	nXc=tabRect.right-itemRect.left-1;
	nYc=tabRect.bottom-nY-1;

	m_tabPages[0]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_SHOWWINDOW);
	for(int nCount=1; nCount < m_nNumberOfPages; nCount++){
		m_tabPages[nCount]->SetWindowPos(&wndTop, nX, nY, nXc, nYc, SWP_HIDEWINDOW);
	}

}

BEGIN_MESSAGE_MAP(CCmdTabCtrl, CTabCtrl)
	//{{AFX_MSG_MAP(CommandTabCtrl)
	ON_WM_LBUTTONDOWN()
	ON_WM_KEYDOWN()
	// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CommandTabCtrl message handlers

void CCmdTabCtrl::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CTabCtrl::OnLButtonDown(nFlags, point);

	if(m_tabCurrent != GetCurFocus()){
		m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
		m_tabCurrent=GetCurFocus();

		m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
		m_tabPages[m_tabCurrent]->SetFocus();
		

	
//		CWnd* pMain = AfxGetMainWnd();
//		pMain->SendMessage(WM_LBUTTONDOWN, 0,0);

	}

}

void CCmdTabCtrl::OnKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags )
{
	CTabCtrl::OnKeyDown( nChar,  nRepCnt,  nFlags );
	if(m_tabCurrent != GetCurFocus()){
		m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
		m_tabCurrent=GetCurFocus();

		m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
//		m_tabPages[m_tabCurrent]->SetFocus();
		

	
//		CWnd* pMain = AfxGetMainWnd();
//		pMain->SendMessage(WM_LBUTTONDOWN, 0,0);

	}
}

void CCmdTabCtrl::TabSwitcher(int TabNum) {

	SetCurSel( TabNum);
	m_tabPages[m_tabCurrent]->ShowWindow(SW_HIDE);
	m_tabCurrent=TabNum;
	m_tabPages[m_tabCurrent]->ShowWindow(SW_SHOW);
	m_tabPages[m_tabCurrent]->SetFocus();
		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -