第9章160高级网络编程api(编辑修改稿)内容摘要:

FromHandle( )函数格式如下: static CSocket* PASCAL FromHandle( SOCKET hSocket )。 该函数的参数指出一个套接口句柄 , 在调用后返回与此套接口关联的 CSocket对象指针。 如果没有与此套接口关联的对象 ,则返回 NULL。 第 9章 高级网络编程 API 4. IsBlocking( )函数 IsBlocking( )函数格式如下: BOOL IsBlocking( )。 IsBlocking( )函数调用后返回一个布尔值 , 作用为判断在当前时刻套接口是否处于阻塞状态 , 即是否在等待某种事件的发送。 5. CancelBlockingCall( )函数 CancelBlockingCall( )函数格式如下: void CancelBlockingCall( )。 如果套接口处于阻塞状态 , 那么调用CancelBlockingCall( )函数后 , 所有套接口的阻塞请求被删除。 第 9章 高级网络编程 API 6. OnMessagePending( )函数 OnMessagePending( )函数格式如下: virtual BOOL OnMessagePending( )。 该函数是一个需要重载的虚函数 , 当套接口处于阻塞状态时 , 调用 OnMessagePending( )函数可以处理应用中的其他消息。 第 9章 高级网络编程 API 信报 API(MAPI) MAPI的结构 MAPI的组件如图 91所示。 第 9章 高级网络编程 API 信 报 感 知 应 用 程 序可 传 递 信 报 的 应 用 程 序基 于 信 报 的 应 用 程 序客 户 应 用 程 序系 统 服 务 程 序M A P I图 91 MAPI组件结构图 第 9章 高级网络编程 API MFC对 MAPI的支持 1. 使用 VC++提供的 AppWizard 利用 AppWizard创建一个 MAPI应用的过程非常简单 , 但要注意在 MFC AppWizardStep 4 of 6对话框中要确认对 MAPI项的选择 , 如图 92所示。 第 9章 高级网络编程 API 图 92 创建一个 MAPI应用 第 9章 高级网络编程 API 如果选择了 MAPI选项 , 则将为应用程序的 File菜单增加一个传送命令 , 并将为 CDocument MAPI功能增加相应的消息映射项。 若在创建工程时没有选择 MAPI选项 , 则可以通过手工的方式增加 MAPI功能。 以上创建应用程序的过程完成后,如果执行“文件”菜单中的“传送 …” 命令,则弹出如图 93所示的邮件处理窗口,用户就可以根据邮件的具体情况输入收件人、抄送、主题等内容进行邮件处理工作。 但一定要注意,如果没有设置默认的邮件处理程序,则在运行“传送 …” 命令时将弹出有关邮件设置的提示信息,要求设置默认邮件处理程序。 第 9章 高级网络编程 API 图 93 邮件处理窗口 第 9章 高级网络编程 API 2. 使用 MAPI组件 如果已经创建好了一个项目 , 但在项目中并没有使用 MAPI , 则 可 以 使 用 VC++ 的 Project | Add to Project | Commonents and Controls菜单命令 (在中文环境下为 “ 工程 ” | “ 添加工程 ” | Commonents and Controls), 弹出如图 94所示的对话框 , 双击 Visual C++ Components, 从弹出的对话框中选择 MAPI组件即可。 然后执行程序 , 在 “ 文件 ” 菜单中加入 “ Send… ”菜单命令。 第 9章 高级网络编程 API 图 94 插入 MAPI对话框 第 9章 高级网络编程 API 3. 手工添加 MAPI 我们也可以通过在程序中直接加入代码的方法添加MAPI, 操作方法如下: (1) 在 “ 文件 ” 菜单下添加 “ 传送 … ”菜单项 (也可以放在其他菜单下 )。 该菜单项的 ID可以从属性中选择ID_FILE_SEND_MAIL(当然用户也可以输入其他 ID, 但该 ID是一个标准的 ID命令 )。 (2) 为“传送 …” 命令增加消息映射。 对于每一个CDocument类,应该增加如下所示的消息映射项: 第 9章 高级网络编程 API ON_COMMAND(ID_FILE_SEND_MAIL,OnFileSendMail) ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL,OnUpdateFileSendMail) 增加后的程序为 BEGIN_MESSAGE_MAP(CMapi1Doc, CDocument) //{{AFX_MSG_MAP(CMapi1Doc) // NOTE the ClassWizard will add and remove mapping macros here. 第 9章 高级网络编程 API // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP ON_COMMAND(ID_FILE_SEND_MAIL, OnFileSendMail) ON_UPDATE_COMMAND_UI(ID_FILE_SEND_MAIL, OnUpdateFileSendMail) END_MESSAGE_MAP( ) 第 9章 高级网络编程 API MAPI的高级应用 目前存在以下 4种 MAPI的客户接口。 ● 简单 MAPI: ● 通用信报调用 (Common Messaging Calls, CMS): ● 扩展 MAPI: ●  OLE信报: 第 9章 高级网络编程 API 通用信报调用 CMC 1. CMC定义的基本数据类型 CMC定义的基本数据类型有: typedef char CMC_sint8。 typedef short CMC_sint16。 typedef long int CMC_sint32。 typedef unsigned short int CMC_uint16。 typedef unsigned long int CMC_uint32。 typedef void far * CMC_buffer。 typedef char far * CMC_string。 第 9章 高级网络编程 API typedef CMC_uint16 CMC_boolean。 typedef CMC_sint32 CMC_enum。 typedef CMC_uint32 CMC_return_code。 typedef CMC_uint32 CMC_flags。 typedef CMC_string CMC_object_identifier。 define CMC_FALSE ((CMC_boolean)0) define CMC_TRUE ((CMC_boolean)1) CMC中定义的其他数据类型还有: typedef CMC_uint32 CMC_session_id。 typedef CMC_uint32 CMC_ui_id。 typedef CMC_counted_string CMC_message_reference。 第 9章 高级网络编程 API 2. CMC定义的标志 在 CMC中定义了各种类型的标志 , 这些标志广泛使用在后面介绍的 CMC函数中。 (1)  CMC定义的扩展标志有: define CMC_EXT_REQUIRED ((CMC_flags) 0x00010000) define CMC_EXT_OUTPUT ((CMC_flags) 0x00020xx0) define CMC_EXT_LAST_ELEMENT ((CMC_flags) 0x80000000) 第 9章 高级网络编程 API define CMC_EXT_RSV_FLAG_MASK ((CMC_flags) 0xFFFF0000) define CMC_EXT_ITEM_FLAG_MASK ((CMC_flags) 0x0000FFFF) (2)  CMC定义的附件标志有: define CMC_ATT_APP_OWNS_FILE ((CMC_flags) 1) define CMC_ATT_LAST_ELEMENT ((CMC_flags) 0x80000000) define CMC_ATT_OID_BINARY ? ? ? ? ? ? define CMC_ATT_OID_TEXT ? ? ? ? ? ? 第 9章 高级网络编程 API (3)  CMC定义的名称类型标志有: define CMC_TYPE_UNKNOWN ((CMC_enum) 0) define CMC_TYPE_INDIVIDUAL ((CMC_enum) 1) define CMC_TYPE_GROUP ((CMC_enum) 2) 第 9章 高级网络编程 API (4)  CMC定义的角色标志有: define CMC_ROLE_TO ((CMC_enum) 0) define CMC_ROLE_CC ((CMC_enum) 1) define CMC_ROLE_BCC ((CMC_enum) 2) define CMC_ROLE_ORIGINATOR ((CMC_enum) 3) define CMC_ROLE_AUTHORIZING_USER ((CMC_enum) 4) 第 9章 高级网络编程 API (5)  CMC定义的接收标志有: define CMC_RECIP_IGNORE ((CMC_flags) 1) define CMC_RECIP_LIST_TRUNCATED ((CMC_flags) 2) define CMC_RECIP_LAST_ELEMENT ((CMC_flags) 0x80000000) 第 9章 高级网络编程 API (6)  CMC定义的消息标志有: define CMC_MSG_READ ((CMC_flags) 1) define CMC_MSG_TEXT_NOTE_AS_FILE ((CMC_flags) 2) define CMC_MSG_UNSENT ((CMC_flags) 4) define CMC_MSG_LAST_ELEMENT ((CMC_flags) 0x80000000) 第 9章 高级网络编程 API (7)  CMC定义的消息概要标志有: define CMC_SUM_READ ((CMC_flags) 1) define CMC_SUM_UNSENT ((CMC_flags) 2) define CMC_SUM_LAST_ELEMENT ((CMC_flags) 0x80000000) 第 9章 高级网络编程 API (8)  CMC定义的功能标志有: define CMC_ERROR_UI_ALLOWED ((CMC_flags) 0x01000000) defineCMC_L。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。