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

📄 setdlg.cpp

📁 12864 avr驱动程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// SETDLG.cpp : implementation file
//

#include "stdafx.h"
#include "SEG7.h"
#include "SETDLG.h"
#include "inirw.h"

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

extern CString AppPath; //全局变量用以保存应用程序路径

/////////////////////////////////////////////////////////////////////////////
void SETDLG::ReadLanguageInfo(int index, LANGUAGE_STRUCT *p, INIRW *ini)
{
   CString lag("Language");
   char tmp[10];
   _itoa(index,tmp,10);
   lag=lag+tmp;
   ini->ReadKeyValue(lag, "Title", p->Title);
   ini->ReadKeyValue(lag, "StartCharacter", p->StartCharacter);
   ini->ReadKeyValue(lag, "SeparatorCharacter", p->SeparatorCharacter);
   ini->ReadKeyValue(lag, "HexLeaderCharacter", p->HexLeaderCharacter);
   ini->ReadKeyValue(lag, "HexEndCharacter", p->HexEndCharacter);
   ini->ReadKeyValue(lag, "BinLeaderCharacter", p->BinLeaderCharacter);
   ini->ReadKeyValue(lag, "BinEndCharacter", p->BinEndCharacter);
   ini->ReadKeyValue(lag, "DecLeaderCharacter", p->DecLeaderCharacter);
   ini->ReadKeyValue(lag, "DecEndCharacter", p->DecEndCharacter);
   ini->ReadKeyValue(lag, "NoteLeaderCharacter", p->NoteLeaderCharacter);
   ini->ReadKeyValue(lag, "NoteEndCharacter", p->NoteEndCharacter);
   p->DefaultRadix = ini->ReadKeyValue(lag, "DefaultRadix");
}

void SETDLG::DisplayLanguageInfo(int index)
{
	if(index>255)
	{
      return;
	}
	if(index==-1)
	{
	  m_str_Title="";
  	  m_str_StartCharacter="";
	  m_str_SeparatorCharacter="";
	  m_str_HexLeaderCharacter="";
	  m_str_HexEndCharacter="";
	  m_str_BinLeaderCharacter="";
	  m_str_BinEndCharacter="";
	  m_str_DecLeaderCharacter="";
	  m_str_DecEndCharacter="";
	  m_str_NoteLeaderCharacter="";
	  m_str_NoteEndCharacter="";
	  m_opt_radix=-1;
	}
	else
	{
	  m_str_Title=p_language[index]->Title;
  	  m_str_StartCharacter=p_language[index]->StartCharacter;
	  m_str_SeparatorCharacter=p_language[index]->SeparatorCharacter;
	  m_str_HexLeaderCharacter=p_language[index]->HexLeaderCharacter;
	  m_str_HexEndCharacter=p_language[index]->HexEndCharacter;
	  m_str_BinLeaderCharacter=p_language[index]->BinLeaderCharacter;
	  m_str_BinEndCharacter=p_language[index]->BinEndCharacter;
	  m_str_DecLeaderCharacter=p_language[index]->DecLeaderCharacter;
	  m_str_DecEndCharacter=p_language[index]->DecEndCharacter;
	  m_str_NoteLeaderCharacter=p_language[index]->NoteLeaderCharacter;
	  m_str_NoteEndCharacter=p_language[index]->NoteEndCharacter;
	  m_opt_radix=p_language[index]->DefaultRadix;
	}
}

void SETDLG::SetDisplayReadOnly(bool status)
{
    m_ctl_edit1.SetReadOnly(status);
	m_ctl_edit2.SetReadOnly(status);
	m_ctl_edit3.SetReadOnly(status);
	m_ctl_edit4.SetReadOnly(status);
	m_ctl_edit5.SetReadOnly(status);
	m_ctl_edit6.SetReadOnly(status);
	m_ctl_edit7.SetReadOnly(status);
	m_ctl_edit8.SetReadOnly(status);
	m_ctl_edit9.SetReadOnly(status);
	m_ctl_edit10.SetReadOnly(status);
	m_ctl_edit11.SetReadOnly(status);
	m_ctl_radix_hex.EnableWindow(!status);
	m_ctl_radix_bin.EnableWindow(!status);
	m_ctl_radix_dec.EnableWindow(!status);
}

