1. 程式人生 > >MFC功能實現單選按鈕通道切換對話方塊有記憶功能

MFC功能實現單選按鈕通道切換對話方塊有記憶功能

標頭檔案ChanelSelRationDlg.h 程式碼: /**
    $Revision: 4 $
**/
#ifndef _channelselradiodlg_h
#define _channelselradiodlg_h
//
//#if _MSC_VER > 1000
//#pragma once
//#endif // _MSC_VER > 1000
//// ChanelSelRationDlg.h : header file
////
// #include "global.h"
#include "resource.h" #define GetChPtr(al,id) al[id - 1] = &m_chanel_sel_chk##id class CChannelSelRadioDlg : public CDialog
{
private:
    CButton *m_Channel[MAX_CHANNELS];
    int m_Selected;
public:
 CChannelSelRadioDlg(CWnd* pParent = NULL);   // standard constructor
 virtual ~CChannelSelRadioDlg(); public:
    void ClearSelect();
    int GetSelected();
    void SetSelected(int channel);    protected:   
 enum { IDD = IDD_CHANEL_SEL_RADIO_DLG };  CButton m_chanel_sel_chk9;
 CButton m_chanel_sel_chk8;
 CButton m_chanel_sel_chk7;
 CButton m_chanel_sel_chk6;
 CButton m_chanel_sel_chk5;
 CButton m_chanel_sel_chk4;
 CButton m_chanel_sel_chk32;
 CButton m_chanel_sel_chk31;
 CButton m_chanel_sel_chk30;
 CButton m_chanel_sel_chk3;
 CButton m_chanel_sel_chk29;
 CButton m_chanel_sel_chk28;
 CButton m_chanel_sel_chk27;
 CButton m_chanel_sel_chk26;
 CButton m_chanel_sel_chk25;
 CButton m_chanel_sel_chk24;
 CButton m_chanel_sel_chk23;
 CButton m_chanel_sel_chk22;
 CButton m_chanel_sel_chk21;
 CButton m_chanel_sel_chk20;
 CButton m_chanel_sel_chk2;
 CButton m_chanel_sel_chk19;
 CButton m_chanel_sel_chk18;
 CButton m_chanel_sel_chk17;
 CButton m_chanel_sel_chk16;
 CButton m_chanel_sel_chk15;
 CButton m_chanel_sel_chk14;
 CButton m_chanel_sel_chk13;
 CButton m_chanel_sel_chk12;
 CButton m_chanel_sel_chk11;
 CButton m_chanel_sel_chk10;
 CButton m_chanel_sel_chk1;
protected:
 virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
 virtual BOOL OnInitDialog();
 afx_msg void OnTimer(UINT nIDEvent);
 DECLARE_MESSAGE_MAP()
    afx_msg void OnBnClickedOk();
}; #endif cpp實現檔案程式碼ChanelSelRationDlg.cpp /**
    $Revision: 4 $
**/
// ChannelSelRadioDlg.cpp : implementation file
// #include "stdafx.h"
#include "BODEVIB.h"
#include "ChannelSelRadioDlg.h"
#include "global.h" #ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif CChannelSelRadioDlg::CChannelSelRadioDlg(CWnd* pParent /*=NULL*/)
 : CDialog(CChannelSelRadioDlg::IDD, pParent)
{
    int i;     m_Selected = 0;
   
    for (i = 0; i < MAX_CHANNELS; i++)
    {
        m_Channel[i] = NULL;
    }
} CChannelSelRadioDlg::~CChannelSelRadioDlg()
{
} void CChannelSelRadioDlg::DoDataExchange(CDataExchange* pDX)
{
 CDialog::DoDataExchange(pDX);
   
 DDX_Control(pDX, IDC_CHANELRADIO9, m_chanel_sel_chk9);
 DDX_Control(pDX, IDC_CHANELRADIO8, m_chanel_sel_chk8);
 DDX_Control(pDX, IDC_CHANELRADIO7, m_chanel_sel_chk7);
 DDX_Control(pDX, IDC_CHANELRADIO6, m_chanel_sel_chk6);
 DDX_Control(pDX, IDC_CHANELRADIO5, m_chanel_sel_chk5);
 DDX_Control(pDX, IDC_CHANELRADIO4, m_chanel_sel_chk4);
 DDX_Control(pDX, IDC_CHANELRADIO32, m_chanel_sel_chk32);
 DDX_Control(pDX, IDC_CHANELRADIO31, m_chanel_sel_chk31);
 DDX_Control(pDX, IDC_CHANELRADIO30, m_chanel_sel_chk30);
 DDX_Control(pDX, IDC_CHANELRADIO3, m_chanel_sel_chk3);
 DDX_Control(pDX, IDC_CHANELRADIO29, m_chanel_sel_chk29);
 DDX_Control(pDX, IDC_CHANELRADIO28, m_chanel_sel_chk28);
 DDX_Control(pDX, IDC_CHANELRADIO27, m_chanel_sel_chk27);
 DDX_Control(pDX, IDC_CHANELRADIO26, m_chanel_sel_chk26);
 DDX_Control(pDX, IDC_CHANELRADIO25, m_chanel_sel_chk25);
 DDX_Control(pDX, IDC_CHANELRADIO24, m_chanel_sel_chk24);
 DDX_Control(pDX, IDC_CHANELRADIO23, m_chanel_sel_chk23);
 DDX_Control(pDX, IDC_CHANELRADIO22, m_chanel_sel_chk22);
 DDX_Control(pDX, IDC_CHANELRADIO21, m_chanel_sel_chk21);
 DDX_Control(pDX, IDC_CHANELRADIO20, m_chanel_sel_chk20);
 DDX_Control(pDX, IDC_CHANELRADIO2, m_chanel_sel_chk2);
 DDX_Control(pDX, IDC_CHANELRADIO19, m_chanel_sel_chk19);
 DDX_Control(pDX, IDC_CHANELRADIO18, m_chanel_sel_chk18);
 DDX_Control(pDX, IDC_CHANELRADIO17, m_chanel_sel_chk17);
 DDX_Control(pDX, IDC_CHANELRADIO16, m_chanel_sel_chk16);
 DDX_Control(pDX, IDC_CHANELRADIO15, m_chanel_sel_chk15);
 DDX_Control(pDX, IDC_CHANELRADIO14, m_chanel_sel_chk14);
 DDX_Control(pDX, IDC_CHANELRADIO13, m_chanel_sel_chk13);
 DDX_Control(pDX, IDC_CHANELRADIO12, m_chanel_sel_chk12);
 DDX_Control(pDX, IDC_CHANELRADIO11, m_chanel_sel_chk11);
 DDX_Control(pDX, IDC_CHANELRADIO10, m_chanel_sel_chk10);
 DDX_Control(pDX, IDC_CHANELRADIO1, m_chanel_sel_chk1);     GetChPtr(m_Channel,1 );
    GetChPtr(m_Channel,2 );
    GetChPtr(m_Channel,3 );
    GetChPtr(m_Channel,4 );
    GetChPtr(m_Channel,5 );
    GetChPtr(m_Channel,6 );
    GetChPtr(m_Channel,7 );
    GetChPtr(m_Channel,8 );
    GetChPtr(m_Channel,9 );
    GetChPtr(m_Channel,10);
    GetChPtr(m_Channel,11);
    GetChPtr(m_Channel,12);
    GetChPtr(m_Channel,13);
    GetChPtr(m_Channel,14);
    GetChPtr(m_Channel,15);
    GetChPtr(m_Channel,16);
    GetChPtr(m_Channel,17);
    GetChPtr(m_Channel,18);
    GetChPtr(m_Channel,19);
    GetChPtr(m_Channel,20);
    GetChPtr(m_Channel,21);
    GetChPtr(m_Channel,22);
    GetChPtr(m_Channel,23);
    GetChPtr(m_Channel,24);
    GetChPtr(m_Channel,25);
    GetChPtr(m_Channel,26);
    GetChPtr(m_Channel,27);
    GetChPtr(m_Channel,28);
    GetChPtr(m_Channel,29);
    GetChPtr(m_Channel,30);
    GetChPtr(m_Channel,31);
    GetChPtr(m_Channel,32);
    }
BEGIN_MESSAGE_MAP(CChannelSelRadioDlg, CDialog)
 ON_WM_TIMER()
    ON_BN_CLICKED(IDOK, &CChannelSelRadioDlg::OnBnClickedOk)
END_MESSAGE_MAP() BOOL CChannelSelRadioDlg::OnInitDialog()
{
    int i;  CDialog::OnInitDialog();
 
    for (i = 0; i < MAX_CHANNELS; i++)
    {
        m_Channel[i]->SetWindowText(Global::ChanSet[i].Name.c_str());
    }     for (i = 0; i < Global::ChanNum; i++)
    {
        m_Channel[i]->EnableWindow(true);
    }
    for (i = Global::ChanNum; i < MAX_CHANNELS; i++)
    {
        m_Channel[i]->EnableWindow(false);
    }
    for (i = 0; i < MAX_CHANNELS; i++)
    {   
        m_Channel[i]->SetCheck(0);
    }   
    m_Channel[m_Selected]->SetCheck(1);  SetTimer(0,100,NULL);
    this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    this->UpdateWindow();  
 return TRUE;
} void CChannelSelRadioDlg::OnTimer(UINT nIDEvent)
{
    this->ActivateTopParent();
    this->SetActiveWindow();
    this->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
    this->UpdateWindow();
 
 CDialog::OnTimer(nIDEvent);
} int CChannelSelRadioDlg::GetSelected()
{
    return m_Selected;
} void CChannelSelRadioDlg::SetSelected(int channel)
{
    m_Selected = channel;
} void CChannelSelRadioDlg::OnBnClickedOk()
{
    int i;     for (i = 0; i < MAX_CHANNELS; i++)
    {
        if (m_Channel[i]->GetCheck())
        {
            m_Selected = i;
            break;
        }
    }
   
    CDialog::OnOK();
}