📄 addeditdialog.cpp
字号:
}
int CAddEditDialog::ConvertToNumber(LPWSTR newstring, unsigned long *sum)
{
LPWSTR copyofnewstring = newstring;
int counter=0;
*sum = 0;
while(*copyofnewstring!='\0')
{
if((*copyofnewstring>='0' && *copyofnewstring<='9')&& counter <10)
{
int numericval;
numericval = (*copyofnewstring -48);
(*sum) = ((*sum)*10) + numericval;
copyofnewstring++;
counter++;
}
else
break;
}
if(*copyofnewstring == '\0')
return(-1);
else if(counter ==10)
{
OutPutMessage(TooLongAValue,newstring);
return(TooLongAValue);
}
else
{
OutPutMessage(ImproperInput,newstring);
return(ImproperInput);
}
}
void CAddEditDialog::OutPutMessage(Error_Type type_of_error,LPWSTR newstring)
{
CString MessageToBeDisplayed ;
switch(type_of_error)
{
case TooLongAValue:
AfxFormatString1(MessageToBeDisplayed,IDS_STRING_LONG_VAL_INDICATION,(const U16*)newstring);
AfxMessageBox(MessageToBeDisplayed);
break;
case ImproperInput:
AfxFormatString1(MessageToBeDisplayed,IDS_STRING_IMPROPER_VAL_INDICATION,(const U16*)newstring);
AfxMessageBox(MessageToBeDisplayed);
//AfxMessageBox(s);
break;
}
}
void CAddEditDialog::OnCbnSelendokAppcomboPan()
{
CString window_text;
AppIdCombo.GetLBText(AppIdCombo.GetCurSel(),window_text);
SendButton.EnableWindow(0);
GetMessagesForApp(window_text);
MsgIdCombo.SetCurSel(0);
NewDataSetButton.EnableWindow(0);
MsgIdCombo.GetWindowText(window_text);
GetDataSetsForMsg(window_text);
combo_refresh_flag = 0;
// TODO: Add your control notification handler code here
}
void CAddEditDialog::GetMessagesForApp(CString AppName)
{
CMessageManager obj_for_temp_use;
MsgIdCombo.ResetContent();
DSIdCombo.ResetContent();
datawindow.DeleteAllItems();
CString message_name;
CList<CString,CString&>* message_list = obj_for_temp_use.GetMessageListForApp(AppName);
if(message_list->GetCount())
{
for(POSITION pos = message_list->GetHeadPosition();pos!= NULL;)
{
message_name = (CString) (message_list->GetNext (pos));
MsgIdCombo.AddString(message_name);
}
}
}
void CAddEditDialog::GetDataSetsForMsg(CString window_text)
{
/*The control resetting part for filling them afresh.....*/
CString stringID_string;
DSIdCombo.ResetContent();
datawindow.DeleteAllItems();
DefaultDataSetCombo.ResetContent();
InputModeCombo.SetCurSel(-1);
stringID_string.LoadString(IDS_STRING_NO_DEFAULT_DS);
DefaultDataSetCombo.AddString(stringID_string);
DefaultDataSetCombo.SetCurSel(0);
edit_sel_ds_descr.SetWindowText(_T(""));
//to enable the controls...which were disabled in case of no datasets....
DataSetFreqCombo.EnableWindow(1);
DataSetTimerCombo.EnableWindow(1);
datawindow.EnableWindow(1);
CPtrList * ptr_to_outgoing_lst = cmessagemanager.m_plstOutGoingMsg;
CString msgformat = "";
COutgoingMessage * ptr_to_outgoing_msg;
CPtrList * ptr_fmt_lst;
UINT32 messageid = _ttoi(window_text);
DataSetFreqCombo.EnableWindow(1); //enabling the combos so that if the message has dataset they should be enabled
DataSetTimerCombo.EnableWindow(1); //they are disabled only if the msg is using plugin....
DSIdCombo.EnableWindow(1); //should be enbled in case previous msg selected was which did not have datasets
DefaultDataSetCombo.EnableWindow(1);
InputModeCombo.EnableWindow(1);
if(messageid == 0)
return;
if(ptr_to_outgoing_lst)
{
if(ptr_to_outgoing_lst->GetCount())
{
for(POSITION pos = ptr_to_outgoing_lst->GetHeadPosition();pos!= NULL;)
{
ptr_to_outgoing_msg = (COutgoingMessage *) (ptr_to_outgoing_lst->GetNext (pos));
if(ptr_to_outgoing_msg->GetMessageId() == messageid)
{
msgformat = ptr_to_outgoing_msg->GetFormat();
break;
}
}
}
if(!msgformat.CompareNoCase(_T("NULL")))
{
SendButton.EnableWindow(1); //enabled bcos there is plugin so we can send
NewDataSetButton.EnableWindow(0);//since it is plugin case we can't add a dataset...
DataSetFreqCombo.EnableWindow(0);//disable these combos for the msg uses plugin
DataSetTimerCombo.EnableWindow(0);
DataSetTimerCombo.SetCurSel(-1);
DataSetFreqCombo.SetCurSel(-1);
DefaultDataSetCombo.EnableWindow(0);
InputModeCombo.EnableWindow(0);
DefaultDataSetCombo.ResetContent();
LoadString(library_identifier,IDS_STRING_MESSAGE_WITH_PLUGIN, stringID_to_string.GetBuffer(MAX_LANG_RES_STRING_LEN+1),MAX_LANG_RES_STRING_LEN);
DSIdCombo.AddString(stringID_to_string);
DefaultDataSetCombo.AddString(stringID_to_string);
DefaultDataSetCombo.SetCurSel(0);
DSIdCombo.EnableWindow(0);
DSIdCombo.SetCurSel(0);
return;
}
ptr_fmt_lst = cmessagemanager.m_pFormatList;
CFormat* FmtPtr;
CDataList datalist;
if(ptr_fmt_lst)
{
if(ptr_fmt_lst->GetCount())
{
for(POSITION pos = ptr_fmt_lst->GetHeadPosition();pos!= NULL;)
{
FmtPtr = (CFormat *) (ptr_fmt_lst->GetNext (pos));
CString name = FmtPtr->GetName();
if(!msgformat.CompareNoCase((LPCTSTR)name))
{
datalist = FmtPtr->GetDataList();
break;
}
}
}
if(!datalist.GetName().CompareNoCase(_T(""))) //if we don't have a datalist.....
{
DataSetFreqCombo.SetCurSel(-1);
DataSetFreqCombo.EnableWindow(0);
DataSetTimerCombo.SetCurSel(-1);
DataSetTimerCombo.EnableWindow(0);
datawindow.EnableWindow(0);
DSIdCombo.EnableWindow(0); //since no datasets
NewDataSetButton.EnableWindow(0);
return;
}
SetWindowtextInCombo(InputModeCombo,FmtPtr->GetInputMode());
CData dataobj;
CString datalistname = datalist.GetName();
CList<CVar,CVar&>& varlist = FmtPtr->GetVarList();
CVar variable;
if(varlist.GetCount() > 0)
{
datawindow.DeleteAllItems();
for(POSITION pos = varlist.GetHeadPosition();pos!= NULL;)
{
variable =(CVar) varlist.GetNext(pos);
CDataType dt = variable.GetDataType();
datawindow.InsertItem(0,dt.GetName());
CString var = variable.GetName();
datawindow.SetItemText(0,1,var);
datawindow.SetItemText(0,2,variable.GetDescription());
}
}
CList<CData,CData&>& dataset_lst = datalist.GetData();
/*This is the case when we have datasets in the datalist....*/
if(dataset_lst.GetCount() > 0 && varlist.GetCount() > 0)
{
SendButton.EnableWindow(1); //enabling send button bcos ...since there are datasets to send
DSIdCombo.ResetContent();
for(POSITION pos = dataset_lst.GetHeadPosition();pos!= NULL;)
{
dataobj = dataset_lst.GetNext(pos);
DSIdCombo.AddString(dataobj.GetName());
DefaultDataSetCombo.AddString(dataobj.GetName());
}
CString DefaultDataSetName = datalist.GetDefault();
if(DefaultDataSetName.CompareNoCase(_T("")) && DefaultDataSetName.CompareNoCase(_T("NULL")))
{
SetWindowtextInCombo(DSIdCombo,DefaultDataSetName);
SetWindowtextInCombo(DefaultDataSetCombo,DefaultDataSetName);
}
else //the case when we have either the default data set name as "" or "NULL"
{
DefaultDataSetName = dataobj.GetName();
SetWindowtextInCombo(DSIdCombo,DefaultDataSetName);
}
for( pos = dataset_lst.GetHeadPosition();pos!= NULL;)
{
dataobj = dataset_lst.GetNext(pos);
if(!dataobj.GetName().CompareNoCase((LPCTSTR)DefaultDataSetName))
{
CList<CValue,CValue&>& value_list = dataobj.GetValueList();
CValue val;
if(value_list.GetCount() && varlist.GetCount())
{
UINT32 no_of_items_in_datawindow = datawindow.GetItemCount() - 1;
for(POSITION pos = value_list.GetHeadPosition();pos!= NULL;)
{
val =(CValue)value_list.GetNext(pos);
datawindow.SetItemText(no_of_items_in_datawindow--,3,val.GetSourceValue());
}
}
edit_sel_ds_descr.SetWindowText(dataobj.GetDescription());
FuncForProperDisplayInFreqTimerCombos(dataobj);
break;
}
}
}
else /*the case when we don't have datasets in the datalist....*/
{
DataSetFreqCombo.SetCurSel(-1);
DataSetFreqCombo.EnableWindow(0);
DataSetTimerCombo.SetCurSel(-1);
DataSetTimerCombo.EnableWindow(0);
datawindow.EnableWindow(0);//the case is of no datasets so DSIdCombo disabled
DSIdCombo.EnableWindow(0);
AfxMessageBox(IDS_STRING_NO_DATASETS);
}
//new dataset button is enbled bcos...now it is feasible to do so.....
NewDataSetButton.EnableWindow(1);
}
}
}
void CAddEditDialog::OnCbnSelendokMsgcomboPan()
{
DSIdCombo.ResetContent();
datawindow.DeleteAllItems();
CString window_text;
MsgIdCombo.GetLBText(MsgIdCombo.GetCurSel(),window_text);
SendButton.EnableWindow(0); //diasabling send button ...will be enabled only if the message has some datasets
GetDataSetsForMsg(window_text); //or has a plugin...
msg_combo_refresh_flag = 0;
}
void CAddEditDialog::OnCbnSelendokDscomboPan()
{
CString sMsgId, msgformat;
MsgIdCombo.GetLBText(MsgIdCombo.GetCurSel(),sMsgId);
CPtrList * ptr_to_fmt_lst;
CPtrList * ptr_to_outgoing_lst = cmessagemanager.m_plstOutGoingMsg;
COutgoingMessage * ptr_to_outgoing_msg;
UINT32 messageid = _ttoi(sMsgId);
if(ptr_to_outgoing_lst)
{
if(ptr_to_outgoing_lst->GetCount())
{
for(POSITION pos = ptr_to_outgoing_lst->GetHeadPosition();pos!= NULL;)
{
ptr_to_outgoing_msg = (COutgoingMessage *) (ptr_to_outgoing_lst->GetNext (pos));
if(ptr_to_outgoing_msg->GetMessageId() == messageid)
{
msgformat = ptr_to_outgoing_msg->GetFormat();
}
}
}
ptr_to_fmt_lst = cmessagemanager.m_pFormatList;
CFormat* FmtPtr;
CDataList datalist;
if(ptr_to_fmt_lst)
{
if(ptr_to_fmt_lst->GetCount())
{
for(POSITION pos = ptr_to_fmt_lst->GetHeadPosition();pos!= NULL;)
{
FmtPtr = (CFormat *) (ptr_to_fmt_lst->GetNext (pos));
CString name = FmtPtr->GetName();
if(!msgformat.CompareNoCase((LPCTSTR)name))
{
datalist = FmtPtr->GetDataList();
break;
}
}
}
CData dataobj;
CString datalistname = datalist.GetName();
CList<CData,CData&>& dataset = datalist.GetData();
CString window_text ;
DSIdCombo.GetLBText(DSIdCombo.GetCurSel(),window_text);
if(dataset.GetCount() > 0)
{
for(POSITION pos = dataset.GetHeadPosition();pos!= NULL;)
{
dataobj = dataset.GetNext(pos);
if(!window_text.CompareNoCase(dataobj.GetName()))
{
edit_sel_ds_descr.SetWindowText(dataobj.GetDescription());
FuncForProperDisplayInFreqTimerCombos(dataobj);
CList<CValue,CValue&>& value_list = dataobj.GetValueList();
CValue val;
if(value_list.GetCount())
{
UINT32 item_no = datawindow.GetItemCount() -1;
for(POSITION pos = value_list.GetHeadPosition();pos!= NULL;)
{
val =(CValue)value_list.GetNext(pos);
datawindow.SetItemText(item_no--,3,val.GetSourceValue());
}
}
break;
}
}
}
}
}
}
void CAddEditDialog::OnBnClickedNewDataSetButton()
{
if(!NewDataSetNameEdit.IsWindowVisible())
{
if(has_been_edited)
{
if(IDYES == AfxMessageBox(IDS_STRING_EDITED_DATA_LOSS,MB_YESNO))
{
Prepare3rdColumnForNewDataSet();
SetTheHasBeenEditedFlag(0);
if(set_msg_attrib_flag)
{
SaveSendButton.EnableWindow(1);
SendButton.EnableWindow(1);
}
}
}
else
{
Prepare3rdColumnForNewDataSet();
SetTheHasBeenEditedFlag(0);
if(set_msg_attrib_flag)
{
SaveSendButton.EnableWindow(1);
SaveButton.EnableWindow(1);
}
}
}
else
{
if(!(CheckAndNotifyForNewDataSetAddition()))
{
Prepare3rdColumnForNewDataSet();
SetTheHasBeenEditedFlag(0);
if(set_msg_attrib_flag)
{
SaveSendButton.EnableWindow(1);
SendButton.EnableWindow(1);
}
}
}
// TODO: Add your control notification handler code here
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -