⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asyncsendmessage.cpp

📁 mtk simulator v2 new source code
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -