现有一CFont类型变量要传递给VSPrinter的SetFont(LPDISPATCH newValue),怎样将该CFont类型变量转换成LPDISPATCH类型的变量

解决方案 »

  1.   

    CFontHolder怎样跟一个CFont类型变量联系起来?怎样使用CFontHolder?谢谢!
      

  2.   

    可以用过属性页进行设置FONT类型,你要自己做就要把CFont封成一个IDISPATCH派生的接口,就可以直接传了!
      

  3.   

    1.怎样把CFont封装成一个IDSIPATCH派生的接口?
    2.通过属性页能将CFont与CFontHolder联系起来?怎样实现?
      

  4.   

    在打印中用到了多种字体,用属性页设置Font类型,行不通
      

  5.   

    用IFont怎么封装CFont类型的变量
      

  6.   

    用IFont怎么封装CFont类型的变量,请给出详细代码,谢谢
      

  7.   

    to wangweixing2000(星) 关键是如何把CFont 封装成IDISPATCH 的接口,这个问题我也想知道。
      

  8.   

    问题我解决了
    CreateOleFont(CFont *pFont)
    {
    IDispatch* pDispatch = NULL;
    USES_CONVERSION;
    if (pFont)
    {
    LOGFONT LogFont;
    if (pFont->GetLogFont(&LogFont))
    {
    LOGFONT* pLogFont = &LogFont;
    FONTDESC fd;
    fd.cbSizeofstruct = sizeof(FONTDESC);
    fd.lpstrName = T2OLE(pLogFont->lfFaceName);
    fd.sWeight = (short)pLogFont->lfWeight;
    fd.sCharset = pLogFont->lfCharSet;
    fd.fItalic = pLogFont->lfItalic;
    fd.fUnderline = pLogFont->lfUnderline;
    fd.fStrikethrough = pLogFont->lfStrikeOut;

    long lfHeight = pLogFont->lfHeight;
    if (lfHeight < 0)
    lfHeight = -lfHeight;

    fd.cySize.Lo = lfHeight * 720000 / 96;
    fd.cySize.Hi = 0;

    if (FAILED(::OleCreateFontIndirect(&fd, IID_IFontDisp, (void**)&pDispatch)))
    pDispatch = NULL;
    }
    } return pDispatch;
    }