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

📄 testdlg.cpp

📁 模拟手机源程序,做短信系统(源码)
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		}
		sTmp=sRecord.Left(m);
		SSBINFO.RexINFO[n].nBtsRex=atoi(sTmp);
		sRecord=sRecord.Right(sRecord.GetLength()-m-1);
	}
	SSBINFOContainer.insert(SSBINFO_MAP::value_type("",SSBINFO));
	return 0;
}

int CTestDlg::WriteConnent(STRUCT_MSG_DELIVER* pDeliver,CString sCmd)
{
	int n;
	BYTE nCount=0;
	CString szTmp;
	szTmp.Format("%s0000000000",sCmd);
	memcpy(pDeliver->szMsgConnent,szTmp,12);	//$+CMDID,USERID,PSW
	nCount+=12;
	szTmp.Format("%03d%02d%02d",INFOPointer->second.nMCC,
								INFOPointer->second.nMNC,
								INFOPointer->second.nTa);
	memcpy(pDeliver->szMsgConnent+nCount,szTmp,7);		
	nCount+=7;
	for (n=0;n<BTSBASE; n++)
	{
		if (INFOPointer->second.RexINFO[n].nBtsRex<=0 || 
			INFOPointer->second.RexINFO[n].nBtsRex>63)
			break;
		szTmp.Format("%04X%04X%03d%02d",INFOPointer->second.RexINFO[n].tBss.lLocId,
										INFOPointer->second.RexINFO[n].tBss.lCellId,
										INFOPointer->second.RexINFO[n].tBss.lBsicId,
										INFOPointer->second.RexINFO[n].nBtsRex);
		memcpy(pDeliver->szMsgConnent+nCount,szTmp,13);
		nCount+=13;						
	}
	//校验和
	pDeliver->szMsgConnent[nCount]='$';
	for(n=1; n<nCount; n++)
		pDeliver->szMsgConnent[nCount] ^= pDeliver->szMsgConnent[n];
	nCount++;
	pDeliver->nMsgLen=nCount;
	if (INFOPointer++==SSBINFOContainer.end())
		SSBINFOContainer.begin();
	return 0;
}

int CTestDlg::HexString(char* szSourceConnent,int nLength,CString& szConnect)
{
	CString szTmp;
	szConnect="";
	for (int n=0; n<nLength; n++)
	{
		szTmp.Format("%02X",szSourceConnent[n]);
		szConnect+=szTmp;
	}
	return 0;
}

void CTestDlg::ReadRegister()
{
	/*HKEY hKey;
	DWORD dwDisposition; 
	unsigned char ucTemp[30];
	unsigned long nType,nLen;
	char chTemp[30];
	DWORD dwType,dwLen;
	DWORD dwTemp;
	dwLen=sizeof(dwTemp);
	RegCreateKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\CTK\\SSBTest",
		0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,
		NULL,&hKey,&dwDisposition);
	nLen=sizeof(m_IP_ADDR);
	if (RegQueryValueEx(hKey,"IPAddress",NULL,&nType,ucTemp,&nLen)!=ERROR_SUCCESS)
	{
		strcpy(chTemp,"192.168.0.180");
		RegSetValueEx(hKey,"IPAddress",0,REG_SZ,(unsigned char*)chTemp,strlen(chTemp));
		strcpy(m_IP_ADDR,chTemp);
	}
	else
		strcpy(m_IP_ADDR,(char *)ucTemp);
	strcpy(chTemp,"192.168.0.180");
	strcpy(m_IP_ADDR,chTemp);
	if (RegQueryValueEx(hKey,"IpPort",NULL,&dwType,(LPBYTE)&dwTemp,&dwLen)!=ERROR_SUCCESS)
	{
		dwTemp=8888;
		RegSetValueEx(hKey,"IpPort",0,REG_DWORD,(BYTE*)&dwTemp,dwLen);
		m_PORT=8888;
	}
	else
		m_PORT=dwTemp;)*/
	m_PORT=GetPrivateProfileInt("SYSINFO","SMCPORT",8888,INIFILE);
	GetPrivateProfileString("SYSINFO","SERVERIP ","127.0.0.1",m_IP_ADDR,sizeof(m_IP_ADDR),INIFILE);
}

CString CTestDlg::TimeToStr(CTime tNow)
{
	CString sNow;
	sNow.Format("%4d-%02d-%02d %02d:%02d:%02d",
		tNow.GetYear(),tNow.GetMonth(),tNow.GetDay(),
		tNow.GetHour(),tNow.GetMinute(),tNow.GetSecond());
	return sNow;
}

void CTestDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	switch (nIDEvent)
	{
	case 1:
//	m_wndStatusBar.SetPaneText(1,"状态:"+m_state,TRUE);
//	m_wndStatusBar.SetPaneText(2,"时间:"+TimeToStr(CTime::GetCurrentTime()),TRUE);
		/*
		char buffer[20];
		 memset(buffer,0,sizeof(buffer));

		 _itoa(command_count_send, buffer, 10  );
         m_state=buffer;
      	 m_wndStatusBar.SetPaneText(0,"指令发送数:"+m_state,TRUE);

		
         _itoa(command_count_rec, buffer, 10  );
         m_state=buffer;
         m_wndStatusBar.SetPaneText(1,"指令接收数:"+m_state,TRUE); 
		
         _itoa(lt_count_send, buffer, 10  );
         m_state=buffer;
         m_wndStatusBar.SetPaneText(2,"聊天发送数:"+m_state,TRUE);

         _itoa(lt_count_rec, buffer, 10  );
         m_state=buffer;
		m_wndStatusBar.SetPaneText(3,"聊天接收数:"+m_state,TRUE);
		*/
		break;
	}
	CDialog::OnTimer(nIDEvent);
}

void CTestDlg::OnSend() 
{
 	BOOL bLogin = FALSE;

	UpdateData();
 	
	//校验
	if(m_SimNo.IsEmpty() || (m_SimNo.GetLength()!=11))
	{
		AfxMessageBox("用户手机号输入有误!");
		return;
	}
	for(int k=0 ; k<g_arrstrPhone.GetSize() ; k++)
		if(g_arrstrPhone.GetAt(k) == m_SimNo)	bLogin = TRUE;
	if(!bLogin)
	{
		AfxMessageBox("请先登录!");
		return;
	}
	if(m_csDesNum.IsEmpty())
	{
		AfxMessageBox("目的ID输入有误!");
		return;
	}
	if(m_nAmount<1 || m_nAmount>100)
	{
		AfxMessageBox("数量在1--100之间,请重新输入!");
		return;
	}
	if(CountMixStrLen(m_Msg.GetBuffer(m_Msg.GetLength())) <= 0)
	{
		AfxMessageBox("发送信息内容为空,请重新编辑!");
		return;
	}
	if(CountMixStrLen(m_Msg.GetBuffer(m_Msg.GetLength()))>70)
	{
		AfxMessageBox("发送信息内容超长,应小于70字,请重新编辑!");
		return;
	}

	for(int i=0 ; i<m_nAmount ; i++)
	{
		STRUCT_MSG_DELIVER sDelivery;
 		sDelivery.sHeader.dwCommandId = DEV_DELIVER;
 		sDelivery.sHeader.dwSeqNo = m_dwSequenceID++;
 		sDelivery.nMsgLen = m_Msg.GetLength();
		memcpy(sDelivery.szSimNumber,m_SimNo.GetBuffer(21),21);
		memcpy(sDelivery.szDesNum,m_csDesNum.GetBuffer(21),21);
 		memcpy(sDelivery.szMsgConnent,m_Msg.GetBuffer(100),sDelivery.nMsgLen+1);
 		sDelivery.sHeader.dwTotalLen = 60+sDelivery.nMsgLen+1;
		if(pWSocket == NULL)
		{
			AfxMessageBox("请先登录!");
			return;
		}
 		pWSocket->Send((char*)&sDelivery,sDelivery.sHeader.dwTotalLen);

		//显示信息
//		m_list_ctl.AddString(CString("发送:") + (LPCTSTR)m_Msg);
	//	m_list_ctl.SetCurSel(m_list_ctl.GetCount()-1);
		int count;
        char p[20];
		memset(p,0,sizeof(p));
		count=m_list_new.GetItemCount() ;
		m_list_new.InsertItem(count,"");
        m_list_new.SetItemText(count,0,"发送");
		m_list_new.SetItemText(count,1,TimeToStr(CTime::GetCurrentTime()));
		m_list_new.SetItemText(count,2,m_SimNo);
		m_list_new.SetItemText(count,3,m_csDesNum);
        m_list_new.SetItemText(count,4,(LPCTSTR)m_Msg);
	    memcpy(p,m_csDesNum,sizeof(p));
		
		//m_list_new.
		//记录发送日志
		EnterCriticalSection(&g_CriticalWriteLog);
		//m_cs.Lock();
		g_WriteLog(m_Msg.GetBuffer(m_Msg.GetLength()) , 1);
		//m_cs.Unlock();
		WriteStatusbar(1,p);
		LeaveCriticalSection(&g_CriticalWriteLog);
      	Sleep(20);
	}

	//记忆目的ID
	//UpdateData();
	if(m_ctrlDesNum.FindString(0 , m_csDesNum) == CB_ERR)
		m_ctrlDesNum.AddString(m_csDesNum);
}

