Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 424
  • Last Modified:

How to change font for all static text?

Hello,
I would like to change the font for all my text (static-text).
In OnInitDialog I did this:

       CString strSchriftart1="Microsoft Sans Serif";
   
       CFont *fontPtr1 = new CFont();
      fontPtr1->CreateFont(
       12,
        0,
        0,
        0,
       FW_NORMAL,
        0,
        0,
        0,
       DEFAULT_CHARSET,
       OUT_CHARACTER_PRECIS,
       CLIP_CHARACTER_PRECIS,
       DEFAULT_QUALITY,
       DEFAULT_PITCH|FF_DONTCARE,
       strSchriftart1);
      

       CStatic *pStatic1 =(CStatic*) GetDlgItem(IDC_STATIC);
       pStatic1->SetFont(fontPtr1);


But this will only change one of my static text (ID=IDC_STATIC).
How can I do this.
Please help
500 points with a solution.
Thank you.
Best regards,
Thomas
0
tsp2002
Asked:
tsp2002
  • 4
  • 2
  • 2
1 Solution
 
ZoppoCommented:
Hi tsp2002,

attached you can find a function which does this - to use it just call
> SetAllStaticsFont( this, fontPtr1 );
instead of your code
> CStatic *pStatic1 =(CStatic*) GetDlgItem(IDC_STATIC);
> pStatic1->SetFont(fontPtr1);

Hope that helps,

ZOPPO
void SetAllStaticsFont( CDialog* pDlg, CFont* pFont )
{
	if ( NULL == pDlg || NULL == pFont )
	{
		ASSERT( 0 );

		return;
	}

	CWnd* pChild = pDlg->GetWindow( GW_CHILD );
	const int nMaxCount = 32;
	TCHAR pszWndClassName[ nMaxCount ];

	while ( NULL != pChild )
	{
		if ( ::GetClassName( pChild->m_hWnd, pszWndClassName, nMaxCount ) )
		{
			if ( _tcsicmp( pszWndClassName, _T( "STATIC" ) ) == 0 )
			{
				pChild->SetFont( pFont );
			}
		}

		pChild = pChild->GetWindow( GW_HWNDNEXT );
	}
}

Open in new window

0
 
WiBCommented:
uint statics[] = { IDC_STATIC, IDC_STATIC1, ... };
uint sz = sizeof(statics)/sizeof(uint);

CStatic *pStatic = NULL;
for (uint i=0; i<sz; i++)
{
    pStatic =(CStatic*) GetDlgItem(statics[i]);
    pStatic->SetFont(fontPtr1);
    pStatic->UpdateFont();
}
0
 
ZoppoCommented:
@WiB: This will only work if the IDs of all statics in the dialog are manually modifies since the resource editor automatically sets the IDs of all static-controls to 'IDC_STATIC' ...
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
tsp2002Author Commented:
Hello Zoppo,
great...that works just fine.
Thank you very much for your fast and great help.
Best regards from
Thomas



0
 
ZoppoCommented:
You're welcome, I'm glad I could help ...

have a nice day,

best regards,

ZOPPO
0
 
tsp2002Author Commented:
for you too, best regards Thomas
0
 
WiBCommented:
Zoppo, OK, didn't know it was an issue
0
 
ZoppoCommented:
no problem, WiB, in general your suggestion was ok despite exactly the fact that static controls are handled differentyl by the resource editor than any other controls where the IDs have to be unique. But, even in the case this should be done i.e. for edit controls it's better to have a dynamic functionality like mine to avoid the function has to be maintained with any resource change.

A nice day to you too ...
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 4
  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now