📄 setdlg.cpp
字号:
// 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 + -