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

📄 blueskydlg.cpp

📁 蓝天盲人电脑软件
💻 CPP
字号:
// BlueSkyDlg.cpp : implementation file
//

#include "stdafx.h"
#include "BlueSky.h"
#include "BlueSkyDlg.h"
#include "DocFileDlg.h"
#include "MusicDlg.h"
#include "WebDlg.h"
#include "EmailDlg.h"
#include "onfig_Dialog.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif


ATTRIBUTION attribution;

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBlueSkyDlg dialog

CBlueSkyDlg::CBlueSkyDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CBlueSkyDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBlueSkyDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CBlueSkyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBlueSkyDlg)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CBlueSkyDlg, CDialog)
	//{{AFX_MSG_MAP(CBlueSkyDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_WM_CTLCOLOR()
	ON_WM_LBUTTONDBLCLK()
	ON_WM_MOUSEMOVE()
	ON_WM_CAPTURECHANGED()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBlueSkyDlg message handlers



UINT ReceiveEmailProc(LPVOID pParam)
{

	::AfxSocketInit(); //初始化CSocket
	CSocket popServer;
	char recMsg[1024] = _T("");
	char mailText[40000];
	char strSend[1024] = _T("");
	long len;
	char sendBuffer[1024];
		char sDate[1024];
		char filename[1024] = _T("");
//	char *popaddress;
//  char *mailboxpass;
	char *strQuit = _T("QUIT \r\n");
	if (!popServer.Create())
		return 0;
/*
	if (!GetPopserverSempleAddr(&popaddress))//获取邮件服务器简略地址
	{
	    eciSpeakText(_T("邮箱参数设置错误"),0);
		return;
	}

	if(!GetMailBoxPass(&mailboxpass))//获取邮箱密码
	{
	    eciSpeakText(_T("邮箱密码设置错误"),0);
		return;
	}

	GetFullPopserverAddr(&popaddress);//获取邮件服务器域名
  */
    popServer.Connect(_T("pop.sina.com.cn"),110); //建立与邮件服务器的连接
	len = popServer.Receive(recMsg,1024);
	recMsg[len] = '\0';
    if (!len) //连接不成功返回
		return 0;
	if (strncmp(recMsg,"+OK",3))//邮件服务器出错返回
	{
	    popServer.Send(strQuit,strlen(strQuit));
		return 0;
	}
	strcpy(strSend,_T("USER zencofchina\r\n")); //注册用户名
    popServer.Send(strSend,strlen(strSend));
	popServer.Receive(recMsg,sizeof(recMsg));

	if(strncmp(recMsg,"+OK",3))//注册失败返回
	{
	    popServer.Send(strQuit,strlen(strQuit));
		return 0;
	}
    strcpy(strSend,_T("PASS "));//注册邮箱密码
	strcat(strSend,_T("19781017"));
	strcat(strSend,_T("\r\n"));

	popServer.Send(strSend,strlen(strSend));
	popServer.Receive(recMsg,sizeof(recMsg));

	if (strncmp(recMsg,"+OK",3))//注册失败返回
	{
	    popServer.Send(strQuit,strlen(strQuit));
		return 0;
	}
	strcpy(strSend,_T("STAT \r\n"));
	popServer.Send(strSend,strlen(strSend));
	popServer.Receive(recMsg,sizeof(recMsg));
	char* p_msg=recMsg+4;
	char* q_msg=p_msg;
	while(*q_msg!=' ')
		q_msg++;
	*q_msg='\0';
	
	int mailCount = atoi(p_msg);//获取邮件数

	if (!mailCount)//邮件数为0返回
	{
	    popServer.Send(strQuit,strlen(strQuit));
		return 0;
	}
	for (int i=0; i<mailCount; i++)//逐封收取邮件
	{
		strcpy(sDate,_T(""));
		strcpy(filename,_T(""));

		sprintf(sendBuffer,_T("RETR %d\r\n"),i+1);
		popServer.Send(sendBuffer,strlen(sendBuffer));
	    popServer.Receive(recMsg,sizeof(recMsg));//接收邮件头
		len = popServer.Receive(mailText,40000);
	    CFile file;
		SYSTEMTIME time;
		GetLocalTime(&time);
		char tp[100];
		sprintf(tp,_T("%d年"),time.wYear);
		strcat(sDate,tp);
		sprintf(tp,_T("%d月"),time.wMonth);
		strcat(sDate,tp);
		sprintf(tp,_T("%d日"),time.wDay);
		strcat(sDate,tp);
		sprintf(tp,_T("%d时"),time.wHour);
		strcat(sDate,tp);
		sprintf(tp,_T("%d分"),time.wMinute);
		strcat(sDate,tp);
		sprintf(tp,_T("_%03d"),i+1);
		strcat(sDate,tp);

	    strcat(filename,_T("E:\\EMailFile\\"));
	    strcat(filename,sDate);
	    strcat(filename,_T(".eml"));

		file.Open(filename,CFile::modeReadWrite|CFile::modeCreate);//以邮件发送日期为名建立文件
		file.Write(mailText,len);

		while (mailText[len-3]!='.') 
		{
		    len = popServer.Receive(mailText,40000);
			file.SeekToEnd();
			file.Write(mailText,len);
		}
		file.Close();
 //		sprintf(sendBuffer,_T("DELE %d\r\n"),i+1);//邮件接收完毕从邮箱中删除
//		popServer.Send(sendBuffer,strlen(sendBuffer));
	}
	popServer.Send(strQuit,strlen(strQuit));//断开与邮件服务器的连接
	popServer.Close();
	sndPlaySound(_T(".\\sound\\ringin.wav"),NULL);//播放提示音
	
	return 0; // ends the thread
}


BOOL CBlueSkyDlg::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);
		}
	}

	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	hEci = NULL;
	
	brush.CreateSolidBrush(RGB(0,100,200));//初始化背景颜色画刷

	m_Timer=SetTimer(1,1000000,NULL);//启用定时器

//	RetrieveMail();
	SetWindowPos(NULL,0,0,1024,768,0); //满屏显示对话框

    ClipWindow();//限定鼠标范围

//    AfxBeginThread(ReceiveEmailProc, GetSafeHwnd(),
//	               THREAD_PRIORITY_NORMAL);
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CBlueSkyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

void CBlueSkyDlg::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
	{
	    CPaintDC dc(this);
		CPen pen(PS_INSIDEFRAME,5,RGB(200,180,0)),pen2;
		CFont font,*pOldFont,font2;
        font.CreatePointFont(300,_T("楷体_GB2312"));
		pOldFont = dc.SelectObject(&font);
		CString s = _T("欢迎使用蓝天语音软件");
		dc.SetBkMode(TRANSPARENT);
		dc.SetTextColor(RGB(0,220,0));
        dc.TextOut(315,100,s,s.GetLength());//输出对话框标题

		CPen *pOldPen = dc.SelectObject(&pen);
		dc.SelectStockObject(NULL_BRUSH);
		CBrush brush(RGB(220,230,220));
		CBrush *pOldBrush = dc.SelectObject(&brush);
		dc.Rectangle(412,300,612,610);
		pen2.CreatePen(PS_SOLID,1,RGB(200,180,0));
		dc.SelectObject(&pen2);
		
		//画自定义菜单项
		for(int i=0; i<5; i++)
		{
		    dc.MoveTo(412,355+50*i);
		    dc.LineTo(612,355+50*i);
		}
        
		font2.CreatePointFont(160,_T("楷体_GB2312"));
		dc.SetTextColor(RGB(255,0,0));
		dc.SelectObject(&font2);
        dc.TextOut(470,320,_T("我的文件"));
        dc.TextOut(470,370,_T("我的音乐"));
        dc.TextOut(470,420,_T("网上浏览"));
		dc.TextOut(470,470,_T("我的邮件"));
        dc.TextOut(470,520,_T("系统设置"));
        dc.TextOut(470,570,_T("退出系统"));

	    dc.SelectObject(pOldBrush);
		dc.SelectObject(pOldPen);
		dc.SelectObject(pOldFont);
		
		CDialog::OnPaint();
	}
}

HCURSOR CBlueSkyDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}



HBRUSH CBlueSkyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	if (pWnd->m_hWnd == m_hWnd) //设置背景色
		return (HBRUSH)brush;
	
	return hbr;
}

void CBlueSkyDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
{
    if (point.y<355)	
	{
	    //eciSpeakText(_T("进入我的文件界面,请按语音提示选择菜单"),0);
		//static bool bIn = false;
		CDocFileDlg dfDlg;
		dfDlg.DoModal();

		ClipWindow();
		//eciSpeakText(_T("回到主界面,请按语音提示选择菜单"),0);
	}

	if (point.y>355 && point.y<405)
	{
	    //eciSpeakText(_T("进入我的音乐界面,请按语音提示选择菜单"),0);
		CMusicDlg mscDlg;
        mscDlg.DoModal();

		ClipWindow();
		//eciSpeakText(_T("回到主界面,请按语音提示选择菜单"),0);
	}
	
	if (point.y>425 && point.y<455)
	{
        //eciSpeakText(_T("进入网上浏览界面,请按语音提示选择菜单"),0);
		CWebDlg webDlg;
        webDlg.DoModal();

		ClipWindow();
		//eciSpeakText(_T("回到主界面,请按语音提示选择菜单"),0);
	}
    
	if (point.y>475 && point.y<505)
	{
        //eciSpeakText(_T("进入网上浏览界面,请按语音提示选择菜单"),0);
		CEmailDlg emailDlg;
        emailDlg.DoModal();

		ClipWindow();
		//eciSpeakText(_T("回到主界面,请按语音提示选择菜单"),0);
	}
    
	if (point.y>525 && point.y<555)
	{
	    Config_Dialog configdlg;
		configdlg.DoModal();
		ClipWindow();
	}
	
	if (point.y>575 && point.y<605)
	{
		CDialog::OnCancel();	
	}
}

