具有背景颜色和文字颜色的只读属性的EDIT控件的实现作者.docVIP

具有背景颜色和文字颜色的只读属性的EDIT控件的实现作者.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
具有背景颜色和文字颜色的只读属性的EDIT控件的实现作者

具有背景颜色和文字颜色的只读属性的EDIT控件的实现  作者 戚高 关键字 只读 原作者姓名 戚高 文章原始出处 原创 介绍 你是否为你的EDIT控件设置成为只读属性那个灰色的背景色不合你的程序整体布局而烦恼了,其实实现这个方法不难,下面就是这个的实现方法,代码可以任意拷贝和使用 读者评分 18 评分次数 5 正文 EDIT控件设置只读属性后就不允许用户进行输入和编辑删除等基本操作了,控件只可以用来信息的浏览,但是,如果使用默认的设置函数的话,EDIT控件的背景色将变成灰色,如果你的主题程序的颜色背景进行一致的处理的话,这样可能会与你的整体风格不和,所以需要一个具有背景颜色但是又具有只读属性的EDIT控件刻不容缓了. ????实现的方法其实很简单,派生一个CEDIT类,我们这里命名为CColReadOnlyEdit,再这个类中我们首先触发PreTranslateMessage,这个函数可以用来截获消息编程.我们如果要进行EDIT控件的属性设置,我们可以再这里进行截获WM_KEYDOWN消息,具体编程可以见下: BOOL CColReadOnlyEdit::PreTranslateMessage(MSG* pMsg) { ????// TODO: Add your specialized code here and/or call the base class ????if(pMsg-message == WM_KEYDOWN) ????{ ????????if(bReadOnly) ????????????return TRUE;//在这里进行屏蔽并返回 ????} ????return CEdit::PreTranslateMessage(pMsg); } ?? ????现在屏蔽键盘的功能我们实现了,接下来的就是编写一个具有背景颜色和字体颜色的窗体了.其实这个也非常简单,我们只需要触发WM_PAITN消息,然后进行窗体控件的背景重绘和字体重新输出就可以了. void CColReadOnlyEdit::OnPaint() { ????CPaintDC dc(this); // device context for painting ???? ????// TODO: Add your message handler code here ????GetWindowText(m_Text); 牋牋// Delete the old brush 牋牋m_Brush.DeleteObject(); 牋牋m_Brush.CreateSolidBrush(m_BackColor); 牋牋CDC* pDC = GetDC(); 牋牋pDC-SetBkMode(OPAQUE); 牋牋pDC-SetBkColor(m_BackColor); 牋牋pDC-SelectObject(m_Brush); 牋牋CRect rc; 牋牋GetClientRect(rc); 牋牋ScreenToClient(rc); 牋牋pDC-Rectangle(0, 0, rc.Width(), rc.Height()); 牋牋pDC-SetTextColor(m_TextColor); 牋牋pDC-TextOut(2, 2, m_Text.GetBuffer(m_Text.GetLength())); 牋牋// Do not call CEdit::OnPaint() for painting messages } 牋牋最后还有一个重要的一点就是屏蔽鼠标在EDIT控件上的右键操作,因为你虽然象上面实现了操作,但是如果使用鼠标右键菜单粘贴也是可以的(键盘粘贴被屏蔽),这里的方法有很多,比如触发WM_RBUTTONDOWN消息进行处理可以,同时我们可以在PreTranslateMessage中进行截获处理,也可以处理EN_CHANGE消息,这里进行最简单的,触发WM_RBUTTONDOWN消息,直接进行返回就可以了,相关代码见下: void CColReadOnlyEdit::OnRButtonDown(UINT nFlags, CPoint point) { ????// TODO: Add your message handler code here and/or call default ????if(bReadOnly) ????{ ????????::AfxMessageBox(设置成为只读模式,右键菜单屏蔽!); ????????return; ????} ????else ????????CEdit::OnRButtonDown(nFlags, point); } 程序演

文档评论(0)

ldj215323 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档