Font modification is not proper in ListCtrl !! - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Font modification is not proper in ListCtrl !!

vasanthgvvasanthgv Posts: 1Member

I am facing a problem related to Font support on SDI application.
Control used is List Control.
Class 'CSamp' mentioned below in the sample Source code is derived from CListView.


Source Code :

void CMainFrame::OnSelectFontStyle()
// Font Structure
LOGFONT lfwork;
// Application Object
CPSMApp* pApp = (CPSMApp*)AfxGetApp();

lfwork = pApp->m_LogFont;
// Create a Font Dialog
CFontDialog w_dlg( &lfwork );

// Flags used to indicate the User's input

// Opens the Font dialog
if (w_dlg.DoModal() == IDOK)
// Load wait cursor
CWaitCursor obWaitCursor;

// Gets the Font selected in the Dialog

// If current view is Installed Software screen
CSamp *pobInsSoftView = m_pobDoc->GetSoftwareView();

// Apply font on Software View
pobInsSoftView->FontChange( &pApp->m_LogFont);


void CSamp:FontChange( LOGFONT* rlogfont )
if( m_FontFlg == TRUE )

CFont* pOldFont = NULL;
CDC* pDC = GetDC();

memset( &tm, 0x00, sizeof(tm) );

// Delete if CFont object already exists
if( m_LBfont != NULL )
delete m_LBfont;

// Create new CFont object
m_LBfont = new CFont;
if( m_LBfont == NULL )

// Initializes a CFont object m_LBfont
m_LBfont->CreateFontIndirect( rlogfont );

pOldFont = pDC->SelectObject( m_LBfont );

if( pDC->GetTextMetrics(&tm) )
// Set List Item height
m_nItemHeight = tm.tmHeight + 1;

ReleaseDC( pDC );

// Changes the current font of the window
SetFont( m_LBfont, TRUE );

// Reset the charset to the original value.
rlogfont->lfCharSet = lCharSet;

Behaviour :
While switching between Non-Japanese Support Font to Japanese Support Font and vice versa., Font application is not taking place properly.
Only when we refresh the screen, actual font application is taking place.

Scenario :
When i select Non-Japanese Support font (Ex. 'Times New Roman' , it displays Junk characters which is a normal behaviour.
Now when i switch from existing Non-Japanese support font to Japanese support font, even now it displays Junk characters and
only when i refresh, actual Japanese characters are displayed.


When I set Japanese Support font, the Japanese characters should be displayed without refreshing in all possible combination
disregarding whether previously selected font is Non-Japanese support font or not.

In the above mentioned Method, actual font change takes place only when the screen is refreshed.

I need the font change to happen without refreshing or using UpdateAllViews().

OS : Windows NT 4.0 SP6a Japanese
Control used : ListCtrl
Application Type : SDI

Thanks & Regards,
Vasanth Kumar G
Sign In or Register to comment.