前几天就在博客的碎语里说过重载CEdit类,好累人~ 后面这几天更让我抓狂到极点。

之前就看到网上有人说直接重载CEdit很不灵活、很麻烦,还不如自己写个CEdit类。当时觉得那样的话,就只能动态创建文本框,就不能拖控件了(不知道这种说法对不)……

从昨天下午开始解决最后几个bug,可是到今天中午一点进展都没有~

对于解决不了的bug,我把相应的整块功能都取消了(好心痛 ~ )

未实现的功能:

  • 文本框背景图像(现在只实现了背景色)
  • 实现不了圆形密码(设置不了UNICODE字符: ·
  • 鼠标滑过文本框变大,离开时变小,不能擦除多余图像
  • 不能设置密码模式的灰色文字提示

放出这个0.9的版本,实现的效果(见图)(下载源码,请到页面底部
)

3D圆角多功能文本框

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/***************************************************************************/
/*                        类名:CAdvEdit		                           */
/*				 	   (C)CopyRight www.cguage.com		     			   */
/***************************************************************************/
 
/////////////////////////////////////////////////////////////////////////////
//基类:CEdit
//功能:实现了3D圆角编辑框,可自定义字体大小、颜色,边框圆角大小、边框颜色等,可以
//自定义光标,设置多种鼠标滑过效果
//作者:C瓜哥
//		(Email: tangcraig@gmail.com  QQ: 1019714877 blog: www.cguage.com)
//版本:V0.9(2010年7月12日15:32:41)
 
//主要方法:
// - 设置光标
// void SetCursor(UINT nIDCursor);
// void SetCursor(LPCTSTR lpszCur);
// - 设置鼠标滑过效果
// void SetHoverStyle(int nHoverStyle = FOCUS_DEFAULT, int nHoverFontSize = 0,
// 				   COLORREF clrHoverBkgnd = 0, int nHoverBorderThick = 0);
//
// void SetGrayTipString(CString strTipStr);	//灰色文字提示
// void SetBorderCorner(CPoint ptBorderCorner);	//设置圆角圆度
// void SetTextColor(COLORREF clrText);			//设置文字颜色
// void SetBkgndColor(COLORREF clrBkgnd);		//设置背景颜色
// - 设置边框颜色
// void SetBorderColor(COLORREF clrBorderNormal, COLORREF clrBorderHover);
// - 设置阴影颜色
// void SetShadowColor(COLORREF clrInnerShadow, COLORREF clrOutterShadow);
// - 设置字体及大小
// 	void SetFont(int nPointSize, LPCTSTR lpszFaceName);
 
/////////////////////////////////////////////////////////////////////////////

感觉好累~实现过程,请大家下载源码研究下,我注释得相当充分,应该很容易看清楚
————————–

附件下载

CAdvEdit1.0.zip

附件下载