HBRUSH CGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(pWnd->GetDlgCtrlID()==IDC_LABEL)
{
pDC->SetBkColor(RGB(255, 255, 0));
pDC->SetTextColor(RGB(192, 0, 0));
}
return hbr;
}
Как изменить фонт в диалоговом окне ?
без исспльзования всяких эдитов (это не проблема).
Ну а кроме всего прочего изменять
фонт этого текста. Это какраз у меня и не получается.
Уважаемые специалисты.
Подскажите пожалуйсто как можно это сделать.
CWnd->SetFont(&font, bRedraw);
а цвет можно менять в обработчике WM_CTLCOLOR диалогового окна. напр.
Код:
шрифт можно изменить командой
CWnd->SetFont(&font, bRedraw);
а цвет можно менять в обработчике WM_CTLCOLOR диалогового окна. напр.
С цветом я разобрался но с шрифтом ничего не получается.
Я делаю так :
Код:
void CScreen::SetFont(void)
{
CWnd *pWnd;
pWnd=GetWindow(GW_OWNER);
m_font.CreateFont(20,0,0,0,FW_NORMAL,
TRUE,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"David");
pWnd->SetFont(&m_font);
}
{
CWnd *pWnd;
pWnd=GetWindow(GW_OWNER);
m_font.CreateFont(20,0,0,0,FW_NORMAL,
TRUE,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"David");
pWnd->SetFont(&m_font);
}
но прогу выбрасывет с сообщением об ошибке.
Что я не так делаю ?
Код:
void CScreen::SetFont(void)
{
CWnd *pWnd;
[COLOR=red]pWnd=this->GetDlgItem(IDC_STATIC1);[/COLOR]
m_font.CreateFont(20,0,0,0,FW_NORMAL,
TRUE,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"David");
pWnd->SetFont(&m_font);
}
{
CWnd *pWnd;
[COLOR=red]pWnd=this->GetDlgItem(IDC_STATIC1);[/COLOR]
m_font.CreateFont(20,0,0,0,FW_NORMAL,
TRUE,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"David");
pWnd->SetFont(&m_font);
}
Цитата:
Originally posted by rostyslav
если ты хочешь изменить шрифт текста, который имеет ID напр. IDC_STATIC1, тo
если ты хочешь изменить шрифт текста, который имеет ID напр. IDC_STATIC1, тo
Код:
void CScreen::SetFont(void)
{
CWnd *pWnd;
[COLOR=red]pWnd=this->GetDlgItem(IDC_STATIC1);[/COLOR]
m_font.CreateFont(20,0,0,0,FW_NORMAL,
TRUE,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"David");
pWnd->SetFont(&m_font);
}
{
CWnd *pWnd;
[COLOR=red]pWnd=this->GetDlgItem(IDC_STATIC1);[/COLOR]
m_font.CreateFont(20,0,0,0,FW_NORMAL,
TRUE,0,0,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,
CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH|FF_DONTCARE,"David");
pWnd->SetFont(&m_font);
}
Дак в том то и проблема что нет никакого статика
и писать нужно непосредственно на самом диалоге
(так сказать на его окрытой поверхности).
CFont *oldFont;
oldFont = cdc->SelectObject(&m_font);
cdc->TextOut(20,20,"Hi!");
cdc->SelectObject(oldFont);
Цитата:
Originally posted by rostyslav
CDC *cdc = this->GetDC();
CFont *oldFont;
oldFont = cdc->SelectObject(&m_font);
cdc->TextOut(20,20,"Hi!");
cdc->SelectObject(oldFont);
CDC *cdc = this->GetDC();
CFont *oldFont;
oldFont = cdc->SelectObject(&m_font);
cdc->TextOut(20,20,"Hi!");
cdc->SelectObject(oldFont);
Большое спасибо Rostyslav это кокраз то что мне было нужно.