close

紀錄+備份.

#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;

============================================

arrow
arrow
    全站熱搜

    wlper 發表在 痞客邦 留言(0) 人氣()