📄 dlgcoordtrans.cpp
字号:
((CButton*)GetDlgItem(IDC_RAD_DEST_GEO))->EnableWindow(TRUE);
((CButton*)GetDlgItem(ID_ADD))->EnableWindow(TRUE);
((CButton*)GetDlgItem(ID_DELETE))->EnableWindow(TRUE);
((CButton*)GetDlgItem(ID_IMPORT))->EnableWindow(TRUE);
((CButton*)GetDlgItem(ID_CALCULATE))->EnableWindow(TRUE);
m_list_Data.EnableWindow(TRUE);
m_cmbSrcUnit.EnableWindow(TRUE);
m_cmbDestUnit.EnableWindow(TRUE);
}
void CDatumTranPara::RetrieveDataFromCtrl(const char flag/* =0 */)
{
CString tmp;
int dd,mm;float ss;
if(flag & 0x1){//src
if (1 == m_SrcCoordType) {
switch(m_SrcBLUnit) {
case 0://dd:mm:ss
m_edtsrc1.GetWindowText(tmp);
sscanf(tmp,"%d:%d:%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_src1=(dd+1.0*mm/60+ss/3600)*PI/180;
m_edtsrc2.GetWindowText(tmp);
sscanf(tmp,"%d:%d:%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_src2=(dd+1.0*mm/60+ss/3600)*PI/180;
break;
case 1://dd°mm′ss″
m_edtsrc1.GetWindowText(tmp);
sscanf(tmp,"%d°%d′%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_src1=(dd+1.0*mm/60+ss/3600)*PI/180;
m_edtsrc2.GetWindowText(tmp);
sscanf(tmp,"%d°%d′%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_src2=(dd+1.0*mm/60+ss/3600)*PI/180;
break;
case 2://degree
m_edtsrc1.GetWindowText(tmp); m_src1=atof(tmp);m_src1 = m_src1*PI/180;
m_edtsrc2.GetWindowText(tmp); m_src2=atof(tmp);m_src2 = m_src2*PI/180;
break;
case 3://radian
m_edtsrc1.GetWindowText(tmp); m_src1=atof(tmp);
m_edtsrc2.GetWindowText(tmp); m_src2=atof(tmp);
break;
default://second
m_edtsrc1.GetWindowText(tmp); m_src1=atof(tmp);m_src1=m_src1/3600*PI/180;
m_edtsrc2.GetWindowText(tmp); m_src2=atof(tmp);m_src2=m_src2/3600*PI/180;
}
}
else{
m_edtsrc1.GetWindowText(tmp); m_src1=atof(tmp);
m_edtsrc2.GetWindowText(tmp); m_src2=atof(tmp);
}
m_edtsrc3.GetWindowText(tmp); m_src3=atof(tmp);
}
if(flag & 0x2){//dest
if (1 == m_DestCoordType) {
switch(m_DestBLUnit) {
case 0://dd:mm:ss
m_edtdest1.GetWindowText(tmp);
sscanf(tmp,"%d:%d:%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_dest1=(dd+1.0*mm/60+ss/3600)*PI/180;
m_edtdest2.GetWindowText(tmp);
sscanf(tmp,"%d:%d:%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_dest2=(dd+1.0*mm/60+ss/3600)*PI/180;
break;
case 1://dd°mm′ss″
m_edtdest1.GetWindowText(tmp);
sscanf(tmp,"%d°%d′%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_dest1=(dd+1.0*mm/60+ss/3600)*PI/180;
m_edtdest2.GetWindowText(tmp);
sscanf(tmp,"%d°%d′%f″",&dd,&mm,&ss);
// sscanf(tmp,"%d:%m:%f",&dd,&mm,&ss)
m_dest2=(dd+1.0*mm/60+ss/3600)*PI/180;
break;
case 2://degree
m_edtdest1.GetWindowText(tmp); m_dest1=atof(tmp);m_dest1 = m_dest1*PI/180;
m_edtdest2.GetWindowText(tmp); m_dest2=atof(tmp);m_dest2 = m_dest2*PI/180;
break;
case 3://radian
m_edtdest1.GetWindowText(tmp); m_dest1=atof(tmp);
m_edtdest2.GetWindowText(tmp); m_dest2=atof(tmp);
break;
default://second
m_edtdest1.GetWindowText(tmp); m_dest1=atof(tmp);m_dest1=m_dest1/3600*PI/180;
m_edtdest2.GetWindowText(tmp); m_dest2=atof(tmp);m_dest2=m_dest2/3600*PI/180;
}
}
else{
m_edtdest1.GetWindowText(tmp); m_dest1=atof(tmp);
m_edtdest2.GetWindowText(tmp); m_dest2=atof(tmp);
}
m_edtdest3.GetWindowText(tmp); m_dest3=atof(tmp);
}
}
void CDatumTranPara::InitializeDataToCtrl(const char flag/* =3 */)
{
CString tmp;
int dd,mm;float ss;
if(flag & 0x1){//src
if (1 == m_SrcCoordType) {//initialize the value of Cedit control
switch(m_SrcBLUnit) {
case 0://dd:mm:ss
m_src1=m_src1*180/PI;
dd=(int)m_src1; mm=(int)((m_src1-dd)*60);
ss=((m_src1-dd)*60-mm)*60;
tmp.Format("%d:%d:%f",dd,mm,ss);m_edtsrc1.SetWindowText(tmp);
m_src2=m_src2*180/PI;
dd=(int)m_src2; mm=(int)((m_src2-dd)*60);
ss=((m_src2-dd)*60-mm)*60;
tmp.Format("%d:%d:%f",dd,mm,ss);m_edtsrc2.SetWindowText(tmp);
break;
case 1://dd°mm′ss″
m_src1=m_src1*180/PI;
dd=(int)m_src1; mm=(int)((m_src1-dd)*60);
ss=((m_src1-dd)*60-mm)*60;
tmp.Format("%d°%d′%f″",dd,mm,ss);m_edtsrc1.SetWindowText(tmp);
m_src2=m_src2*180.0/PI;
dd=(int)m_src2; mm=(int)((m_src2-dd)*60);
ss=((m_src2-dd)*60-mm)*60;
tmp.Format("%d°%d′%f″",dd,mm,ss);m_edtsrc2.SetWindowText(tmp);
break;
case 2://degree
m_src1=m_src1*180.0/PI;tmp.Format("%f",m_src1);m_edtsrc1.SetWindowText(tmp);
m_src2=m_src2*180.0/PI;
tmp.Format("%f",m_src2);m_edtsrc2.SetWindowText(tmp);
break;
case 3://radian
tmp.Format("%f",m_src1);m_edtsrc1.SetWindowText(tmp);
tmp.Format("%f",m_src2);m_edtsrc2.SetWindowText(tmp);
break;
default://second
m_src1=m_src1*180.0/PI*3600;tmp.Format("%f",m_src1);m_edtsrc1.SetWindowText(tmp);
m_src2=m_src2*180.0/PI*3600;tmp.Format("%f",m_src2);m_edtsrc2.SetWindowText(tmp);
}
tmp.Format("%f",m_src3);m_edtsrc3.SetWindowText(tmp);
}
else
{
tmp.Format("%f",m_src1);m_edtsrc1.SetWindowText(tmp);
tmp.Format("%f",m_src2);m_edtsrc2.SetWindowText(tmp);
tmp.Format("%f",m_src3);m_edtsrc3.SetWindowText(tmp);
}
}
if(flag & 0x2){//dest
if (1 == m_DestCoordType) {//initialize the value of Cedit control
switch(m_DestBLUnit) {
case 0://dd:mm:ss
m_dest1=m_dest1*180.0/PI;
dd=m_dest1; mm=(m_dest1-dd)*60; ss=((m_dest1-dd)*60-mm)*60;
tmp.Format("%d:%d:%f",dd,mm,ss);m_edtdest1.SetWindowText(tmp);
m_dest2=m_dest2*180.0/PI;
dd=m_dest2; mm=(m_dest2-dd)*60; ss=((m_dest2-dd)*60-mm)*60;
tmp.Format("%d:%d:%f",dd,mm,ss);m_edtdest2.SetWindowText(tmp);
break;
case 1://dd°mm′ss″
m_dest1=m_dest1*180.0/PI;
dd=m_dest1; mm=(m_dest1-dd)*60; ss=((m_dest1-dd)*60-mm)*60;
tmp.Format("%d°%d′%f″",dd,mm,ss);m_edtdest1.SetWindowText(tmp);
m_dest2=m_dest2*180.0/PI;
dd=m_dest2; mm=(m_dest2-dd)*60; ss=((m_dest2-dd)*60-mm)*60;
tmp.Format("%d°%d′%f″",dd,mm,ss);m_edtdest2.SetWindowText(tmp);
break;
case 2://degree
m_dest1=m_dest1*180.0/PI;tmp.Format("%f",m_dest1);m_edtdest1.SetWindowText(tmp);
m_dest2=m_dest2*180.0/PI;tmp.Format("%f",m_dest2);m_edtdest2.SetWindowText(tmp);
break;
case 3://radian
tmp.Format("%f",m_dest1);m_edtdest1.SetWindowText(tmp);
tmp.Format("%f",m_dest2);m_edtdest2.SetWindowText(tmp);
break;
default://second
m_dest1=m_dest1*180.0/PI*3600;tmp.Format("%f",m_dest1);m_edtdest1.SetWindowText(tmp);
m_dest2=m_dest2*180.0/PI*3600;tmp.Format("%f",m_dest2);m_edtdest2.SetWindowText(tmp);
}
tmp.Format("%f",m_dest3);m_edtdest3.SetWindowText(tmp);
}
else
{
tmp.Format("%f",m_dest1);m_edtdest1.SetWindowText(tmp);
tmp.Format("%f",m_dest2);m_edtdest2.SetWindowText(tmp);
tmp.Format("%f",m_dest3);m_edtdest3.SetWindowText(tmp);
}
}
}
void CDatumTranPara::OnBnClickedRadSrcCar()
{
// TODO: 在此添加控件通知处理程序代码
m_SrcCoordType = 0;
}
void CDatumTranPara::OnBnClickedRadSrcGeo()
{
// TODO: 在此添加控件通知处理程序代码
m_SrcCoordType = 1;
}
void CDatumTranPara::OnCbnSelchangeSrcUnit()
{
int n=m_cmbSrcUnit.GetCurSel();
if(m_SrcBLUnit != n)
{
RetrieveDataFromCtrl(1);
m_SrcBLUnit = n;
InitializeDataToCtrl(1);
}
}
void CDatumTranPara::OnCbnSelchangeDestUnit()
{
int n=m_cmbDestUnit.GetCurSel();
if(m_DestBLUnit != n)
{
RetrieveDataFromCtrl(2);
m_DestBLUnit = n;
InitializeDataToCtrl(2);
}
}
void CDatumTranPara::OnBnClickedAdd()
{
//update retrieve data from controls;
// UpdateData(TRUE);
RetrieveDataFromCtrl();
//save data and show those in list control;
CString strtmp;
char num[4];
//num of record
m_num = m_list_Data.GetItemCount();
if(m_num>99) {
AfxMessageBox(GetResString(IDS_DATUMTRAN_TOOMUCHDATA));
return;
}
_itoa_s(m_num,num,3,10);
m_list_Data.InsertItem(m_num++,num);
//for each subitem;
int j=1;
m_edtsrc1.GetWindowText(strtmp);m_list_Data.SetItemText(m_num-1,j++,strtmp);
m_edtsrc2.GetWindowText(strtmp);m_list_Data.SetItemText(m_num-1,j++,strtmp);
m_edtsrc3.GetWindowText(strtmp);m_list_Data.SetItemText(m_num-1,j++,strtmp);
m_edtdest1.GetWindowText(strtmp);m_list_Data.SetItemText(m_num-1,j++,strtmp);
m_edtdest2.GetWindowText(strtmp);m_list_Data.SetItemText(m_num-1,j++,strtmp);
m_edtdest3.GetWindowText(strtmp);m_list_Data.SetItemText(m_num-1,j++,strtmp);
}
void CDatumTranPara::OnBnClickedDelete()
{
UINT i, uCount = m_list_Data.GetSelectedCount();
int nItem = -1;
// Update all of the selected items.
if (uCount > 0)
{
for (i=0;i < uCount;i++)
{
nItem = m_list_Data.GetNextItem(-1, LVNI_SELECTED);
if(nItem == -1)
nItem++;
m_list_Data.DeleteItem(nItem);
}
//modify num;
uCount = m_list_Data.GetItemCount();
char num[4];
for (i=0;i< uCount; i++){
_itoa_s(i,num,3,10);
m_list_Data.SetItemText(i,0,num);
}
}
else//delete last record;
{
i=m_list_Data.GetItemCount();
m_list_Data.DeleteItem(i-1);
}
}
void CDatumTranPara::OnBnClickedOk()
{
if(((CComboBox*)GetDlgItem(IDC_SRC_ELLIP))->GetCurSel() ==
((CComboBox*)GetDlgItem(IDC_DEST_ELLIP))->GetCurSel()){
AfxMessageBox(GetResString(IDS_ALARM1));
return;
}
_datumtran.tx = m_Tx;
_datumtran.ty = m_Ty;
_datumtran.tz = m_Tz;
_datumtran.wx = m_Wx;
_datumtran.wy = m_Wy;
_datumtran.wz = m_Wz;
_datumtran.factor = m_factor;
_datumtran.model = m_cmbModelID.GetCurSel()+1;
_datumtran.srcellip = ((CComboBox*)GetDlgItem(IDC_SRC_ELLIP))->GetCurSel();
_datumtran.destellip = ((CComboBox*)GetDlgItem(IDC_DEST_ELLIP))->GetCurSel();
_bwsmodify = TRUE;
OnOK();
}
void CDatumTranPara::Localize()
{
SetWindowText(GetResString(IDS_CALDATUMPARA));
GetDlgItem(IDC_NAME)->SetWindowText(GetResString(IDS_NAME));
GetDlgItem(IDC_MODEL)->SetWindowText(GetResString(IDS_MODEL));
GetDlgItem(IDC_RAD_ASSIGN)->SetWindowText(GetResString(IDS_ASSIGNPARA));
GetDlgItem(IDC_RAD_CALCULATE)->SetWindowText(GetResString(IDS_CALPARA));
GetDlgItem(IDC_SRCCOORD)->SetWindowText(GetResString(IDS_SRCCOORD));
GetDlgItem(IDC_DESTCOORD)->SetWindowText(GetResString(IDS_DESTCOORD));
GetDlgItem(IDC_RAD_SRC_CAR)->SetWindowText(GetResString(IDS_ECEF));
GetDlgItem(IDC_RAD_DEST_CAR)->SetWindowText(GetResString(IDS_ECEF));
GetDlgItem(IDC_RAD_SRC_GEO)->SetWindowText(GetResString(IDS_GEO));
GetDlgItem(IDC_RAD_DEST_GEO)->SetWindowText(GetResString(IDS_GEO));
GetDlgItem(IDC_SRCELLIP)->SetWindowText(GetResString(IDS_ELLIPSOID));
GetDlgItem(IDC_DESTELLIP)->SetWindowText(GetResString(IDS_ELLIPSOID));
GetDlgItem(ID_ADD)->SetWindowText(GetResString(IDS_ADD));
GetDlgItem(ID_DELETE)->SetWindowText(GetResString(IDS_DELETE));
GetDlgItem(ID_IMPORT)->SetWindowText(GetResString(IDS_IMPORT));
GetDlgItem(ID_CALCULATE)->SetWindowText(GetResString(IDS_CAL));
GetDlgItem(IDOK)->SetWindowText(GetResString(IDS_OK));
GetDlgItem(IDC_PARA)->SetWindowText(GetResString(IDS_PARA));
GetDlgItem(IDC_TRANSLATION)->SetWindowText(GetResString(IDS_TRANSLATIONPARA));
GetDlgItem(IDC_ROTATION)->SetWindowText(GetResString(IDS_ROTATIONPARA));
GetDlgItem(IDC_FACTOR)->SetWindowText(GetResString(IDC_DATUMFACTOR));
UpdateData(FALSE);
}
void CDatumTranPara::OnBnClickedCalculate()
{
if(((CComboBox*)GetDlgItem(IDC_SRC_ELLIP))->GetCurSel() ==
((CComboBox*)GetDlgItem(IDC_DEST_ELLIP))->GetCurSel()){
AfxMessageBox(GetResString(IDS_ALARM1));
return;
}
u1 nCount=m_list_Data.GetItemCount();
if (nCount<3) {
AfxMessageBox(GetResString(IDS_ALARM2));
return;
}
//name the parameters.
CString tmp;
((CComboBox*)GetDlgItem(IDC_SRC_ELLIP))->GetWindowText(tmp);
m_tranName=tmp + "_";
((CComboBox*)GetDlgItem(IDC_DEST_ELLIP))->GetWindowText(tmp);
m_tranName += tmp;
m_cmbModelID.GetWindowText(tmp);
m_tranName = m_tranName +"_"+tmp;
// CVector
UpdateData(FALSE);
}
void CDatumTranPara::OnCbnSelchangeSrcEllip()
{
//name the parameters.
CString tmp;
u1 i=0;
CComboBox* pcmb;
pcmb = ((CComboBox*)GetDlgItem(IDC_SRC_ELLIP));
pcmb->GetLBText(pcmb->GetCurSel(),tmp);
m_tranName=tmp + "_";
pcmb = ((CComboBox*)GetDlgItem(IDC_DEST_ELLIP));
pcmb->GetLBText(pcmb->GetCurSel(),tmp);
m_tranName += tmp;
m_cmbModelID.GetWindowText(tmp);
m_tranName = m_tranName +"_"+tmp;
UpdateData(FALSE);
}
void CDatumTranPara::OnCbnSelchangeDestEllip()
{
//name the parameters.
CString tmp;
u1 i=0;
CComboBox* pcmb;
pcmb = ((CComboBox*)GetDlgItem(IDC_SRC_ELLIP));
pcmb->GetLBText(pcmb->GetCurSel(),tmp);
m_tranName=tmp + "_";
pcmb = ((CComboBox*)GetDlgItem(IDC_DEST_ELLIP));
pcmb->GetLBText(pcmb->GetCurSel(),tmp);
m_tranName += tmp;
m_cmbModelID.GetWindowText(tmp);
m_tranName = m_tranName +"_"+tmp;
UpdateData(FALSE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -