15 мая 2023 года "Исходники.РУ" отмечают своё 23-летие!
Поздравляем всех причастных и неравнодушных с этим событием!
И огромное спасибо всем, кто был и остаётся с нами все эти годы!

Главная Форум Журнал Wiki DRKB Discuz!ML Помощь проекту


CFont vs. HFONT for rotated text

Mats Mеnhav -- manhav@connectum.skurup.se
Thursday, May 23, 1996

-- [ From: Mats Manhav * EMC.Ver #2.5.02 ] --

Env: MSVC 4.1, NT 4.0 (1234)

I wanted to build an application using rotated text.

In MSDN I found some sample code that accomplished this.

I took the code and built it into my MFC app. The sample code used HFONT but
since I use MFC I replaced these by a CFont instead. 
However the text did not get rotated when I used the CFont. When I changed
to using HFONT directly it worked alright. 
What is really going on here that makes the CFont not rotating the text.

Mats

Here is the "CFont" code I used:
--------------------------------
class Mypage : public CPropertyPage
{
   ...
   CFont * m_RotatedFont;
   ...
}

void Mypage::OnPaint() 
{
   CPaintDC dc(this); // device context for painting

   if (!m_RotatedFont)
   {
      CFont *olFont = dc.GetCurrentFont();
      LOGFONT lf;
      olFont->GetLogFont(&lf);

      strcpy(lf.lfFaceName, "Arial");
      lf.lfHeight = 13;
      lf.lfEscapement = 600;
      m_RotatedFont = new CFont;
      m_RotatedFont->CreateFontIndirect(&lf);
   }
   CClientRect rect(this);
   dc.SelectObject(&m_RotatedFont);
   dc.TextOut(rect.left+2, rect.bottom/2, "TimeZone1", 9);
}


Here is the "HFONT" code I used:
--------------------------------
class Mypage : public CPropertyPage
{
   ...
   HFONT m_RotatedFont;
   ...
}

void Mypage::OnPaint() 
{
   CPaintDC dc(this); // device context for painting

   if (!m_RotatedFont)
   {
      CFont *olFont = dc.GetCurrentFont();
      LOGFONT lf;
      olFont->GetLogFont(&lf);

      strcpy(lf.lfFaceName, "Arial");
      lf.lfHeight = 13;
      lf.lfEscapement = 600;
      m_RotatedFont = CreateFontIndirect(&lf);
   }
   
   CClientRect rect(this);
   SelectObject(dc.m_hDC, m_RotatedFont);
   dc.TextOut(rect.left+2, rect.bottom/2, "TimeZone1", 9);
}


--
==========================================================================
Mats Mеnhav (Mats Manhav for 7-bit people)
email:manhav@connectum.skurup.se   WWW: http://connectum.skurup.se/~manhav
FAX:  (int) 46 (0) 414 243 05      Phone: (int) 46 (0) 414 243 05         
==========================================================================




Mike Martonfi -- mikem@abelcomputers.com
Thursday, May 30, 1996

m_RotatedFont	is a pointer to a CFont, yet you do a =
dc.SelectObject(&m_RotatedFont). The correct call should be =
dc.SelectObject(m_RotatedFont);
---------------------
Mike Martonfi
mikem@abelcomputers.com




| Вернуться в корень Архива |