/////////////////////////////////////////////////////////////////////////////
// SETDLG dialog
BOOL SETDLG::OnInitDialog()
{
	CDialog::OnInitDialog();

	for(int j=0; j<256; j++)
	{
       p_language[j]=NULL;      
	}

	if(! inifilename.SetFileName(AppPath+"led.ini",FALSE)) //初始化INI文件
	{
      AfxMessageBox(_T("led.ini 文件没有找到,程序将关闭"));
	  exit(0); //关闭程序
	}
    
	int lagtotal=inifilename.ReadKeyValue("SETUP","LanguageTotal");

	if(lagtotal>0)
	{
	  for(int i=0; i<lagtotal; i++)
	  {
		    p_language[i]=new LANGUAGE_STRUCT; //创建动态结构
	    	ReadLanguageInfo(i, p_language[i], &inifilename);
	 	    m_ctl_list.AddString(p_language[i]->Title);
	  }
	  m_ctl_list.SetCurSel(0); //选择列表框中的第一个选项
      DisplayLanguageInfo(0); //显示数据
	}
    //SetDisplayReadOnly(true);//禁示写操作
    UpdateData(false);
	return TRUE;
}

SETDLG::SETDLG(CWnd* pParent /*=NULL*/)
	: CDialog(SETDLG::IDD, pParent)
{
	//{{AFX_DATA_INIT(SETDLG)
	m_str_StartCharacter = _T("");
	m_str_SeparatorCharacter = _T("");
	m_str_HexLeaderCharacter = _T("");
	m_str_HexEndCharacter = _T("");
	m_str_BinLeaderCharacter = _T("");
	m_str_DecLeaderCharacter = _T("");
	m_str_NoteEndCharacter = _T("");
	m_str_BinEndCharacter = _T("");
	m_str_DecEndCharacter = _T("");
	m_str_NoteLeaderCharacter = _T("");
	m_str_Title = _T("");
	m_opt_radix = -1;
	//}}AFX_DATA_INIT
}

SETDLG::~SETDLG()
{
    for(int i=0; i<256; i++)
	{
      if(p_language[i]!=NULL)
	  {
        delete p_language[i];
	  }
	}
}

void SETDLG::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(SETDLG)
	DDX_Control(pDX, IDC_RADIX_DEC, m_ctl_radix_dec);
	DDX_Control(pDX, IDC_RADIX_BIN, m_ctl_radix_bin);
	DDX_Control(pDX, IDC_RADIX_HEX, m_ctl_radix_hex);
	DDX_Control(pDX, IDC_EDIT5, m_ctl_edit5);
	DDX_Control(pDX, IDC_EDIT4, m_ctl_edit4);
	DDX_Control(pDX, IDC_EDIT9, m_ctl_edit9);
	DDX_Control(pDX, IDC_EDIT8, m_ctl_edit8);
	DDX_Control(pDX, IDC_EDIT7, m_ctl_edit7);
	DDX_Control(pDX, IDC_EDIT6, m_ctl_edit6);
	DDX_Control(pDX, IDC_EDIT3, m_ctl_edit3);
	DDX_Control(pDX, IDC_EDIT2, m_ctl_edit2);
	DDX_Control(pDX, IDC_EDIT11, m_ctl_edit11);
	DDX_Control(pDX, IDC_EDIT10, m_ctl_edit10);
	DDX_Control(pDX, IDC_EDIT1, m_ctl_edit1);
	DDX_Control(pDX, IDC_LANGUAGE_LIST, m_ctl_list);
	DDX_Text(pDX, IDC_EDIT1, m_str_StartCharacter);
	DDX_Text(pDX, IDC_EDIT2, m_str_SeparatorCharacter);
	DDX_Text(pDX, IDC_EDIT3, m_str_HexLeaderCharacter);
	DDX_Text(pDX, IDC_EDIT4, m_str_HexEndCharacter);
	DDX_Text(pDX, IDC_EDIT5, m_str_BinLeaderCharacter);
	DDX_Text(pDX, IDC_EDIT7, m_str_DecLeaderCharacter);
	DDX_Text(pDX, IDC_EDIT10, m_str_NoteEndCharacter);
	DDX_Text(pDX, IDC_EDIT6, m_str_BinEndCharacter);
	DDX_Text(pDX, IDC_EDIT8, m_str_DecEndCharacter);
	DDX_Text(pDX, IDC_EDIT9, m_str_NoteLeaderCharacter);
	DDX_Text(pDX, IDC_EDIT11, m_str_Title);
	DDX_Radio(pDX, IDC_RADIX_HEX, m_opt_radix);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(SETDLG, CDialog)
	//{{AFX_MSG_MAP(SETDLG)
	ON_BN_CLICKED(IDC_BTN_OK, OnBtnOk)
	ON_BN_CLICKED(IDC_BTN_CANCEL, OnBtnCancel)
	ON_LBN_SELCHANGE(IDC_LANGUAGE_LIST, OnSelchangeLanguageList)
	ON_EN_CHANGE(IDC_EDIT11, OnChangeEditTitle)
	ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
	ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete)
	ON_BN_CLICKED(IDC_BTN_UP, OnBtnUp)
	ON_BN_CLICKED(IDC_BTN_DOWN, OnBtnDown)
	ON_EN_CHANGE(IDC_EDIT1, OnChangeStartCharacter)
	ON_EN_CHANGE(IDC_EDIT2, OnChangeSeparatorCharacter)
	ON_EN_CHANGE(IDC_EDIT3, OnChangeHexLeaderCharacter)
	ON_EN_CHANGE(IDC_EDIT4, OnChangeHexEndCharacter)
	ON_EN_CHANGE(IDC_EDIT5, OnChangeBinLeaderCharacter)
	ON_EN_CHANGE(IDC_EDIT6, OnChangeBinEndCharacter)
	ON_EN_CHANGE(IDC_EDIT7, OnChangeDecLeaderCharacter)
	ON_EN_CHANGE(IDC_EDIT8, OnChangeDecEndCharacter)
	ON_EN_CHANGE(IDC_EDIT9, OnChangeNoteLeaderCharacter)
	ON_EN_CHANGE(IDC_EDIT10, OnChangeNoteEndCharacter)
	ON_BN_CLICKED(IDC_RADIX_HEX, OnRadixHex)
	ON_BN_CLICKED(IDC_RADIX_BIN, OnRadixHex)
	ON_BN_CLICKED(IDC_RADIX_DEC, OnRadixHex)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// SETDLG message handlers

void SETDLG::OnBtnOk() 
{
	// TODO: Add your control notification handler code here
	int i;
	CString lag("Language");
	char num[10];

    int lagtotal=inifilename.ReadKeyValue("SETUP","LanguageTotal"); //取得原有的段
    int curtotal=m_ctl_list.GetCount();

	//删除多余的段
	if(lagtotal > curtotal) 
	{
	   for(i=lagtotal-1; i>=curtotal; i--)
	   {
		 _itoa(i,num,10);
         inifilename.DelSection(lag+num);
	   }
	}

    for(i=0; i<curtotal; i++)
	{
		CString cc;
       if(p_language[i]->Title.GetLength()==0)
	   {
		   m_ctl_list.SetCurSel(i);
		   DisplayLanguageInfo(i);
		   UpdateData(false);
		   AfxMessageBox(_T("语言标题不能为空"));
		   return ;
	   }
       _itoa(i,num,10);
	   lag="Language";
	   lag=lag+num;
	   inifilename.WriteKeyValue(lag, "Title", p_language[i]->Title);
	   inifilename.WriteKeyValue(lag, "StartCharacter", p_language[i]->StartCharacter);
	   inifilename.WriteKeyValue(lag, "SeparatorCharacter", p_language[i]->SeparatorCharacter);
	   inifilename.WriteKeyValue(lag, "DefaultRadix", p_language[i]->DefaultRadix);
	   inifilename.WriteKeyValue(lag, "HexLeaderCharacter", p_language[i]->HexLeaderCharacter);
	   inifilename.WriteKeyValue(lag, "HexEndCharacter", p_language[i]->HexEndCharacter);
	   inifilename.WriteKeyValue(lag, "BinLeaderCharacter", p_language[i]->BinLeaderCharacter);
	   inifilename.WriteKeyValue(lag, "BinEndCharacter", p_language[i]->BinEndCharacter);
	   inifilename.WriteKeyValue(lag, "DecLeaderCharacter", p_language[i]->DecLeaderCharacter);
	   inifilename.WriteKeyValue(lag, "DecEndCharacter", p_language[i]->DecEndCharacter);
	   inifilename.WriteKeyValue(lag, "NoteLeaderCharacter", p_language[i]->NoteLeaderCharacter);
	   inifilename.WriteKeyValue(lag, "NoteEndCharacter", p_language[i]->NoteEndCharacter);
	}	
    inifilename.WriteKeyValue("SETUP","LanguageTotal",curtotal);
	CDialog::OnOK(); //按了Ok按钮	
}

void SETDLG::OnBtnCancel() 
{

⌨️ 快捷键说明

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