Visual C++网络编程经典案例详解 第7章 邮件收发器 接收邮件 显示邮件数据

    xiaoxiao2022-07-13  145

    当用户浏览完当前邮件以后 如果想继续浏览下一封邮件则单击 下一封 按钮即可 但是当用户浏览的当前邮件已经是邮箱中最后一封邮件时 程序将返回一个错误信息给用户

    例如 显示 指定邮箱中已经没有可供显示的邮件了 等信息 下一封 按钮的消息响应函数名称为CRecv::OnNext() 在该函数编写程序实现用户查看下一封邮件功能

    void CRecv::OnNext() { n+=1; //使当前邮件序列号自动加1,指向下一封 this->SendCmdAndRecv(n); //调用自定义函数发送相关命令并且显示邮件 if(!GetDlgItem(IDC_SHANG)->IsVisible()) //获得上一封按钮的当前状态 { GetDlgItem(IDC_SHANG)->EnableWindow(true);//显示该按钮 } }

    该按钮的响应函数主要是实现用户从POP3服务器上 获取当前邮件的下一封邮件内容 并将其显示到程序界面上

    函数IsVisible()的作用是查看对象当前状态是否可用 在本程序中使用函数是为了获得 “上一封”按钮的显示状态 以便确定按钮可用或禁用

    在vc主界面中 保存 该响应函数代码并且运行 用户单击 下一封 按钮以后 程序调用自定义函数SendCmdAndRecv()发送客户端请求 并且接收显示相应邮件内容

    否则,提示用户发生错误

    如果用户需要浏览上一封邮件 则单击 上一封 按钮进行浏览即可 该按钮的实现原理与下一封按钮一样 上一封按钮的消息响应函数为CRecv::OnShang() 作用是显示当前邮件的前面一封邮件内容 代码如下

    void CRecv::OnShang() { n=n-1; //当前邮件序列号减1 if(n==0) //如果当前邮件已经是第一封邮件 { MessageBox("当前邮件已经是第一封邮件"); } else { this->SendCmdAndRecv(n); //调用自定义函数发送相关命令并且显示该邮件 } }

    在代码中 使用当前邮件的序列号减去1获得前一封邮件的序列号 如果该序列号为0 则提示用户当前邮件是第一封邮件 否则调用自定义函数SendCmdAndRecv()执行按钮功能 如果当前邮件之前已经没有任何邮件 那么程序将会弹出消息框提示用户发生错误

    如果用户浏览的当前邮件之前还有其他邮件 则程序将显示邮件的内容以及邮件发送者的邮件地址

    最新回复(0)