void CBlueSkyDlg::OnMouseMove(UINT nFlags, CPoint point) 
{
char c=NULL;
	switch ((point.y-305)/50)
	{
		case 0:  c='1'; break;
		case 1:  c='2'; break;
		case 2:  c='3'; break;
		case 3:  c='4'; break;
		case 4:  c='5'; break;
		case 5:  c='6'; break;
	}
	if( c!=pointchar)
	{
		pointchar=c;
		switch(c)
		{
		case '1':  eciSpeakText("我的文件",0); break;
		case '2':  eciSpeakText("我的音乐",0); break;
		case '3':  eciSpeakText("网上浏览",0); break;
		case '4':  eciSpeakText("我的邮件",0); break;
		case '5':  eciSpeakText("系统设置",0); break;
		case '6':  eciSpeakText("退出系统",0); break;
		}
	}

	CDialog::OnMouseMove(nFlags, point);
}

void CBlueSkyDlg::OnCaptureChanged(CWnd *pWnd) 
{
	CDialog::OnCaptureChanged(pWnd);
}

void CBlueSkyDlg::ClipWindow()
{
    CRect rect(417,306,608,606);
	ClipCursor(&rect);
}


void CBlueSkyDlg::OnTimer(UINT nIDEvent) 
{    
	CDialog::OnTimer(nIDEvent);
}

CString CBlueSkyDlg::GetMailBoxParam(CString strItem)
{
    //获取邮箱设置,profile的Section参数为"MailParam"
	//strItem = "MailAddr" 则取邮箱地址。
	//strItem = "Pass" 则取邮箱密码
	CWinApp *pApp = AfxGetApp();

	return pApp->GetProfileString(_T("MailParam"),strItem);
}

bool CBlueSkyDlg::GetMailBoxUser(char **addr)
{
    //获取邮箱地址
	int i = 0;
	char *szMailAddr = (char*)(LPCTSTR)GetMailBoxParam(_T("MailAddr"));
	if (!strlen(szMailAddr))
		return false;
	while(*szMailAddr)
	{
	    if(*szMailAddr == '@')
			break;
		i++;
		szMailAddr++;
	}
	    
	szMailAddr -= i;
	szMailAddr[i] = '\0';
    *addr = szMailAddr;

	return true;
}

bool CBlueSkyDlg::GetMailBoxPass(char **pass)
{
	//获取邮箱密码
	*pass = (char*)(LPCTSTR)GetMailBoxParam(_T("Pass"));
    if (!strlen(*pass))
		return false;
	return true;
}

bool CBlueSkyDlg::GetPopserverSempleAddr(char **addr)
{
	//获取邮件服务器地址
	int i = 0;
	char szMailAddr[1024] = _T("");
	char *szTemp = (char*)(LPCTSTR)GetMailBoxParam(_T("MailAddr"));
	if (!strlen(szTemp))
		return false;
	while(*szTemp)
	{
	    if(*szTemp == '@')
			break;
		i++;
		szTemp++;
	}
    
	szTemp++;
	strcat(szMailAddr,szTemp);
    *addr = szMailAddr;

    return true;
}

void CBlueSkyDlg::GetFullPopserverAddr(char **addr)
{
    //邮件服务器地址转换
    if (!strcmp(*addr,"163.com"))
    	(char*)*addr = "pop.163.com";
	if (!strcmp(*addr,"126.com"))
    	(char*)*addr = "pop3.126.com";
	if (!strcmp(*addr,"sohu.com"))
    	(char*)*addr = "pop3.sohu.com";
	if (!strcmp(*addr,"sina.com"))
    	(char*)*addr = "pop3.sina.com.cn";
	if (!strcmp(*addr,"263.net"))
    	(char*)*addr = "263.net";
	if (!strcmp(*addr,"21cn.com"))
    	(char*)*addr = "pop.21cn.com";
}



⌨️ 快捷键说明

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