📄 asyncsendmessage.cpp
字号:
if(nID == 3)
{
//*strSText = m_treeAppControl.GetItemText(htree);//datalist
stMsgStruct->strMsgValue = m_treeAppControl.GetItemText(htree);
//*strSText = m_treeAppControl.GetItemText(m_treeAppControl.GetParentItem(htree));//message
stMsgStruct->strMsgResponse = m_treeAppControl.GetItemText((m_treeAppControl.GetParentItem(htree)));//message
stMsgStruct->nMsgId = 3;
::PostMessage(hWnd,WM_SEND_ASYNC_EVENT_MSG,0,(LPARAM) stMsgStruct);
//datalist is selected
}
else if(nID == 2)
{
//Message is selected with default datalist
//*strSText = m_treeAppControl.GetItemText(htree);//message
stMsgStruct->strMsgResponse = m_treeAppControl.GetItemText(htree);//message
//*strSText = m_treeAppControl.GetItemText(m_treeAppControl.GetChildItem(htree));//datalist
stMsgStruct->strMsgValue = m_treeAppControl.GetItemText((m_treeAppControl.GetChildItem(htree)));
stMsgStruct->nMsgId = 2;
//stPopMsg->nMsgId
//stPopMsg->strMsgValue
::PostMessage(hWnd,WM_SEND_ASYNC_EVENT_MSG,0,(LPARAM) stMsgStruct);
}
else if(nID == 1)
{
stMsgStruct->nMsgId = 1;
//*strSText = m_treeAppControl.GetItemText(htree);//message
stMsgStruct->strMsgResponse = m_treeAppControl.GetItemText(htree);//message
//::PostMessage(hWnd,WM_SEND_ASYNC_EVENT_MSG,0,LPARAM(strSText));
::PostMessage(hWnd,WM_SEND_ASYNC_EVENT_MSG,0,(LPARAM) stMsgStruct);
}
//get the value from the xml and pop up the appropriate dialog box and send the message from there
//AfxMessageBox(_T("Pop up value clicked"));
//get the event name and then send it to the main handler
//so that message can be handled and send to socket
}
//CDialog::OnOK();
}
/**************************************************************
FUNCTION NAME : GetAllAsyncEventsForApp
PURPOSE : Gets the list of Async messages associated with a particular application
INPUT PARAMETERS : CString
OUTPUT PARAMETERS : nil
RETURNS : CPtrList*
REMARKS : Gets the list of async messages for an application
**************************************************************/
CPtrList* CAsyncSendMessage::GetAllAsyncEventsForApp(CString strRecvd)
{
CPtrList *ptrList = new CPtrList();
CAsyncMessageSeq *pAsyncMessage;
CString strXMLEvent;
if(cmessagemanager.m_plstAsyncMsg->GetCount() > 0)//check if emtpy message list
{
for( POSITION pos = cmessagemanager.m_plstAsyncMsg->GetHeadPosition(); pos != NULL;)
{
pAsyncMessage = (CAsyncMessageSeq*)(cmessagemanager.m_plstAsyncMsg->GetNext( pos )) ;
strXMLEvent = pAsyncMessage->GetMessageName();
if(!strXMLEvent.CompareNoCase(strRecvd))
//add it into the Map
{
//now peek into the outgoing message list for this messagid
//and get the CMessage object to be done
//keep on adding into the Ptr List and return it
CList<UINT32, UINT32&>& messageList = pAsyncMessage->GetMessageList();
if(messageList.GetCount() > 0)
{
for( POSITION posResp = messageList.GetHeadPosition(); posResp != NULL; )
{
ptrList->AddTail(cmessagemanager.LocateMessageInList(cmessagemanager.m_plstOutGoingMsg,messageList.GetNext(posResp)));
}
}
if(ptrList->GetCount() <= 0)
AMLOGERROR(_T("Inside GetAllAsync Messages for App no found error"));
}
}
}
return ptrList;
}
/**************************************************************
FUNCTION NAME : AddDataListInTree
PURPOSE : Associates the various data items for a particular message
INPUT PARAMETERS : CPtrList *ptrAyncEventsList,CString strRecvd,HTREEITEM htree
OUTPUT PARAMETERS : nil
RETURNS : void
REMARKS : This function adds the data list items specified in the XML file and displays it
below the message.
**************************************************************/
void CAsyncSendMessage::AddDataListInTree(CPtrList *ptrAyncEventsList,CString strRecvd,HTREEITEM htree)
{
int iCount1=0;
CFormat *pFormat;// = new CFormat();
CDataList dataList;
CData dataObj;
for( POSITION pos = ptrAyncEventsList->GetHeadPosition(); pos != NULL;)
{
CMessage* pMessage = (CMessage*)(ptrAyncEventsList->GetNext( pos ));
pFormat = cmessagemanager.GetFormatForMessage(pMessage);
HTREEITEM h3 = m_treeAppControl.InsertItem(pMessage->GetMessageName(), htree);
m_treeAppControl.SetItemData(h3,2);
if(pFormat!=NULL)
{
CList<CVar,CVar&>& varList = pFormat->GetVarList();
dataList = pFormat->GetDataList();
CList<CData,CData&>& data= dataList.GetData();
if((data.GetCount() > 0) && (varList.GetCount() > 0))
{
int iCount2 = 0;
for( POSITION datapos = data.GetHeadPosition(); datapos != NULL;)
{
dataObj = (data.GetNext( datapos ));
HTREEITEM h4 = m_treeAppControl.InsertItem(dataObj.GetName(), h3);
m_treeAppControl.SetItemData(h4,3);
}
}
}
}
}
void CAsyncSendMessage::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos)
{
if (lpwndpos->cx == -1)
if (lpwndpos->cy == -1) // is init time
{
lpwndpos->x = 257; // change here if you want to move left or right the window.
lpwndpos->y = 41; // change here if you want to move top or bottom the window.
CDialog::OnWindowPosChanging(lpwndpos);
}
}
void CAsyncSendMessage::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
HTREEITEM htree = m_treeAppControl.GetSelectedItem();
if(htree)
{
if(m_treeAppControl.GetItemData(htree) == 0)
{
AfxMessageBox(IDS_STRING_PLZ_SEL,MB_OK);
}
else
{
OnOK();
}
}
else
AfxMessageBox(IDS_STRING_PLZ_SEL_ITEM,MB_OK);
}
LRESULT CAsyncSendMessage::OnClickChangeCTreeCtrl(WPARAM a,LPARAM treeitem)
{
HTREEITEM *titem = (HTREEITEM*)treeitem;
UINT32 freqvalue,timervalue,MessageId;
CString msg;
CString strcontroltxt;
char *dummy = (char*) malloc(sizeof(char)*10);
CMessageManager *messagemanager = new CMessageManager();
CString defaultdatasetname;
int treelevel;
treelevel=0;
HTREEITEM temptreeitem = *titem;
while(temptreeitem )
{
treelevel++;
temptreeitem = m_treeAppControl.GetParentItem(temptreeitem );
}
switch(treelevel)
{
case 4:/*---Tree level 4 shows its a Dataset ----------------------------------*/
msg = m_treeAppControl.GetItemText(m_treeAppControl.GetParentItem(*titem));
MessageId = messagemanager->GetMsgIdFromMsgName(msg);
freqvalue = messagemanager->GetFreq (MessageId,m_treeAppControl.GetItemText(*titem));
timervalue= messagemanager->GetTimer(MessageId,m_treeAppControl.GetItemText(*titem));
if(freqvalue >1 && timervalue==0) timervalue=1;
if(freqvalue ==1 && timervalue>0) timervalue=0;
mFreq.SetWindowText(CString(itoa(freqvalue,dummy,10)));
mTimer.SetWindowText(CString(itoa(timervalue,dummy,10)));
LoadString(library_identifier,IDS_STRING_DS_INPUT_MODE,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1), MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt);
cmbDefaultDataSet.SetWindowText(m_treeAppControl.GetItemText(*titem));
break;
case 3:/*--Tree level 3 shows its a Message ----------------------------------*/
msg = m_treeAppControl.GetItemText(m_treeAppControl.GetSelectedItem());
MessageId = messagemanager->GetMsgIdFromMsgName(msg);
defaultdatasetname = messagemanager->GetDefaultDataSetForMessage(MessageId);
freqvalue = messagemanager->GetFreq (MessageId,defaultdatasetname);
timervalue= messagemanager->GetTimer(MessageId,defaultdatasetname);
if(freqvalue >1 && timervalue==0) timervalue=1;
if(freqvalue ==1 && timervalue>0) timervalue=0;
mFreq.SetWindowText(CString(itoa(freqvalue,dummy,10))) ;
mTimer.SetWindowText(CString(itoa(timervalue,dummy,10))) ;
// if message is selected, then its default dataset will be considered
// and displayed in default dataset
LoadString(library_identifier,IDS_STRING_DEFAULT_DS,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1), MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt); //when message is selected then there should be Default Dataset in the static control
cmbDefaultDataSet.SetWindowText(defaultdatasetname);
break;
case 2:/*--Tree level 2 shows its a Message Sequence -------------------------*/
mFreq.SetWindowText (_T(""));
mTimer.SetWindowText(_T(""));
LoadString(library_identifier,IDS_STRING_DEFAULT_DS,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1), MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt);
cmbDefaultDataSet.SetWindowText(CString("Not Applicable"));
break;
case 1:/*--Tree level 1 shows its root ----------------------------------------*/
mFreq.SetWindowText (_T(""));
mTimer.SetWindowText(_T(""));
LoadString(library_identifier,IDS_STRING_DEFAULT_DS,strcontroltxt.GetBuffer(MAX_LANG_RES_STRING_LEN+1), MAX_LANG_RES_STRING_LEN);
static_dataset.SetWindowText(strcontroltxt);
cmbDefaultDataSet.SetWindowText(CString("Not Applicable"));
break;
}
free(dummy);
free(messagemanager);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -