📄 seg7dlg.cpp
字号:
void CSEG7Dlg::OnSelchangeCombo10()
{
// TODO: Add your control notification handler code here
//语言配置数据
UpdateData(true);
CString language;
_itoa(language_index,language.GetBufferSetLength(5) ,10);
language="Language"+language; //获取当前语言项的段名
inifile.ReadKeyValue(language, "StartCharacter",lag_start_ch); //语言起始字符
inifile.ReadKeyValue(language, "SeparatorCharacter",lag_separator_ch); //数据分隔符
inifile.ReadKeyValue(language, "HexLeaderCharacter",lag_hex_leader_ch); //十六进制数据头
inifile.ReadKeyValue(language, "HexEndCharacter",lag_hex_end_ch); //十六进制数据尾
inifile.ReadKeyValue(language, "BinLeaderCharacter",lag_bin_leader_ch); //二进制数据头
inifile.ReadKeyValue(language, "BinEndCharacter",lag_bin_end_ch); //二进制数据尾
inifile.ReadKeyValue(language, "DecLeaderCharacter",lag_dec_leader_ch); //十进制数据头
inifile.ReadKeyValue(language, "DecEndCharacter",lag_dec_end_ch); //十进制数据尾
inifile.ReadKeyValue(language, "NoteLeaderCharacter",lag_note_leader_ch); //注释头
inifile.ReadKeyValue(language, "NoteEndCharacter",lag_note_end_ch); //注释尾
opt_radix=inifile.ReadKeyValue(language, "DefaultRadix"); //语言默认基数
if(opt_radix>2)
{
AfxMessageBox(_T("读取配置文件错误,请删除配置文件(LED.INI)!"));
exit(0);
}
UpdateData(false);
}
//设置键//////////////////////
void CSEG7Dlg::OnBtnSet()
{
// TODO: Add your control notification handler code here
SETDLG dlg;
if(dlg.DoModal()==IDOK)
{
combo_language.ResetContent();
//语言配置数据
long i;
i=inifile.ReadKeyValue("SETUP","LanguageTotal"); //读取语言数据
CString language("Language");
CString title;
char buf[10];
for(long j=0;j<i;j++) //读取语言选项
{
inifile.ReadKeyValue(language+ _itoa(j,buf,10), "Title", title);
if(title.GetLength()==0)
{
AfxMessageBox(_T("读取配置文件错误,请删除配置文件(LED.INI)!"));
exit(0);
}
combo_language.AddString(title);
}
language_index=inifile.ReadKeyValue("SETUP", "LastLanguage"); //读取当前语言选项索引
_itoa(language_index,language.GetBufferSetLength(5) ,10);
language="Language"+language; //获取当前语言项的段名
inifile.ReadKeyValue(language, "StartCharacter",lag_start_ch); //语言起始字符
inifile.ReadKeyValue(language, "SeparatorCharacter",lag_separator_ch); //数据分隔符
inifile.ReadKeyValue(language, "HexLeaderCharacter",lag_hex_leader_ch); //十六进制数据头
inifile.ReadKeyValue(language, "HexEndCharacter",lag_hex_end_ch); //十六进制数据尾
inifile.ReadKeyValue(language, "BinLeaderCharacter",lag_bin_leader_ch); //二进制数据头
inifile.ReadKeyValue(language, "BinEndCharacter",lag_bin_end_ch); //二进制数据尾
inifile.ReadKeyValue(language, "DecLeaderCharacter",lag_dec_leader_ch); //十进制数据头
inifile.ReadKeyValue(language, "DecEndCharacter",lag_dec_end_ch); //十进制数据尾
inifile.ReadKeyValue(language, "NoteLeaderCharacter",lag_note_leader_ch); //注释头
inifile.ReadKeyValue(language, "NoteEndCharacter",lag_note_end_ch); //注释尾
opt_radix=inifile.ReadKeyValue(language, "DefaultRadix"); //语言默认基数
if(opt_radix>2)
{
AfxMessageBox(_T("读取配置文件错误,请删除配置文件(LED.INI)!"));
exit(0);
}
UpdateData(false);//更新数据到控件
}
else
{
//MessageBox("hello2"); //按了设置对话框中的取消按钮
//AfxMessageBox("没有读取配置");
}
}
//各个检测框按钮/////////////////////////////////////
void CSEG7Dlg::ResetCheckCtl(void) //重设检查按钮的状态
{
unsigned int i; //
UpdateData(true); //更新控件数据
for(i=1; i<19; i++)
{
if(check_char[i]!=check_char[0])
{
check_selectall=2; //有不相同的状态
UpdateData(false);
return;
}
}
check_selectall=(unsigned int)check_char[0];
UpdateData(false);
}
void CSEG7Dlg::OnChkNumber()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharA()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharB()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharC()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharC()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharD()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharE()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharF()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharH()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharH()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharL()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharN()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharN()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharO()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharP()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharR()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkScharT()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharU()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkCharLine()
{
// TODO: Add your control notification handler code here
ResetCheckCtl();
}
void CSEG7Dlg::OnChkSelectall()
{
// TODO: Add your control notification handler code here
unsigned int i;
UpdateData(true);
switch(check_selectall)
{
case 0:
for(i=0; i<19; i++)
{
check_char[i]=FALSE;
}
break;
case 1:
for(i=0; i<19; i++)
{
check_char[i]=TRUE;
}
break;
case 2:
check_selectall=0;
for(i=0; i<19; i++)
{
check_char[i]=FALSE;
}
break;
}
UpdateData(false);
}
void CSEG7Dlg::OnBtnClear()
{
// TODO: Add your control notification handler code here
output_string="";
UpdateData(false);
}
void CSEG7Dlg::OnBtnMal()
{
// TODO: Add your control notification handler code here
UpdateData(true);
char valtmp[10];
CString strtmp;
_itoa(CreateLedData(),valtmp, radixtab[opt_radix]);
strtmp=valtmp;
FormatData(strtmp, opt_radix);
switch(opt_radix)
{
case HEX:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + note_string + lag_note_end_ch;
break;
case BIN:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + note_string + lag_note_end_ch;
break;
case DEC:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + note_string + lag_note_end_ch;
break;
}
output_string = output_string+ strtmp + "\r\n";
UpdateData(false);
}
//自动按钮
void CSEG7Dlg::OnBtnAuto()
{
// TODO: Add your control notification handler code here
UpdateData(true);
int i;
unsigned char val; //段所对应的数据
unsigned char val2;
char valtmp[10]; //创建数据定义
BOOL changeflag=false; //有数据改变
CString strtmp;
if(check_char[0])
{
for(i=0; i<10; i++)
{
val2=numdatatab[i];
if(ledak_index == 1 )
{
val2 = ~val2; //共阳极
}
val=0;
if(val2 & 0x01){val |= pinpowertab[a_index];} //设置段
if(val2 & 0x02){val |= pinpowertab[b_index];}
if(val2 & 0x04){val |= pinpowertab[c_index];}
if(val2 & 0x08){val |= pinpowertab[d_index];}
if(val2 & 0x10){val |= pinpowertab[e_index];}
if(val2 & 0x20){val |= pinpowertab[f_index];}
if(val2 & 0x40){val |= pinpowertab[g_index];}
if(val2 & 0x80){val |= pinpowertab[h_index];}
_itoa(val, valtmp, radixtab[opt_radix]);
strtmp=valtmp;
FormatData(strtmp, opt_radix);
switch(opt_radix)
{
case HEX:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + numnote[i] + lag_note_end_ch;
break;
case BIN:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + numnote[i] + lag_note_end_ch;
break;
case DEC:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + numnote[i] + lag_note_end_ch;
break;
}// switch
output_string = output_string+ strtmp + "\r\n";
}//for
output_string += "\r\n";
}//if(check_char[0])
for(i=1; i<19; i++)//输出控制字符
{
if(check_char[i])
{
changeflag=true;
val2=chdatatab[i-1];
if(ledak_index == 1 )
{
val2 = ~val2; //共阳极
}
val=0;
if(val2 & 0x01){val |= pinpowertab[a_index];} //设置段
if(val2 & 0x02){val |= pinpowertab[b_index];}
if(val2 & 0x04){val |= pinpowertab[c_index];}
if(val2 & 0x08){val |= pinpowertab[d_index];}
if(val2 & 0x10){val |= pinpowertab[e_index];}
if(val2 & 0x20){val |= pinpowertab[f_index];}
if(val2 & 0x40){val |= pinpowertab[g_index];}
if(val2 & 0x80){val |= pinpowertab[h_index];}
_itoa(val, valtmp, radixtab[opt_radix]);
strtmp=valtmp;
FormatData(strtmp, opt_radix);
switch(opt_radix)
{
case HEX:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + chnote[i-1] + lag_note_end_ch;
break;
case BIN:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + chnote[i-1] + lag_note_end_ch;
break;
case DEC:
strtmp = lag_start_ch + " " + strtmp + " "
+ lag_note_leader_ch + chnote[i-1] + lag_note_end_ch;
break;
}// switch
output_string = output_string+ strtmp + "\r\n";
}//if
}//for
if(changeflag){output_string += "\r\n";}
UpdateData(false);
}
void CSEG7Dlg::OnChkUppercase()
{
// TODO: Add your control notification handler code here
UpdateData(true);
}
void CSEG7Dlg::OnRadioHex()
{
// TODO: Add your control notification handler code here
UpdateData(true);
}
void CSEG7Dlg::OnRadioBin()
{
// TODO: Add your control notification handler code here
UpdateData(true);
}
void CSEG7Dlg::OnRadioDec()
{
// TODO: Add your control notification handler code here
UpdateData(true);
}
void CSEG7Dlg::OnBtnSave()
{
// TODO: Add your control notification handler code here
CFileDialog saveFileDialog(false); //参数false表示该对话框为一个另存为对话框
saveFileDialog.m_ofn.lpstrFilter = "Text(*.txt)\0*.txt\0\0";
saveFileDialog.m_ofn.lpstrTitle = "保存";
saveFileDialog.m_ofn.Flags |= OFN_EXPLORER | OFN_LONGNAMES ;
saveFileDialog.m_ofn.lpstrDefExt = "txt"; //默认文件名
if(::GetVersion()<0x80000000) //NT操作系统,显示带有工具栏的对话框
{
saveFileDialog.m_ofn.lStructSize = 88;
}
else //非NT操作系统,显示老式对话框
{
saveFileDialog.m_ofn.lStructSize = 76;
}
if(saveFileDialog.DoModal()==IDOK)
{
//AfxMessageBox(saveFileDialog.GetPathName());
CString sfile =saveFileDialog.GetPathName();
try
{
CFileStatus fs;
if(! (CFile::GetStatus(_T(sfile),fs)))
{ //文件不存在,要创建文件
HANDLE hfile=CreateFile(sfile, GENERIC_WRITE, FILE_SHARE_READ , NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if( hfile != INVALID_HANDLE_VALUE)
{
CloseHandle(hfile); //关闭文件句柄,以便读写
}
}
CFile savefile(sfile, CFile::modeWrite);
savefile.Write(output_string, output_string.GetLength()); //内容写入文件
savefile.Close(); //关闭文件
}
catch(...)
{
AfxMessageBox(_T("保存文件失败"));
}
}
}
void CSEG7Dlg::OnBtnSavePin()
{
// TODO: Add your control notification handler code here
UpdateData(true); //更新数据
if(!CheckPinErr())
{
inifile.WriteKeyValue("SETUP", "LastAK",ledak_index);
//inifile.WriteKeyValue("SETUP", "LastPinValue",255); //管脚状态暂未处理
inifile.WriteKeyValue("SETUP", "LastPinA",a_index);
inifile.WriteKeyValue("SETUP", "LastPinB",b_index);
inifile.WriteKeyValue("SETUP", "LastPinC",c_index);
inifile.WriteKeyValue("SETUP", "LastPinD",d_index);
inifile.WriteKeyValue("SETUP", "LastPinE",e_index);
inifile.WriteKeyValue("SETUP", "LastPinF",f_index);
inifile.WriteKeyValue("SETUP", "LastPinG",g_index);
inifile.WriteKeyValue("SETUP", "LastPinH",h_index);
}
else
{
AfxMessageBox(_T("管脚指定有重复错误"));
}
/*
LastAK=0
LastPinValue=255
LastPinA=0
LastPinB=1
LastPinC=2
LastPinD=3
LastPinE=4
LastPinF=5
LastPinG=6
LastPinH=7
*/
}
void CSEG7Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if(nID == IDM_MENU_ABOUT)
{
//AfxMessageBox("hello"); //如果ID为自定义ID,则拦截系统消息
ABOUTDLG dlg;
dlg.DoModal();
}
else
{
//一定要调用基类处理函数,否则不能响应系统消息
CDialog::OnSysCommand(nID, lParam); //ID不是所要的ID则调用基类处理消息的函数,以响应系统功能
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -