紀錄+備份.
#define STR_DEVICE_TYPE _T("Device Type")
#define STR_AILGENT_E1000A _T("Ailgent E1000A")
#define STR_AILGENT_E1000B _T("Ailgent E1000B")
#define STR_FLUKE_1502A _T("Fluke 1502A")
#define STR_FLUKE_7430 _T("Fluke 7430")
#define STR_IC_TYPE _T("IC Type")
#define STR_IC_ID _T("IC ID")
#define STR_LIGHT_SENSOR _T("LightSensor")
#define STR_uS5509 _T("uS5509")
#define STR_uS5510 _T("uS5510")
#define STR_POWER_MANGEMENT _T("Power Mangerment")
#define STR_uP1000 _T("uP1000")
#define STR_uP1001 _T("uP1001")
#define STR_OTHER _T("Other")
#define MAX_STRING_NUM 16
#define MAX_PAGE_NUM 16
#define TAB_NUM 2
CComboBox* m_ComboBox;
// TAB Control
CTabCtrl m_Tab[ TAB_NUM ];
int m_CurSelTab[ TAB_NUM ];
CDialog m_Page[ TAB_NUM ][ MAX_PAGE_NUM ];
CDialog* pDialog[ TAB_NUM ][ MAX_PAGE_NUM ];
// CCOMBOBOX_DEVICE_INSTRUMENT_STRING = CDI_S[ DEVICE_INSTRUMENT_NUM ]
const CString CDI_S[ DEVICE_INSTRUMENT_NUM ] = { STR_DEVICE_TYPE, STR_AILGENT_E1000A, STR_AILGENT_E1000B, STR_FLUKE_1502A, STR_FLUKE_7430 };
const CString IC_TYPE_STRING[ IC_TYPE_NUM ] = { STR_IC_TYPE, STR_LIGHT_SENSOR, STR_POWER_MANGEMENT, STR_OTHER };
const CString IC_LIGHT_SENSOR[ LIGHT_SENSOR_NUM ] = { STR_IC_ID, STR_uS5509, STR_uS5510 };
const CString IC_POWER_MANGEMENT[ POWER_MANGEMENT_NUM ] = { STR_IC_ID, STR_uP1000, STR_uP1001 };
int IC_ID[ CCOMBOBOX_IC_NUM ][ MAX_STRING_NUM ] = {0};
int TabDlgDevice_ID[ TAB_DEVICE_DLG_NUM ] = { IDD_DIALOG1, IDD_DIALOG2 };
int TabDlgIC_ID[ TAB_IC_DLG_NUM ] = { IDD_DIALOG3, IDD_DIALOG4 };
void CTestDlg::SetComboBoxString(int IDC, int Str_Num, const CString* Data, int WinOn)
{
int i = 0;
m_ComboBox = (CComboBox* )GetDlgItem( IDC );
for( i = 0; i < Str_Num; i++ )
m_ComboBox->AddString( Data[ i ] );
m_ComboBox->SetCurSel(0);
if( WinOn == 0 )
m_ComboBox->EnableWindow(FALSE);
else
m_ComboBox->EnableWindow(TRUE);
}
void CTestDlg::SetComboBoxICTypeIDString(int IDC_Type, const CString* Data)
{
int i = 0, IDC_ID = 0, ID_Num = 0, index = 0;
m_ComboBox = (CComboBox* )GetDlgItem( IDC_Type );
IDC_ID = ( IDC_Type == IDC_COMBO_ICTYPE_1 ) ? IDC_COMBO_ICNUMBER_1 : IDC_COMBO_ICNUMBER_2;
index = ( IDC_Type == IDC_COMBO_ICTYPE_1 ) ? CCOMBOBOX_IC_1 : CCOMBOBOX_IC_2;
if( m_ComboBox->GetCurSel() == IC_TYPE_LIGHT_SENSOR )
{
ID_Num = LIGHT_SENSOR_NUM;
Data = &IC_LIGHT_SENSOR[ LIGHT_SENSOR_ID_STR ];
}
else if( m_ComboBox->GetCurSel() == IC_TYPE_POWER_MANGEMENT )
{
ID_Num = POWER_MANGEMENT_NUM;
Data = &IC_POWER_MANGEMENT[ POWER_MANGEMENT_ID_STR ];
}
else
{
ID_Num = 1;
}
m_ComboBox = (CComboBox* )GetDlgItem( IDC_ID );
for( i = 0; i < 16; i++ )
m_ComboBox->DeleteString( IC_ID[ index ][ i ] );
for( i = 0; i < ID_Num; i++ )
IC_ID[ index ][ i ] = m_ComboBox->AddString( Data[ i ] );
m_ComboBox->SetCurSel(0);
}
void CTestDlg::TabControlPageChange(int index)
{
//把当前的页面隐藏起来
pDialog[ index ][ m_CurSelTab[ index ] ]->ShowWindow(SW_HIDE);
//得到新的页面索引
m_CurSelTab[ index ] = m_Tab[ index ].GetCurSel();
//把新的页面显示出来
pDialog[ index ][ m_CurSelTab[ index ] ]->ShowWindow(SW_SHOW);
}
void CTestDlg::SetCheckControl(int IDC_Check)
{
CButton* m_Check;
m_Check = (CButton* )GetDlgItem( IDC_Check );
if( m_Check->GetCheck() )
{
if( IDC_Check == IDC_CHECK2 )
m_ComboBox = (CComboBox* )GetDlgItem( IDC_COMBO_DEVICETYPE_2 );
else if( IDC_Check == IDC_CHECK_IC_TYPE_1 )
{
m_ComboBox = (CComboBox* )GetDlgItem(IDC_COMBO_ICNUMBER_2);
m_ComboBox->EnableWindow(TRUE);
m_ComboBox = (CComboBox* )GetDlgItem( IDC_COMBO_ICTYPE_2 );
}
m_ComboBox->EnableWindow(TRUE);
}
else
{
if( IDC_Check == IDC_CHECK2 )
m_ComboBox = (CComboBox* )GetDlgItem( IDC_COMBO_DEVICETYPE_2 );
else if( IDC_Check == IDC_CHECK_IC_TYPE_1 )
{
m_ComboBox = (CComboBox* )GetDlgItem(IDC_COMBO_ICNUMBER_2);
m_ComboBox->EnableWindow(FALSE);
m_ComboBox->SetCurSel(0);
m_ComboBox = (CComboBox* )GetDlgItem( IDC_COMBO_ICTYPE_2 );
}
m_ComboBox->EnableWindow(FALSE);
m_ComboBox->SetCurSel(0);
}
}
void CTestDlg::SetTabControl(int TabDlgType, int TabPage)
{
CRect rc;
int j = 0, TAB_Index = 0;
int* Dlg_ID;
if( TabDlgType == TAB_DLG_TYPE_DEVICE )
{
TAB_Index = TAB_DLG_TYPE_DEVICE;
Dlg_ID = TabDlgDevice_ID;
}
else if( TabDlgType == TAB_DLG_TYPE_IC_ID )
{
TAB_Index = TAB_DLG_TYPE_IC_ID;
Dlg_ID = TabDlgIC_ID;
}
m_Tab[ TAB_Index ].GetClientRect(rc);
rc.top += 20;
rc.bottom -= 1;
rc.left += 1;
rc.right -= 1;
for( j = 0; j < TAB_DLG_NUM; j++ )
{
m_Tab[ TAB_Index ].InsertItem( j, CDI_S[ 0 ]);
m_Page[ TAB_Index ][ j ].Create( Dlg_ID[ j ], &m_Tab[ TAB_Index ]);
m_Page[ TAB_Index ][ j ].MoveWindow(&rc);
pDialog[ TAB_Index ][ j ] = &m_Page[ TAB_Index ][ j ];
pDialog[ TAB_Index ][ j ]->ShowWindow(SW_HIDE);
}
pDialog[ TAB_Index ][ TabPage ]->ShowWindow(SW_SHOW);
m_Tab[ TAB_Index ].SetCurSel(0);
m_CurSelTab[ TAB_Index ] = 0;
}
void CTestDlg::Init()
{
int i = 0;
// Device 1 Type.
SetComboBoxString( IDC_COMBO_DEVICETYPE_1, DEVICE_INSTRUMENT_NUM, &CDI_S[ DEVICE_INSTRUMENT_STR ], TRUE );
// Device 2 Type.
SetComboBoxString( IDC_COMBO_DEVICETYPE_2, DEVICE_INSTRUMENT_NUM, &CDI_S[ DEVICE_INSTRUMENT_STR ], FALSE );
// IC 1 Type.
SetComboBoxString( IDC_COMBO_ICTYPE_1, IC_TYPE_NUM, &IC_TYPE_STRING[ IC_TYPE_STR ], TRUE );
// IC 2 Type.
SetComboBoxString( IDC_COMBO_ICTYPE_2, IC_TYPE_NUM, &IC_TYPE_STRING[ IC_TYPE_STR ], FALSE );
// IC 1 ID.
SetComboBoxString( IDC_COMBO_ICNUMBER_1, 1, &(CString)STR_IC_ID, TRUE );
// IC 2 ID.
SetComboBoxString( IDC_COMBO_ICNUMBER_2, 1, &(CString)STR_IC_ID, FALSE );
//SetDlgItemText( IDC_COMBO_ICNUMBER_1, _T("ASDFG") );
OnBnClickedButtonSelect();
}
void CTestDlg::OnTcnSelchangeTabDevice(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
TabControlPageChange( CCOMBOBOX_DEVICE_1 );
*pResult = 0;
}
void CTestDlg::OnTcnSelchangeTab11(NMHDR *pNMHDR, LRESULT *pResult)
{
// TODO: Add your control notification handler code here
TabControlPageChange( CCOMBOBOX_DEVICE_2 );
/*//把当前的页面隐藏起来
pDialog[ CCOMBOBOX_DEVICE_2 ][ m_CurSelTab[ CCOMBOBOX_DEVICE_2 ] ]->ShowWindow(SW_HIDE);
//得到新的页面索引
m_CurSelTab[ CCOMBOBOX_DEVICE_2 ] = m_Tab[ CCOMBOBOX_DEVICE_2 ].GetCurSel();
//把新的页面显示出来
pDialog[ CCOMBOBOX_DEVICE_2 ][ m_CurSelTab[ CCOMBOBOX_DEVICE_2 ] ]->ShowWindow(SW_SHOW);
*/
*pResult = 0;
}
void CTestDlg::OnBnClickedButtonSelect()
{
// TODO: Add your control notification handler code here
SetTabControl( TAB_DLG_TYPE_DEVICE, 0 );
SetTabControl( TAB_DLG_TYPE_IC_ID, 0 );
}
void CTestDlg::OnBnClickedCheck2()
{
// TODO: Add your control notification handler code here
SetCheckControl( IDC_CHECK2 );
//CheckDlgButton(IDC_CHECK2, BST_CHECKED);
}
void CTestDlg::OnBnClickedCheckIcType1()
{
// TODO: Add your control notification handler code here
SetCheckControl( IDC_CHECK_IC_TYPE_1 );
}
void CTestDlg::OnCbnSelchangeComboIctype1()
{
// TODO: Add your control notification handler code here
SetComboBoxICTypeIDString( IDC_COMBO_ICTYPE_1, &(CString)STR_IC_ID );
}
void CTestDlg::OnCbnSelchangeComboIctype2()
{
// TODO: Add your control notification handler code here
SetComboBoxICTypeIDString( IDC_COMBO_ICTYPE_2, &(CString)STR_IC_ID );
}
//=== .h ===
typedef enum _CCOMBOBOX_DEVICE
{
CCOMBOBOX_DEVICE_NONE = (-1),
CCOMBOBOX_DEVICE_1 = 0x00,
CCOMBOBOX_DEVICE_2,
CCOMBOBOX_DEVICE_NUM
} CCOMBOBOX_DEVICE;
typedef enum _DEVICE_INSTRUMENT
{
DEVICE_INSTRUMENT_NONE = (-1),
DEVICE_INSTRUMENT_STR = 0x00,
DEVICE_INSTRUMENT_AILGENT_E1000A,
DEVICE_INSTRUMENT_AILGENT_E1000B,
DEVICE_INSTRUMENT_FLUKE_1502A,
DEVICE_INSTRUMENT_FLUKE_7430,
DEVICE_INSTRUMENT_NUM
} DEVICE_INSTRUMENT;
typedef enum _CCOMBOBOX_IC
{
CCOMBOBOX_IC_NONE = (-1),
CCOMBOBOX_IC_1 = 0x00,
CCOMBOBOX_IC_2,
CCOMBOBOX_IC_NUM
} CCOMBOBOX_IC;
typedef enum _IC_TYPE
{
IC_TYPE_NONE = (-1),
IC_TYPE_STR = 0x00,
IC_TYPE_LIGHT_SENSOR,
IC_TYPE_POWER_MANGEMENT,
IC_TYPE_OTHER,
IC_TYPE_NUM
} IC_TYPE;
typedef enum _LIGHT_SENSOR
{
LIGHT_SENSOR_NONE = (-1),
LIGHT_SENSOR_ID_STR = 0x00,
LIGHT_SENSOR_uS5509,
LIGHT_SENSOR_uS5510,
LIGHT_SENSOR_NUM
} LIGHT_SENSOR;
typedef enum _POWER_MANGEMENT
{
POWER_MANGEMENT_NONE = (-1),
POWER_MANGEMENT_ID_STR = 0x00,
POWER_MANGEMENT_uP1000,
POWER_MANGEMENT_uP1001,
POWER_MANGEMENT_NUM
} POWER_MANGEMENT;
typedef enum _TAB_DLG_TYPE
{
TAB_DLG_TYPE_NONE = (-1),
TAB_DLG_TYPE_DEVICE = 0x00,
TAB_DLG_TYPE_IC_ID,
TAB_DLG_NUM
} TAB_DLG_TYPE;
typedef enum _TAB_DEVICE_DLG
{
TAB_DEVICE_DLG_1 = 0x00,
TAB_DEVICE_DLG_2,
TAB_DEVICE_DLG_NUM
} TAB_DEVICE_DLG;
typedef enum _TAB_IC_DLG
{
TAB_IC_uS5509_DLG_3 = 0x00,
TAB_IC_uS5510_DLG_4,
TAB_IC_DLG_NUM
} TAB_IC_DLG;
============================================