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

📄 smsrobot更多介绍,不错解释详细.htm

📁 VC文件的读写操作(很多)
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0062)http://www.sendsms.cn/product/smssoft/jindi-smsrobot-more4.htm -->
<HTML><HEAD><TITLE>SMSRobot更多介绍</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK 
href="SMSRobot更多介绍,不错解释详细.files/style.css" type=text/css rel=stylesheet>
<STYLE type=text/css>BODY {
	MARGIN: 0px
}
.style6 {
	COLOR: #fead54
}
.style8 {
	FONT-WEIGHT: bold; COLOR: #fead54
}
</STYLE>

<SCRIPT language=JavaScript 
src="SMSRobot更多介绍,不错解释详细.files/mm_menu1.js"></SCRIPT>

<SCRIPT language=JavaScript src="SMSRobot更多介绍,不错解释详细.files/mm_menu.js"></SCRIPT>

<SCRIPT language=JavaScript 
src="SMSRobot更多介绍,不错解释详细.files/mm_menu2.js"></SCRIPT>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=JavaScript1.2>mmLoadMenus();</SCRIPT>

<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0>
  <SCRIPT language=JavaScript src="SMSRobot更多介绍,不错解释详细.files/head.js"></SCRIPT>

  <TBODY></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width=778 align=center border=0><!--DWLayoutTable-->
  <TBODY>
  <TR>
    <TD width=778 height=10>&nbsp;</TD></TR></TBODY></TABLE>
