Windows Mobile 建立与短信信箱的连接
2010-06-03 22:56:00 来源:WEB开发网有了表格,有了记录的结构,下一步要做什么应该很容易就能想到。Yes ,取表格中的所有记录,并且遍历这些记录,查找显示名称(PR_DISPLAY_NAME)为SMS的记录。这里再介绍一种数据结构SRowSet,其定义如下:
typedef struct _SRowSet
{
ULONG cRows; /* 行数 */
SRow aRow[MAPI_DIM]; /* 行记录具体信息 */
} SRowSet, FAR * LPSRowSet;
很有意思,MAPI_DIM的值为1,但是绝不是说所有从IMAPITable中取出的行记录都只有一列,恰恰相反,列的数量是由我们前面提到的动态结构体变量Columns中的cValues的值来决定的,这里请读者朋友们注意。SRow也为一个结构体,其定义如下:
typedef struct _SRow
{
ULONG ulAdrEntryPad;
ULONG cValues; /* 用于标志lpProps成员的数量 */
LPSPropValue lpProps; /* 属性结构体*/
} SRow, FAR * LPSRow;
lpProps成员所对应的结构体SPropValue才是行记录中真正的数据。其定义如下
typedef struct _SPropValue
{
ULONG ulPropTag; /*属性标志,常用于辅助判断属性值是否成功获取*/
ULONG dwAlignPad;
union _PV Value;
} SPropValue, FAR * LPSPropValue;
这个结构中Value成员非常有用,它由很多成员组成,每个成员对应着对象的一个属性,该联合体定义如下:
typedef union _PV
{
short int i; /* case PT_I2 */
LONG l; /* case PT_LONG */
ULONG ul; /* alias for PT_LONG */
float flt; /* case PT_R4 */
double dbl; /* case PT_DOUBLE */
unsigned short int b; /* case PT_BOOLEAN */
CURRENCY cur; /* case PT_CURRENCY */
double at; /* case PT_APPTIME */
FILETIME ft; /* case PT_SYSTIME */
LPSTR lpszA; /* case PT_STRING8 */
SBinary bin; /* case PT_BINARY */
LPWSTR lpszW; /* case PT_UNICODE */
LPGUID lpguid; /* case PT_CLSID */
LARGE_INTEGER li; /* case PT_I8 */
SShortArray MVi; /* case PT_MV_I2 */
SLongArray MVl; /* case PT_MV_LONG */
更多精彩
赞助商链接