Re: CDC:TextOut and Plus or Minus Sign
On May 18, 11:34 pm, Joseph M. Newcomer <newco...@flounder.com> wrote:
First, I have no idea what 177 is. I'd simply use _T('=B1') which is pre=
tty easy to insert
(you can use Character Map, select the =B1 character, copy to clipboard, =
and paste.
What the debugger tells you is irrelevant here. What matters is what cha=
racter is in the
font you are using. Normally you would find MS Sans Serif being used for=
most controls
(and the dialog that contains them), and it, too, has a =B1 character. S=
o you need to tell
us what font you are using.
And why are you using some horrendously obsolete and dangerous function l=
ike sprintf?
Consider this dead technology, and to be used only in the most exotic and=
rare conditions
imaginable, of which this is not one. Note also that you should be think=
ing of 'char' as
a hopelessly obsolete data type, and its existence should be ignored exce=
pt in some
moderately rare situations. Use TCHAR, and make sure all literals are en=
closed in _T().
All 8-bit string character operations should be replaced with Unicode-awa=
re functions as
in tchar.h.
CString Text;
Text.Format(_T("%s (=B1%f %s)"), csLabel, fError, csUnits);
Then, since you are using a CString, you can write
dc.TextOut(pWindowPoint.x, pWindowPoint.y, csText);
(you don't need the int casts if pWindowPoint.x is already an int. And w=
hy are you
calling it pWindowPoint and using . to access the field? p-anything mean=
s it is a
pointer, and this suggests that you would want to write pWindowPoint->x.=
Do not use
Hungarian Notation if you use it incorrectly)
There is no need to put 177 anywhere. If you feel compelled to do this, =
you should write
#define CHAR_PLUS_MINUS 177
instead of just pllugging in this random value in various places.
So you need to figure out what font you are using, and then you can use c=
haracter map to
see if it has a =B1 character in it. If it doesn't have it, use a differ=
ent font.
One way to discover this is to do
#ifdef _DEBUG
{
CFont * f = dc.GetCurrentFont();
LOGFONT lf;
f->GetLogFont(&lf);
TRACE(_T("The font is %s\n"), lf.lfFaceName);}
#endif
joe
On 18 May 2007 14:34:54 -0700, PeterOut <MajorSetb...@excite.com> wrote:
I am using MSVC 7.1.3088 on MS XP 5.1 service pack 2.
I am trying to write the plaus or misu sign to a display window using
CDC:TextOut. I can write the symbol to a character buffer using
sprintf(csText, "%s (%c%f %s)", csLabel, 177, fError, csUnits);
which gives me
"Elevation (=B17.926902 Meters)" in csText.
However, when I try to write it to the window using
TextOut(DeviceContext, (int)(pWindowPoint.x), (int)(pWindowPoint.y),
(LPCTSTR)csText, (int)stStringlength);
I get a rectangle where the =B1 (plus or minus) sign should be.
Is there a way I can write the PM sign to the window? I would like my
text to run vertically.
Many thanks in advance,
Peter.
Joseph M. Newcomer [MVP]
email: newco...@flounder.com
Web:http://www.flounder.com
MVP Tips:http://www.flounder.com/mvp_tips.htm- Hide quoted text -
- Show quoted text -
Many thanks for your help and sorry for my tardy reply. I guess this
necessitates MFC. I have been trying to do this inside a class that
is called by my MFC-using code but does not actually use MFC.
Thanks,
Peter.