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

📄 gsmsmsdlg.cpp

📁 一个可以实现与SCADA系统实现数据访问,并且通过手机短消息的方式发送到指定手机用户的实现.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	TimeOut.ReadTotalTimeoutMultiplier=0; 
	TimeOut.WriteTotalTimeoutMultiplier=0; 
	TimeOut.WriteTotalTimeoutConstant=(1/CommDCB.BaudRate)*256; 
	
	if(CommDCB.BaudRate == 300)
		TimeOut.ReadTotalTimeoutConstant=2500;
	else
		TimeOut.ReadTotalTimeoutConstant=2000;
	
	SetCommTimeouts(hCom, &TimeOut); 

	//刷新串口
	PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);

	return TRUE;
}

void CGsmSmsDlg::GetFjPath()
{
	char SysPath[128];
	int	i;
	
    SysPath[0]=0;
    GetPrivateProfileString("SysPath","SysPath",SysPath,SysPath,sizeof(SysPath),"c:\\FJ95NT.ini");
	if (SysPath[0]==0) {
    	::GetModuleFileName(AfxGetInstanceHandle(),SysPath,sizeof(SysPath));
    	i=lstrlen(SysPath);
    	while(TRUE) {  if (SysPath[i]==92  || i==0 ) break; i--; }
    	if (i) i--;
    	while(TRUE) {  if (SysPath[i]==92  || i==0 ) break; i--; }
        SysPath[i]=0;
	}
	FjSysPath=SysPath;

	CString	s;
	s=FjSysPath+"\\init\\FJ95NT.ini";
	BaseNum=GetPrivateProfileInt("BaseSet","BaseNum",0,s);

	InitFile = FjSysPath+"\\init\\GsmSms.ini";
}   

BOOL CGsmSmsDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
    m_list_sms.SetExtendedStyle (LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
	InitList();
    TimeID_1 = SetTimer(1,500,NULL);

     m_work.LoadBitmap(IDB_BITMAP_WORK);
     m_idle.LoadBitmap(IDB_BITMAP_IDLE);
	
	 BITMAP bb;
	 m_work.GetObject(sizeof(bb),&bb);
     WorkW=bb.bmWidth;
     WorkH=bb.bmHeight;
	
     m_idle.GetObject(sizeof(bb),&bb);
     IdleW=bb.bmWidth;
     IdleH=bb.bmHeight;

	 return TRUE;  // return TRUE  unless you set the focus to a control
}

void CGsmSmsDlg::OnTimer(UINT nIDEvent) 
{
/*	CClientDC cdc(this);
	CDC MemDC;
	MemDC.CreateCompatibleDC(NULL);
    RECT rect; 
	GetClientRect(&rect);
*/
	if (nIDEvent==TimeID_1) 
	{
		if(Repaint)
		{
			if(RepaintList())
			{
/*	            MemDC.SelectObject(&m_work);

                cdc.StretchBlt(rect.right-10-WorkW,rect.bottom-10-WorkH,
                     WorkW,WorkH,&MemDC,0,0,WorkW,WorkH,SRCCOPY);
*/			}
			Repaint = FALSE;
		}
		else
		{
/*	        MemDC.SelectObject(&m_idle);

            cdc.StretchBlt(rect.right-10-IdleW,rect.bottom-10-IdleH,
                 IdleW,IdleH,&MemDC,0,0,IdleW,IdleH,SRCCOPY);
*/		}
	}	
	CDialog::OnTimer(nIDEvent);
}
void CGsmSmsDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.
void CGsmSmsDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
/* 		BITMAP bb;
		m_idle.GetObject(sizeof(bb),&bb);
        int ButtonW=bb.bmWidth;
        int ButtonH=bb.bmHeight;

	    CClientDC cdc(this);
	    CDC MemDC;
	    MemDC.CreateCompatibleDC(NULL);
	    MemDC.SelectObject(&m_idle);
    
        RECT rect; 
	    GetClientRect(&rect);

        cdc.StretchBlt(rect.right-10-ButtonW,rect.bottom-10-ButtonH,
                 ButtonW,ButtonH,&MemDC,0,0,ButtonW,ButtonH,SRCCOPY);
*/
		CDialog::OnPaint();
	}			
}

void CGsmSmsDlg::ClrList() 
{
	for (int i=0;i<FJD_MSG_BUF_MAX;i++)
	{
		m_display_list[i].m_person.name.Empty();
		m_display_list[i].m_person.number.Empty();
        m_display_list[i].m_date.Empty();
        m_display_list[i].m_time.Empty();	
	    m_display_list[i].SendedString.Empty();
	}
}

