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码。

首先说明运行环境:win7+ vs2003 一:CEdit部分 改变颜色:============================== 重载对话框的WM_CTLCOLOR消息处理。 在下例中,要修改颜色的文本框对象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、<0:此值的绝对值为高度. nWidth :字体宽度. nEscapement :文本行的倾斜度. nOrientation :字符基线的倾斜度. nWeight :字体的粗细.如下: .FW_DONTCARE .FW_THIN .FW_EXTRALIGHT ..... bItalic :字体是否为斜体 bUnderline :字体是否带下划线 cStrikeOut :字体是否带删除线 nCharSet :字体的字符集 .ANSI_CHARSET .DEFAULT_CHARSET .SYMBOL_CHARSET..... nOutPrecision :字符的输出精度 nClipPrecision :字符裁剪的精度 nQuality :字符的输出质量 nPitchAndFamily :字符间距和字体族(低位说明间距,高位说明字符族) lpszFacename :字体名称 二. CButton的 *** 作(以及静态文本-Static Text控件)================= 上面的搞定以后,CButton就显得比较简单了。 思路:在对话框的OnInitDialog()方法里,通过调用控件的SetFont方法。 代码:GetDlgItem(IDC_STATIC4)->SetFont(&fnt_static)GetDlgItem(IDC_BUTTONGenerate)->SetFont(&fnt_static)其中,IDC_STATIC,IDC_BUTTON分别为静态文本和按钮的ID。 PS:以上讨论的方法只是一次修改一个控件的属性,显然这样做是不符合面向对象的思想的。 一了百了的方法:从CEdit类派生出一个可以自己处理字体、背景和字体颜色的类。具体怎样做,在研究出来后再写一篇。


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

原文地址: https://outofmemory.cn/tougao/11311619.html

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

发表评论

登录后才能评论

评论列表(0条)

保存