::SendMessage(m_editPassword.m_hWnd, EM_SETPASSWORDCHAR, 0xa1f1, 0)
绕过MFC的封装SetPasswordChar发消息,因为SetPasswordChar的参数类型是TCHAR在ANSI下会截断MBCS成一个char而消息EM_SETPASSWORDCHAR,参数是UINT,可以容纳MBCS字符这里测试用的0xa1f1是大圆点的MBCS码。
在下例中,要修改颜色的文本框对象ID为:IDC_EDIT。HBRUSH
CTestDlg::OnCtlColor(CDC*
pDC,
CWnd*
pWnd,
UINT
nCtlColor)
{
HBRUSH
hbr
=
CDialog::OnCtlColor(pDC,
pWnd,
nCtlColor)
//
TODO:
Change
any
attributes
of
the
DC
here
if(pWnd
==
&m_edit)
{
pDC->SetBkMode(TRANSPARENT)
pDC->SetTextColor(RGB(0,0,255))
HBRUSH
newHbr
=
CreateSolidBrush(GetSysColor(COLOR_BTNFACE))
//
TODO:
Return
a
different
brush
if
the
default
is
not
desired
return
newHbr
}
return
hbr
}
改变字体的大小:=========================================思路:调用控件的SetFont方法。
步骤:1:添加字体类对象
//假设你已有了名为My的对话框工程.并有一个ID=IDC_EDIT1的Edit控件.
class
CMyDlg
:
public
CDialog
{
public:
CFont
*m_Font//最好用指针,我用对象调用好像不起作用,不清楚原因!
m_Font
=
new
CFont//结束时记得要delete
m_Font
........
}
2.新建字体&设置字体myFont.CreateFont(41,0,0,0,
100,FALSE,FALSE,0,ANSI_CHARSET,
OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,FF_SWISS,(LPCTSTR)"Arial")//创建字体
CEdit
*m_Edit=(CEdit
*)GetDlgItem(IDC_EDITBegin)
m_Edit->SetFont(&myFont,FALSE)//设置字体
创建字体函数BOOL
CreateFont的参数说明:
=============BOOL
CreateFont(
int
nHeight,
int
nWidth,
int
nEscapement,
int
nOrientation,
int
nWeight,
BYTE
bItalic,
BYTE
bUnderline,
BYTE
cStrikeOut,
BYTE
nCharSet,
BYTE
nOutPrecision,
BYTE
nClipPrecision,
BYTE
nQuality,
BYTE
nPitchAndFamily,
LPCTSTR
lpszFacename
)
nHeight
:字体高度.
三中情况
1、>0:字体的高度值(设备坐标)2、=0:字体采用缺省值.
3、
SetFont(&fnt_static)
GetDlgItem(IDC_BUTTONGenerate)->
SetFont(&fnt_static)
其中,IDC_STATIC,IDC_BUTTON分别为静态文本和按钮的ID。
PS:以上讨论的方法只是一次修改一个控件的属性,显然这样做是不符合面向对象的思想的。
一了百了的方法:从CEdit类派生出一个可以自己处理字体、背景和字体颜色的类。具体怎样做,在研究出来后再写一篇。
你用如下的方法可以设置一个控件的字体:void CDlgTestDlg::OnOK()
{
// TODO: Add extra validation here
CWnd* pEdit
pEdit = GetDlgItem(IDC_EDIT_ONE)
ASSERT(pEdit != NULL)
HFONT hFont = (HFONT)::GetStockObject(SYSTEM_FIXED_FONT)
CFont* pFont = CFont::FromHandle(hFont)
pEdit->SetFont(pFont)
// CDialog::OnOK()
}
具体的字体信息你自己查查帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)