BOOL CGsmSmsDlg::RepaintList()
{
	m_list_sms.DeleteAllItems();

    CString s;
	LV_ITEM lvItem;

	lvItem.mask = LVIF_TEXT;

	for(int i=0;i<FJD_MSG_BUF_MAX-GetListPtr;i++)//+1
	{
		lvItem.iItem = i;
	    lvItem.iSubItem = 0;
		s.Format("%d",i);
		lvItem.pszText = s.LockBuffer();
		lvItem.cchTextMax = s.GetLength();
		m_list_sms.InsertItem(&lvItem);
		s.UnlockBuffer();
	}

	for(i=0;i<FJD_MSG_BUF_MAX-GetListPtr;i++)//+1
	{
        lvItem.iItem = i;
        lvItem.iSubItem = 1;
		s = m_display_list[GetListPtr+i].m_person.name;
		lvItem.pszText = s.LockBuffer();
		lvItem.cchTextMax = s.GetLength();
		m_list_sms.SetItem(&lvItem);
		s.UnlockBuffer();

        lvItem.iSubItem = 2;
		s = m_display_list[GetListPtr+i].m_person.number;
		lvItem.pszText = s.LockBuffer();
		lvItem.cchTextMax = s.GetLength();
		m_list_sms.SetItem(&lvItem);
		s.UnlockBuffer();
        
        lvItem.iSubItem = 3;
		s = m_display_list[GetListPtr+i].m_date;
		lvItem.pszText = s.LockBuffer();
		lvItem.cchTextMax = s.GetLength();
		m_list_sms.SetItem(&lvItem);
		s.UnlockBuffer();

        lvItem.iSubItem = 4;
		s = m_display_list[GetListPtr+i].m_time;
		lvItem.pszText = s.LockBuffer();
		lvItem.cchTextMax = s.GetLength();
		m_list_sms.SetItem(&lvItem);
		s.UnlockBuffer();

        lvItem.iSubItem = 5;
		s = m_display_list[GetListPtr+i].SendedString;
		lvItem.pszText = s.LockBuffer();
		lvItem.cchTextMax = s.GetLength();
		m_list_sms.SetItem(&lvItem);
		s.UnlockBuffer();

	//	Invalidate(TRUE);
	}

	return TRUE;
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CGsmSmsDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CGsmSmsDlg::OnSetCom() 
{
	int Port;
    int Bate;
	char asc[64];
	CDlgsetcom m_dlgsetcom;

    Port = GetPrivateProfileInt("INIT","port",2,InitFile);
    if(!Port) Port = 2;
	Bate = GetPrivateProfileInt("INIT","bate",9600,InitFile);
	GetPrivateProfileString("INIT","callcenter","",asc,sizeof(asc),InitFile);
    int i=0;
	for(i=0;i<7;i++){
		if(Bate== Port_Bate[i])
			break;
	}
	m_dlgsetcom.m_InitPort = Port-1;
    m_dlgsetcom.m_InitBate = i;
    m_dlgsetcom.m_center_number = asc;
    
	if(m_dlgsetcom.DoModal()==IDOK){
        sprintf(asc,"%d",m_dlgsetcom.m_InitPort+1);
	    WritePrivateProfileString("INIT","port",asc,InitFile);

        sprintf(asc,"%d",Port_Bate[m_dlgsetcom.m_InitBate]);
	    WritePrivateProfileString("INIT","bate",asc,InitFile);

	    WritePrivateProfileString("INIT","callcenter",m_dlgsetcom.m_center_number,InitFile);
	
		InitPort(m_dlgsetcom.m_InitPort,Port_Bate[m_dlgsetcom.m_InitBate]);
	}
}

void CGsmSmsDlg::OnTelNum() 
{
	CDlgTel m_DlgTel;
    m_DlgTel.DoModal();
}

void CGsmSmsDlg::OnCancel() 
{
	CDialog::OnCancel();
}

void CGsmSmsDlg::OnBTest() 
{
    CString code;
	CString name;
    int count = 0;
	CString sendstring=_T("你好!");
    if(hCom != INVALID_HANDLE_VALUE){
		for(int count = 0;count<m_person_max;count++)
		{ 
	        code = m_person_info[count].number;
		    name = m_person_info[count].name;
	        WriteOut(name,code,sendstring);
		} 
	}
	else{
		AfxMessageBox("串行口初始化失败!");
	}
}

void CGsmSmsDlg::OnBHis() 
{
	/*CString Filename;
	CString tempstring;
	Filename = FjSysPath;
	Filename +="\\bin\\Smshis.txt";

	HINSTANCE temp = ShellExecute(NULL,NULL,LPCTSTR(Filename),NULL,NULL,SW_SHOW); 
	*/
	CDlghis m_his;
	m_his.DoModal();
}

void CGsmSmsDlg::OnSize(UINT nType, int cx, int cy) 
{
	CDialog::OnSize(nType, cx, cy);
}

int CGsmSmsDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	
	if ( ! m_classTrayNotifyIcon . Create ( this, IDR_POPUP, 
		"FJNT - GSM短信服务", AfxGetApp () -> LoadIcon ( IDR_MAINFRAME ), WM_TRAYNOTIFY ) ) 
	{
		AfxMessageBox ( "Failure Creating Tray Icon", MB_ICONSTOP );
		return -1;
	}

	return 0;
}

void CGsmSmsDlg::OnShowmain() 
{
	ShowWindow ( SW_SHOW );
}

LRESULT CGsmSmsDlg::OnTrayNotify ( WPARAM wParam, LPARAM lParam ) 
{
  return m_classTrayNotifyIcon . OnTrayNotification ( wParam, lParam );
}
/*
void CGsmSmsDlg::OnHide() 
{
	// TODO: Add your control notification handler code here
	ShowWindow ( SW_HIDE );
}
*/

void CGsmSmsDlg::OnExit() 
{
	// TODO: Add your command handler code here
	ShowWindow ( SW_HIDE );
}

BOOL CGsmSmsDlg::PreCreateWindow(CREATESTRUCT& cs) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::PreCreateWindow(cs);
}

void CGsmSmsDlg::OnShowWindow(BOOL bShow, UINT nStatus) 
{
	bShow = FALSE;
	CDialog::OnShowWindow(bShow, nStatus);
	
	// TODO: Add your message handler code here
	
}

BOOL CGsmSmsDlg::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) 
{
	// TODO: Add your specialized code here and/or call the base class
	
	return CDialog::Create(IDD, pParentWnd);
}

⌨️ 快捷键说明

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