void CTestDlg::OnClearlist() 
{
///	m_list_ctl.ResetContent();
	m_list_new.DeleteAllItems();
}

void CTestDlg::OnDblclkList1() 
{
	char szMsg[5000];
//	m_list_ctl.GetText(m_list_ctl.GetCurSel(),szMsg);
//	MessageBox(szMsg,"信息内容",MB_ICONINFORMATION);
}

void CTestDlg::OnPhonebook() 
{
	CPhoneBookDlg m_dlgPhoneBook(this , 1);
	m_dlgPhoneBook.DoModal();
}

void CTestDlg::OnWhPhoneBook() 
{
	CPhoneBookDlg m_dlgPhoneBook(NULL , 2);
	m_dlgPhoneBook.DoModal();	
}

void CTestDlg::OnCommUse() 
{
	UpdateData();
	CCommUseDlg	CommUseDlg(this);	
	CommUseDlg.DoModal();
}

void CTestDlg::OnLookLogin() 
{
	CString str;

	for(int i=0 ; i<g_arrstrPhone.GetSize() ; i++)	
	{
		str = str + g_arrstrPhone.GetAt(i) + "\r\n";
	}

	AfxMessageBox((LPCTSTR)str);
}

void CTestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

LRESULT CTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	return CDialog::WindowProc(message, wParam, lParam);
}

//处理热键消息
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) 
{
	switch(pMsg->wParam)
	{
	case 1001:
		AfxMessageBox("Process will be closed !");
		::ExitProcess(0);
		break;
	case 1002:
		OnSend();
		break;
	}
	
	return CDialog::PreTranslateMessage(pMsg);
}

void CTestDlg::OnDblclkList4(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	*pResult = 0;
      POSITION Pos = m_list_new.GetFirstSelectedItemPosition();
	  int nIndex = m_list_new.GetNextSelectedItem(Pos);
	  if (nIndex>=0)
	  {
       CString str_flag;
	   str_flag=m_list_new.GetItemText(nIndex , 0);
	  if (str_flag.Find("接收")>=0)
	  {
        m_SimNo = m_list_new.GetItemText(nIndex , 3);
		m_csDesNum=m_list_new.GetItemText(nIndex , 2);
	  }
	  else
	  {
	    m_SimNo = m_list_new.GetItemText(nIndex , 2);
		m_csDesNum=m_list_new.GetItemText(nIndex , 3);
	  
	  }
	  m_Msg=m_list_new.GetItemText(nIndex , 4);
      UpdateData(FALSE);
	  }
}

void CTestDlg::WriteStatusbar(int type,char* Tefuhao)
{
    char buffer[20];
    memset(buffer,0,sizeof(buffer));
   
   if(type==1)//发送短信
   {
    if(strlen(Tefuhao)>6)//聊天
	{
      lt_count_send+=1; 
       _itoa(lt_count_send, buffer, 10  );
      m_state=buffer;
	  m_wndStatusBar.SetPaneText(2,"聊天发送数:"+m_state,TRUE);
  	    
	}
	else
	{
      command_count_send+=1;
      _itoa(command_count_send, buffer, 10  );
      m_state=buffer;
      m_wndStatusBar.SetPaneText(0,"命令发送数:"+m_state,TRUE);
	}
   }

   else//接收短信
   {
	   
   if(strlen(Tefuhao)>6)//聊天
 	{
      lt_count_rec+=1; 
       _itoa(lt_count_rec, buffer, 10  );
       m_state=buffer;
     m_wndStatusBar.SetPaneText(3,"聊天接收数:"+m_state,TRUE);
    }
	else
	{
      command_count_rec+=1;
       _itoa(command_count_rec, buffer, 10  );
       m_state=buffer;
       m_wndStatusBar.SetPaneText(1,"指令接收数:"+m_state,TRUE);
	  
	}
   }

   m_wndStatusBar.Invalidate();
}

void CTestDlg::OnButton3() 
{
CString str;
//GetProcesses(str);	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -