www.gusucode.com > 改函数包包装了GPRS通信的接口源码程序 > 改函数包包装了GPRS通信的接口源码程序/GPRS开发包/VC_DEMO_源代码/SendDataDlg.cpp
// SendDataDlg.cpp : implementation file // #include "stdafx.h" #include "vc_demo.h" #include "SendDataDlg.h" #include "wcomm_dll.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSendDataDlg dialog CSendDataDlg::CSendDataDlg(CWnd* pParent,CTreeCtrl* ptc) : CDialog(CSendDataDlg::IDD, pParent) { //{{AFX_DATA_INIT(CSendDataDlg) m_hex = FALSE; //}}AFX_DATA_INIT m_pTree=NULL; if (ptc) m_pTree=ptc; } void CSendDataDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSendDataDlg) DDX_Control(pDX, IDC_CMUSERLIST, m_cmuserlist); DDX_Check(pDX, IDC_CKHEX, m_hex); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSendDataDlg, CDialog) //{{AFX_MSG_MAP(CSendDataDlg) ON_BN_CLICKED(IDC_BQUIT, OnBquit) ON_WM_SHOWWINDOW() ON_BN_CLICKED(IDC_CKHEX, OnCkhex) ON_WM_SIZE() ON_BN_CLICKED(IDC_BSEND, OnBsend) ON_WM_TIMER() ON_BN_CLICKED(IDC_CKAUTOSEND, OnCkautosend) ON_BN_CLICKED(IDC_BCR, OnBcr) ON_BN_CLICKED(IDC_BLF, OnBlf) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSendDataDlg message handlers void CSendDataDlg::AddUserId() { HTREEITEM hti; CString str; if ((m_pTree) && (m_pTree->GetFirstVisibleItem())) { hti=m_pTree->GetChildItem(m_pTree->GetFirstVisibleItem()); while (hti) { str=m_pTree->GetItemText(hti); m_cmuserlist.AddString(str.GetBuffer(0)); hti=m_pTree->GetNextItem(hti,TVGN_NEXT); } } m_cmuserlist.SetWindowText(m_userid); } void CSendDataDlg::SetUserId(char *userid) { m_userid=userid; } void CSendDataDlg::OnBquit() { this->OnCancel(); } void CSendDataDlg::OnShowWindow(BOOL bShow, UINT nStatus) { CDialog::OnShowWindow(bShow, nStatus); this->AddUserId(); this->SendMessage(WM_SIZE); ((CEdit *)GetDlgItem(IDC_INTERVAL))->SetWindowText("200"); } int CSendDataDlg::StrToHex(char *str,char *hex) { int i,slen; slen=strlen(str); for (i=0;i<slen;i++) { sprintf(hex+i*3,"%02X ",str[i]&0xFF); } return 0; } int CSendDataDlg::HexToStr(char *hex,char *str) { int i,hlen,iData,iFlag; char ch; iData=0; iFlag=0; hlen=strlen(hex); for (i=0;i<hlen;i++) { if (' '==hex[i]) continue; ch=hex[i]; if ((ch>='0') && (ch<='9')) { ch-=0x30; } else if ((ch>='a') && (ch<='f')) { ch-=0x57; } else if ((ch>='A') && (ch<='F')) { ch-=0x37; } else { *str='\0'; return -1; } if (0==iFlag) { iData=ch; iFlag=1; } else { iData=(iData<<4) +ch; iFlag=0; *str++=iData; } } *str='\0'; return 0; } void CSendDataDlg::OnCkhex() { char *hexbuf,*strbuf; int iLen; CEdit *pEdit=(CEdit *)GetDlgItem(IDC_EDSHOW); this->UpdateData(TRUE); hexbuf=new char[3096]; strbuf=new char[1024]; if (m_hex) { iLen=pEdit->GetWindowText(strbuf,1024); strbuf[iLen]='\0'; if (0==this->StrToHex(strbuf,hexbuf)) pEdit->SetWindowText(hexbuf); else { m_hex=FALSE; UpdateData(FALSE); } } else { iLen=pEdit->GetWindowText(hexbuf,3096); hexbuf[iLen]='\0'; if (0==this->HexToStr(hexbuf,strbuf)) pEdit->SetWindowText(strbuf); else { m_hex=TRUE; UpdateData(FALSE); } } delete hexbuf; delete strbuf; } void CSendDataDlg::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); if (!this->IsWindowVisible()) return; CRect rt; CEdit *pEdit; CButton *pButton; pEdit=(CEdit *)GetDlgItem(IDC_EDSHOW); pEdit->GetWindowRect(&rt); pEdit->MoveWindow(11,36,cx-25,cy-77); pEdit=(CEdit *)GetDlgItem(IDC_EDSENDCOUNT); pEdit->GetWindowRect(&rt); pEdit->MoveWindow(cx-104,9,rt.Width(),rt.Height()); CStatic *pStatic=(CStatic *)GetDlgItem(IDC_STATIC1); pStatic->GetWindowRect(&rt); pStatic->MoveWindow(cx-164,13,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_CKHEX); pButton->GetWindowRect(&rt); pButton->MoveWindow(12,cy-rt.Height()-10,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_BCR); pButton->GetWindowRect(&rt); pButton->MoveWindow(60,cy-rt.Height()-10,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_BLF); pButton->GetWindowRect(&rt); pButton->MoveWindow(90,cy-rt.Height()-10,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_CKAUTOSEND); pButton->GetWindowRect(&rt); pButton->MoveWindow(120,cy-rt.Height()-10,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_INTERVAL); pButton->GetWindowRect(&rt); pButton->MoveWindow(180,cy-rt.Height()-10,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_BQUIT); pButton->GetWindowRect(&rt); pButton->MoveWindow(cx-74,cy-rt.Height()-10,rt.Width(),rt.Height()); pButton=(CButton *)GetDlgItem(IDC_BSEND); pButton->GetWindowRect(&rt); pButton->MoveWindow(cx-144,cy-rt.Height()-10,rt.Width(),rt.Height()); } void CSendDataDlg::OnBsend() { char *strbuf,*hexbuf; char userid[12]; this->UpdateData(TRUE); hexbuf=new char[3200]; //3072+128 strbuf=new char[1152]; //1024+128 if (m_hex) { ((CEdit *)GetDlgItem(IDC_EDSHOW))->GetWindowText(hexbuf,3200); this->HexToStr(hexbuf,strbuf); } else ((CEdit *)GetDlgItem(IDC_EDSHOW))->GetWindowText(strbuf,1152); this->m_cmuserlist.GetWindowText(userid,12); userid[11]='\0'; do_send_user_data((unsigned char *)userid, (unsigned char *)strbuf, strlen(strbuf), NULL); CString text; ((CEdit *)GetDlgItem(IDC_EDSENDCOUNT))->GetWindowText(text); int count=atoi(text.GetBuffer(0)); char pbuf[32]; sprintf(pbuf,"%d",count+strlen(strbuf)); ((CEdit *)GetDlgItem(IDC_EDSENDCOUNT))->SetWindowText(pbuf); delete strbuf; delete hexbuf; } void CSendDataDlg::OnTimer(UINT nIDEvent) { if (1==nIDEvent) this->OnBsend(); CDialog::OnTimer(nIDEvent); } void CSendDataDlg::OnCkautosend() { CButton *pButton; CEdit *pEdit; char buf[32]; int interval; pEdit=(CEdit *)GetDlgItem(IDC_INTERVAL); pEdit->GetWindowText(buf,32); interval=atoi(buf); if (interval<=0) return; pButton=(CButton *)GetDlgItem(IDC_CKAUTOSEND); if (1==pButton->GetCheck()) { this->SetTimer(1,interval,NULL); } else { this->KillTimer(1); } } void CSendDataDlg::OnBcr() { CString text; CEdit *pEdit; pEdit=(CEdit *)GetDlgItem(IDC_EDSHOW); pEdit->GetWindowText(text); UpdateData(TRUE); if (m_hex) { pEdit->SetWindowText(text+"0D "); } else { pEdit->SetWindowText(text+"\r"); } } void CSendDataDlg::OnBlf() { CString text; CEdit *pEdit; pEdit=(CEdit *)GetDlgItem(IDC_EDSHOW); pEdit->GetWindowText(text); UpdateData(TRUE); if (m_hex) { pEdit->SetWindowText(text+"0A "); } else { pEdit->SetWindowText(text+"\n"); } }