MFC 如何改变CEdit密码编辑框中显示的字符?

MFC 如何改变CEdit密码编辑框中显示的字符?,第1张

用winapi函数,如下:

::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()

}

具体的字体信息你自己查查帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7849742.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存