📄 cmdtabctrl.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 + -