User (Legacy) Posted May 3, 2000 Report Share Posted May 3, 2000 First of all, thanks, Frank, for the answer on setting the desired charset. Being quite new to COM, I would like to ask you (or others) if my solution is optimal. The original question was... >> >> I am using Cfx4032.dll (version 4.0.16.0) in the C++ >> (VC++ ver. 6.0) application (ATL, no MFC). >> >> I am filling the series legend [...] >> Later, I do allow displaying the legend [...] >> The problem is that the strings are in the Czech language and the >> implicit font uses "Western" charset. [...] >> How can I do the same programmatically? >> >> I tried to use PutFonts(), but it uses only combination of the >> family, weight, and size [...] >> >> I do use Windows NT 4.0 English version with Czech regional setting. [...] Frank answered... > > Instead of using the Fonts property, you need to set the font using an OLE > Font object (IFont). The IFont interface has a property called CharSet that > allows you to change the Character set. > > The LegendBoxObj object has a property called Font that receives an OLE Font > object. > > There are also properties in the Chart object of this type (Axis(i).Font, > TopFont, etc.). [...] So, instead of PutFonts(), I have tried: try { ... CComQIPtr<IFont,&IID_IFont> pFont(spChartFX->GetSerLegBoxObj()->GetFont()); ATLASSERT(pFont != 0); HRESULT hr = pFont->put_Charset(EASTEUROPE_CHARSET); ATLASSERT(SUCCEEDED(hr)); ... } It seems to work, but is this O.K.? I do know the basic principles of COM (I hope , but I do not know well the related details, e.g. the ATL templates for COM. Could you confirm correctness of the following description of what I think is behind the scene. The GetFont() returns (IFontDisp *). The interface is derived from IUnknown, i.e. it supports QueryInterface(). The CComQIPtr<> uses the QueryInterface() and the IID_IFont to get the interface IFont (from whatever other interface, i.e. also from IFontDisp) and wrap the pointer into the smart-pointer object. Then I did use the put_Charset(). Is there any other more efficient, more understandable, or simply better way to do the same? Thanks for comments, Petr -- Petr Prikryl, Skil s.r.o., e-mail: prikrylp at skil dot cz Please, don't reply via e-mail. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.