<TABLE class=con1 cellSpacing=0 cellPadding=0 width=778 align=center border=0><!--DWLayoutTable-->
  <TBODY>
  <TR>
    <TD style="PADDING-LEFT: 0px" vAlign=top align=middle width=207><A 
      href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot.htm"><IMG 
      height=99 src="SMSRobot更多介绍,不错解释详细.files/img-smsrobot.gif" width=93 
      border=0></A><BR><STRONG><A 
      href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot.htm">Jindi-SMSRobot 
      v2.0</A></STRONG> <BR></TD>
    <TD style="PADDING-LEFT: 0px" vAlign=top width=571>
      <TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
        <TBODY>
        <TR>
          <TD><STRONG>关于金笛短消息群发机器人的更多介绍...</STRONG></TD></TR></TBODY></TABLE><SPAN 
      class=style8><SPAN class=style6><BR><IMG height=16 
      src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif" 
      width=12></SPAN></SPAN>金笛短消息控件SMSActiveX 方法说明<BR><SPAN class=style8><SPAN 
      class=style6><IMG height=16 
      src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif" width=12></SPAN></SPAN><A 
      href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot-more2.htm">金笛短消息控件SMSActiveX使用说明</A><BR><SPAN 
      class=style8><SPAN class=style6><IMG height=16 
      src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif" width=12></SPAN></SPAN><A 
      href="http://www.sendsms.cn/product/smssoft/jindi-smsrobot-more3.htm">短信群发机器人 
      SMSRobot 系统盈利分析</A><BR><SPAN class=style8><SPAN class=style6><IMG 
      height=16 src="SMSRobot更多介绍,不错解释详细.files/icon-indent.gif" 
      width=12></SPAN></SPAN>SMSRobot程序二次开发接口</TD></TR>
  <TR bgColor=#fff7dd>
    <TD vAlign=top colSpan=2>
      <P><SPAN class=style8>SMSRobot程序二次开发接口</SPAN><BR></P></TD></TR>
  <TR align=middle>
    <TD vAlign=top colSpan=2>
      <TABLE cellSpacing=0 cellPadding=0 width="90%" border=0>
        <TBODY>
        <TR>
          <TD align=left>一 程序结构: <BR>1 开发及运行环境 
            <BR>本程序由VC开发,用到了MFC类库,它只能运行于WINDOWS操作系统下。 <BR>2程序工作原理及所用到的类 <BR>(1) 
            CSmsrobatApp类: MFC产生的类,它没有太多的函数,而其程序只用到了它的InitInstance()函数, 
            <BR>此函数用于程序的初始化。初始化要完成下图所示内容。(其中会对文件进行读写操作,这些操作会涉及到 
            <BR>自定义的HandleFile类,关于这个类以及要用到的文件我在文档的后面有更详细的说明。) </TD></TR>
        <TR>
          <TD align=middle><IMG height=300 
            src="SMSRobot更多介绍,不错解释详细.files/smsrobot-second.jpg" 
        width=400><BR></TD></TR>
        <TR>
          <TD align=middle bgColor=#fff7dd>SMSRobot 初始化流程 
    </TD></TR></TBODY></TABLE></TD></TR>
  <TR align=left>
    <TD vAlign=top colSpan=2><SPAN 
      class=style8>图为CsmsrobatApp::InitInstance()的逻辑关系, 
      <BR>下面是函数InitInstance()的源代码(手工加入部分) </SPAN></TD></TR>
  <TR align=middle>
    <TD vAlign=top colSpan=2><TEXTAREA class=con1 style="WIDTH: 700px; HEIGHT: 400px; BACKGROUND-COLOR: #fff7dd" name=textfield>    int ifreg = 0;
	int iffirst;
	
	HandleFile m_hand;
	CString path1,path2;
	path1 = m_hand.GetCtFilePath(\"datasms.reg1\");
	path2 = m_hand.GetCtFilePath(\"datasms.tim\");
	ifreg = m_hand.GetReg(&amp;iffirst,path1);

	if(iffirst == 0)    //判断程序是否为第一次运行
	{
		CTime tm;
		tm = CTime::GetCurrentTime();
		m_hand.WriteTime(tm.Format(\"%Y\"),
				 	     tm.Format(\"%m\"),
					 	 tm.Format(\"%d\"),
						 path2);
	m_hand.WriteReg(0,1,path1);//如果是第一次运行,把当前时间写入sms.tim文件,
//在sms.reg1文件中去除第一次运行标记
	}
	else            //如果不是第一次运行
	{
		int year,month,day;
		m_hand.GetTime(&amp;year,&amp;month,&amp;day,path2);
		CTime tm(year,month,day,0,0,0,-1);
		CTime tmN = CTime::GetCurrentTime();
		CTimeSpan tms = tmN - tm;
		int inte;
		inte = tms.GetDays();
		CString tem;
		tem.Format(\"%d\",inte);
		if(ifreg == 0)  //判断程序是否注册
		{
			if(inte&gt;=90)   //如果程序没有注册,判断它是否过期,如过期则退出程序
			{
				AfxMessageBox(\"程序已过期\");
				return FALSE;
			}
		}
	}
	if(ifreg == 0) //如果程序没有注册,也没有过期则用CsmsrobatView类作为活动视图
	{
		CSingleDocTemplate* pDocTemplate;
		pDocTemplate = new CSingleDocTemplate(
			IDR_MAINFRAME,
			RUNTIME_CLASS(CSmsRobatDoc),
			RUNTIME_CLASS(CMainFrame),       
			RUNTIME_CLASS(CSmsRobatView));
		AddDocTemplate(pDocTemplate);
	}
	else if(ifreg == 1) //如果程序注册,则用review类作为活动视图

	{
		CSingleDocTemplate* pDocTemplate;
			pDocTemplate = new CSingleDocTemplate(
			IDR_MAINFRAME,
			RUNTIME_CLASS(CSmsRobatDoc),
			RUNTIME_CLASS(CMainFrame),       
			RUNTIME_CLASS(review));
		AddDocTemplate(pDocTemplate);
	}
	else
	{
		AfxMessageBox(\"注册文件被破坏!!\\r\\n请重装软件!!\");
		return FALSE;
	}

	// Parse command line for standard shell commands, DDE, file open
	CCommandLineInfo cmdInfo;
	ParseCommandLine(cmdInfo);
	// Dispatch commands specified on the command line
	if (!ProcessShellCommand(cmdInfo))
		return FALSE;

	// The one and only window has been initialized, so show and update it.
	m_pMainWnd-&gt;ShowWindow(SW_SHOW);
	m_pMainWnd-&gt;UpdateWindow();
	m_pMainWnd-&gt;SetWindowText(\"SMSRobot短信群发机器人\");//设置程序的标题
	

(2)	CMainFrame类
这个类是程序的框架类,也由MFC产生。其中有一个变量m_ifreg,和三个函数 OnCreate(),OnSetPara(),
OnGetMinMaxInfo()很重要。 在OnCreate()中读文件sms.reg1以设置m_ifreg,在OnSetPara()和
OnGetMinMaxInfo()中需要用m_ifreg来确定review, CsmsrobatView谁是活动视图。
OnSetPara()用来弹出设置本地发送或WEB发送参数的对话框,至于是本地还是WEB方式由活动视图的变量
m_WebOrLocal决定。OnGetMinMaxInfo()函数决定程序框架窗口的大小。CMainFrame中还会用到一个函数
OnClose(),它察看程序终止前是否还在进行本地发送操作,如果是,程序会弹出一个对话框提醒用户先结束发送。

下面是CMainFrame类中一些重要函数的源代码 

OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) //定制程序窗口的大小
{	
	if(m_ifreg == 0)//程序没有注册时的窗口大小
	{
		lpMMI-&gt;ptMinTrackSize.x = 548;
		lpMMI-&gt;ptMinTrackSize.y = 472;
		lpMMI-&gt;ptMaxTrackSize.x = 548;
		lpMMI-&gt;ptMaxTrackSize.y = 472;
	}
	if(m_ifreg == 1)//注册过程序的窗口大小
	{
		lpMMI-&gt;ptMinTrackSize.x = 548;
		lpMMI-&gt;ptMinTrackSize.y = 365;
		lpMMI-&gt;ptMaxTrackSize.x = 548;
		lpMMI-&gt;ptMaxTrackSize.y = 365;
	}
}
 
(3)	活动视图类(review或CsmsrobatView类)
这两个类谁是程序的视图由程序是否注册来决定,如果注册了,程序用review作为其视图,
反之用CsmsrobatView作为其视图。视图是用户和程序交互的界面。
视图中的数据和控件在OnInitialUpdate()函数中被初始化。程序发送短信息的功能也是在
视图中完成的。本地发送用函数LocalSend(),WEB发送用全局函数WebSend1(review)或
WebSend(CsmsrobatView)。这里有一点需要说明,LocalSend()用到了一个Active控件,
这个控件发送短信息时会把控制交给程序,所以,我把Localsend()作为视图的一个操作,
它被激活时在程序的主线程内运行。而用WebSend或WebSend1通过网站发送短信息时,
不返回控制给程序,所以为了能够中途停止网上发送,把WebSend或WebSend1做成了全局函数,
他们被激活时会启动一个辅助线程。  

下面是视图里主要函数的源代码及其说明
视图的初始化函数OnInitialUpdate()

OnInitialUpdate()
{
	CFormView::OnInitialUpdate();
	GetParentFrame()-&gt;RecalcLayout();
	ResizeParentToFit();
	
	//下面是程序中手工加入的代码
	HandleFile m_hand;
	m_currentpath = m_hand.GetCtFilePath(\"\");  //得到程序运行的当前路径
		
	CString m_filepath;
	m_filepath = m_currentpath + \"date\\\\local.conf\";
	m_comport = m_hand.SetPara(m_filepath);
	m_connectmode = m_hand.ChangeCtModeToFit(m_hand.ConnectionMode);
	m_mode1 = m_hand.ChangeModelToFit(m_hand.Mode1);
	//以上代码通过读文件里的数据初始化本地发送的参数

	m_filepath = m_currentpath + \"date\\\\ph1.txt\";
	m_hand.Getphone(&amp;m_Olist,m_filepath);

⌨️ 快捷键说明

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