selinmetin
asked on
How can I change the font size of a edit box?
Hi,
I'm trying to change the font size of the edit box I create in the child area of my main window. I use the following code to create this window:
////////////////////////// //////////
int CChildView::OnCreate(LPCRE ATESTRUCT lpCreateStruct)
{
if (CWnd ::OnCreate(lpCreateStruct) == -1)
return -1;
// CEdit* m_pEdit -->declared in .h file
m_pEdit = new CEdit();
m_pEdit->Create(WS_CHILD|W S_VISIBLE| WS_BORDER,
CRect(0, 0, 100, 100), this, ID_TERMSCREEN);
CFont m_Font;
m_Font.CreateFont(28,20,0, 0,FW_BOLD, FALSE,FALS E,0,DEFAUL T_CHARSET,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFA ULT_QUALIT Y, DEFAULT_PITCH,NULL);
m_pEdit->SetFont(&m_Font, TRUE);
UpdateData(FALSE);
return 0;
}
////////////////////////// ////////// ///////
Unfortunately the font size never changes. Only the cursor size increases, but when I write something in the edit box it uses the default font. What should I do more or where should I call SetFont ?
I'm trying to change the font size of the edit box I create in the child area of my main window. I use the following code to create this window:
//////////////////////////
int CChildView::OnCreate(LPCRE
{
if (CWnd ::OnCreate(lpCreateStruct)
return -1;
// CEdit* m_pEdit -->declared in .h file
m_pEdit = new CEdit();
m_pEdit->Create(WS_CHILD|W
CRect(0, 0, 100, 100), this, ID_TERMSCREEN);
CFont m_Font;
m_Font.CreateFont(28,20,0,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFA
m_pEdit->SetFont(&m_Font, TRUE);
UpdateData(FALSE);
return 0;
}
//////////////////////////
Unfortunately the font size never changes. Only the cursor size increases, but when I write something in the edit box it uses the default font. What should I do more or where should I call SetFont ?
have CFont m_Font; declared in the header file so it is a member variable for the class
ASKER
Well, thanks. I managed this. I don't need to make m_Font a member of the class. Instead, I should have made m_Font a pointer to the created font and use this pointer when calling SetFont. ie:
CFont* m_Font = new CFont();
m_Font.CreateFont(28,20,0, 0,FW_BOLD, FALSE,FALS E,0,DEFAUL T_CHARSET,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFA ULT_QUALIT Y, DEFAULT_PITCH,NULL);
m_pEdit->SetFont(m_Font);
// no need to call UpdateData();
But now I have problem with the background color. I'm actually using Windows CE .net 4.1. In Win32 I can set the background automatically by the following in OnCtlColor function:
if (nCtlColor == CTLCOLOR_STATIC) {
pDC->SetBkColor(RGB(0, 0, 0));
pDC->SetTextColor(RGB(0, 255, 0));
return (HBRUSH)m_termBrush;
}
// m_termBrush is a class member formerly created.
But the background is not painted instantly, instead with every letter processed the background of the character is painted. Is there something specific with Windows CE?
CFont* m_Font = new CFont();
m_Font.CreateFont(28,20,0,
OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFA
m_pEdit->SetFont(m_Font);
// no need to call UpdateData();
But now I have problem with the background color. I'm actually using Windows CE .net 4.1. In Win32 I can set the background automatically by the following in OnCtlColor function:
if (nCtlColor == CTLCOLOR_STATIC) {
pDC->SetBkColor(RGB(0, 0, 0));
pDC->SetTextColor(RGB(0, 255, 0));
return (HBRUSH)m_termBrush;
}
// m_termBrush is a class member formerly created.
But the background is not painted instantly, instead with every letter processed the background of the character is painted. Is there something specific with Windows CE?
You had originally set it as the pointer by using &m_Font so I don't see why it should make a difference (unless it is Win CE that is).
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
And if this is a multiline edit control OnCtlColor won't color the additional lines until text is put in them. You need to subclass the control and override the OnEraseBkgnd function.