龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

用Visual C++增强Notes打印功能(3)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
四 例程 下面的程序段定义了一个带有默认值公式的名为"TextField"的域: char TextFieldName[] = "TextField"; char TextDescription[] = "This is a Simple Text Field"; char TextDefV

  四 例程

  下面的程序段定义了一个带有默认值公式的名为"TextField"的域:

  char TextFieldName[] = "TextField";
  char TextDescription[] = "This is a Simple Text Field";
  char TextDefValFormula[] = ""Default"";
  char far *pBufferStart, far *pBuffer;
  HANDLE hMem;
  CDPABREFERENCE CDPabRef;
  CDPARAGRAPH CDPara;
  CDBEGINRECORD CDBegin;
  CDENDRECORD CDEnd;
  CDEXT2FIELD CDExt2Field;
  CDFIELD CDField;
  FONTIDFIELDS *pFontFields;

// 申请内存并锁定内存,获得指向该块内存的指针
  OSMemAlloc (0, wCDBufferLength, &hMem);
  pBufferStart = (char far *)OSLockObject(hMem);
  memset( pBufferStart, 0, (size_t) wCDBufferLength );
  pBuffer = pBufferStart;

// 填写 PARAGRAPH 结构
  // 结构体的长度
  CDPara.Header.Length = (BYTE) ODSLength(_CDPARAGRAPH);
  // 结构体的类型
  CDPara.Header.Signature = (BYTE)SIG_CD_PARAGRAPH;
  // 转换为Domino规范的形式写入申请的内存
  ODSWriteMemory( (void far * far *)&pBuffer, _CDPARAGRAPH, &CDPara, 1 );

// 填写 PABREF 结构
  CDPabRef.Header.Signature = (BYTE)SIG_CD_PABREFERENCE;
  CDPabRef.Header.Length = (BYTE) ODSLength(_CDPABREFERENCE);
  // 要引用的段定义的序号
  CDPabRef.PABID = wPabDefNumber;
  ODSWriteMemory( (void far * far *)&pBuffer, _CDPABREFERENCE, &CDPabRef, 1 );

// 填写CDBEGINRECORD 结构
  CDBegin.Header.Length = (BYTE)ODSLength(_CDBEGINRECORD);
  CDBegin.Header.Signature = SIG_CD_BEGIN;
  CDBegin.Version = 0;
  CDBegin.Signature = SIG_CD_FIELD;
  ODSWriteMemory( (void far * far *)&pBuffer, _CDBEGINRECORD,(void far *) &CDBegin, 1 );

// 填写CDEXT2FIELD 结构
  memset(&CDExt2Field, 0, sizeof(CDEXT2FIELD));
  CDExt2Field.Header.Length = (WORD)ODSLength(_CDEXT2FIELD);
  CDExt2Field.Header.Signature = SIG_CD_EXT2_FIELD;
  ODSWriteMemory( (void far * far *)&pBuffer, _CDEXT2FIELD, (void far *) &CDExt2Field, 1 );

// 填写CDFIELD 结构,定义文本域
  CDField.Header.Signature = SIG_CD_FIELD;
  CDField.Flags = FEDITABLE;
  CDField.DataType = TYPE_TEXT;
  CDField.ListDelim = LDDELIM_SEMICOLON;

  // 本域中不用数值格式参数,全部清零
  CDField.NumberFormat.Digits = 0;
  CDField.NumberFormat.Format = 0;
  CDField.NumberFormat.Attributes = 0;
  CDField.NumberFormat.Unused = 0;

精彩图集

赞助商链接