LPDISPATCH型 の使い方について

[戻る]
やす 2009/05/15(金) 09:47:42
以前の質問「引数 LPDISPATCH の使い方について」でOCXの引数にLPDISPATCH型を渡す回
答として下記が回答されていました。

>IFont、IFontDisp をヘルプで引くと解説が出てきます。

VSFLEXで同様にフォントの設定を行いたいのですが、CFONTのCreateFontで作成したフォ
ントをLPDISPATCH型に変更することは可能でしょうか。

Kelly 2009/05/15(金) 10:12:40
OleCreateFontIndirect()を使ってIFontDisp*型のオブジェクトを作成し、
それを渡せば良いです。

CFontからの変換は、MFCソースのCOleControlContainer::CreateOleFont()の
コードが参考になると思います。

aetos 2009/05/15(金) 10:19:47
CFont から IFontDisp を作れればいいんでしょうが、方法がわかりません。
CFont::CreateFont の代わりに OleCreateFontIndirect を使うのはどうでしょうか。

やす 2009/05/15(金) 11:25:32
[[解決]]
Kelly さん回答ありがとうございます。
OleCreateFontIndirect()を使用することでフォントを設定することができました。
下記、OleCreateFontIndirectで検索したソースの抜粋です。

CFontでフォントを作成していましたが、下記で代用することにします。

//////////////////////////////////////////////////////////////
LPFONTDISP pOleFont = NULL;
FONTDESC fd;
fd.cbSizeofstruct = sizeof(FONTDESC);
fd.lpstrName = L"MS ゴシック"; //T2OLE("MS ゴシック");
fd.sWeight = 400;
fd.sCharset = SHIFTJIS_CHARSET;
fd.fItalic = 0;
fd.fUnderline = 0;
fd.fStrikethrough = 0;
fd.cySize.Lo = 22 * 100000;
fd.cySize.Hi = 0;
if (FAILED(::OleCreateFontIndirect(&fd, IID_IFontDisp, (void**)&pOleFont)))
{
  pOleFont = NULL;
}
m_grid1.put_Font(pOleFont);   grid1:VSFLEX
//////////////////////////////////////////////////////////////

古いスレッドには追加発言できません。