QQ登录

只需一步,快速开始

上位机MFC编辑框字体大小背景设置实例

[ 复制链接 ]
效果演示

当前这个实例用于定制编辑框文本、背景颜色和字体大小等属性。
效果如下图

上位机MFC编辑框字体大小背景设置实例

上位机MFC编辑框字体大小背景设置实例

属性在例程中是通过下面代码设置
        COLORREF bk = RGB(255, 255, 255);
        m_Edit.bkColor( bk );
    m_Edit.textColor( RGB(255,0,0) );
    m_Edit.setFont( -17 );


实现过程

1.新建立基于对话框工程,复制例程根目录文件EDITEX.H
,EDITEX.CPP,LOGFONT.H到自己工程目录,并导入到工程,这样工程会多出几个集成类。
如CEditEx等。

2.然后就是这个类的使用。
在主对话框类的包含头文件并添加类实例
#include "EditEx.h"
CEditEx        m_Edit;
初始化实例,设置其文本背景等属性
        COLORREF bk = RGB(255, 255, 255);
        m_Edit.bkColor( bk );
    m_Edit.textColor( RGB(255,0,0) );
    m_Edit.setFont( -17 );


3.编译,这样例程就可以运行,查看效果了
下面是文件的源代码,可以复制使用或直接下载例程使用:
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:CTest.rar 
文件大小:36.83 KB  售价:1金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我


  1. // Description:
  2. //
  3. //  Extended CEdit class. Allows easy customization of the following:
  4. //
  5. //      1. COLORREF bkColor( COLORREF crColor )
  6. //         - Sets back ground color of the control
  7. //
  8. //      2. COLORREF bkColor()
  9. //         - Returns back ground color of control
  10. //
  11. //      3. COLORREF textColor( COLORREF crColor )
  12. //         - Sets text or foreground color of the control
  13. //
  14. //      4. COLORREF textColor() const
  15. //         - Returns text (or foreground) color of control
  16. //
  17. //      5. void setCustomMask( CEditMask* editMask /* NULL means default state */ )
  18. //
  19. //      6. void definePopupMenu( UINT uResourceID = 0 /* 0 uses default */ )
  20. //         - Overide default context menu with new menu resource.
  21. //
  22. //      *** Set new font for this control ***
  23. //
  24. //      7. void setFont( const LOGFONT* lpLogFont );
  25. //  
  26. //      8. void setFont( LONG fontHeight      = -8,
  27. //                       LONG fontWeight      = FW_NORMAL,
  28. //                       UCHAR pitchAndFamily = DEFAULT_PITCH | FF_DONTCARE,
  29. //                       LPCSTR faceName      = _T("MS Sans Serif"         
  30. //                     );
  31. //
  32. // Remarks:
  33. //
  34. //      When using the CEditEx control do not free the CEditMask pointer
  35. //      assigned by the setCustomMask call. This class will free it for
  36. //      you once it leaves scope.

  37. #ifndef LOGFONT_H_E7F7D1A0_AE36_11d1_9257_006097CAB461
  38. #define LOGFONT_H_E7F7D1A0_AE36_11d1_9257_006097CAB461

  39. #ifndef __cplusplus
  40. #   error C++ compilation is required.
  41. #endif

  42. #if _MSC_VER >= 1000
  43. #pragma once
  44. #endif // _MSC_VER >= 1000

  45. struct CLogFont : public LOGFONT
  46. {
  47.     CLogFont( LONG fontHeight      = -8,
  48.               LONG fontWeight      = FW_NORMAL,
  49.               UCHAR pitchAndFamily = DEFAULT_PITCH | FF_DONTCARE,
  50.               LPCSTR faceName      = _T("MS Sans Serif" )
  51.             )
  52.     {
  53.         const int size = sizeof(*this);

  54.         memset( this, 0, size );

  55.         lfHeight         = fontHeight;
  56.         lfWeight         = fontWeight;
  57.         lfPitchAndFamily = pitchAndFamily;

  58.         _ASSERT( LF_FACESIZE > lstrlen( faceName ) );

  59.         lstrcpy( lfFaceName, faceName );
  60.     }

  61.     // Note: No need for CLogFont& operator =(const CLogFont& lf) {...}
  62.     //       We let the compiler handle it...

  63.     void lfFaceNameSet( LPCSTR faceName )
  64.     {
  65.         _ASSERT( faceName );

  66.         if ( !faceName ) return;

  67.         _ASSERT( LF_FACESIZE > lstrlen( faceName ) );

  68.         lstrcpy( lfFaceName, faceName );        
  69.     }

  70. };

  71. #endif // LOGFONT_H_E7F7D1A0_AE36_11d1_9257_006097CAB461

  72. #if !defined(AFX_EDITEX_H__B3788DB1_4FA1_11D1_9FB8_006097B531B3__INCLUDED_)
  73. #define AFX_EDITEX_H__B3788DB1_4FA1_11D1_9FB8_006097B531B3__INCLUDED_

  74. #if _MSC_VER >= 1000
  75. #pragma once
  76. #endif // _MSC_VER >= 1000

  77. /////////////////////////////////////////////////////////////////////////////
  78. // CEditEx window

  79. class CEditMask
  80. {
  81. public:
  82.     virtual BOOL AddChar( UINT nChar ) = 0;
  83. };


  84. class CEditEx : public CEdit
  85. {
  86. // Construction
  87. public:
  88.         CEditEx();

  89.     DECLARE_DYNCREATE( CEditEx )

  90. // Copy Semantics

  91.    // Block copy construction...
  92.    //
  93.    // No m_hWnd defined for object.
  94.    //
  95. private:
  96.    CEditEx( const CEditEx& );

  97. public:
  98.    // Allow basics to be copied...
  99.    CEditEx& operator = ( const CEditEx& );

  100. // Attributes
  101. public:

  102.     void setCustomMask( CEditMask* editMask )
  103.     {
  104.         if ( m_pEditMask ) delete m_pEditMask;
  105.         m_pEditMask = editMask;
  106.     }

  107.     COLORREF bkColor  ( COLORREF );   
  108.     COLORREF textColor( COLORREF );

  109.     COLORREF bkColor()   const { return m_crBkColor;   }   
  110.     COLORREF textColor() const { return m_crTextColor; }

  111.     void setFont( const LOGFONT* lpLogFont );

  112.     void setFont( LONG fontHeight      = -8,
  113.                   LONG fontWeight      = FW_NORMAL,
  114.                   UCHAR pitchAndFamily = DEFAULT_PITCH | FF_DONTCARE,
  115.                   LPCSTR faceName      = _T("MS Sans Serif" ) );
  116.    
  117.     void definePopupMenu( UINT uResourceID = 0 /* 0 uses default */ )
  118.     {
  119.         m_MenuResourceID = uResourceID;
  120.     }

  121. // Operations:
  122. public:

  123. // Overrides
  124.         // ClassWizard generated virtual function overrides
  125.         //{{AFX_VIRTUAL(CEditEx)
  126.         //}}AFX_VIRTUAL

  127. // Implementation
  128. public:
  129.         virtual ~CEditEx();

  130.         // Generated message map functions
  131. protected:
  132.         //{{AFX_MSG(CEditEx)
  133.     afx_msg void OnContextMenu(CWnd* pWnd, CPoint point);
  134.         afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags);
  135.         //}}AFX_MSG
  136.     afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);

  137.         DECLARE_MESSAGE_MAP()

  138.     // Customize your brush
  139.     //
  140.     virtual BOOL CreateBrushType();

  141. private:
  142.     CBrush   m_brBkGround;
  143.     COLORREF m_crBkColor;
  144.     COLORREF m_crTextColor;

  145.     CEditMask* m_pEditMask;

  146.     CFont* m_pCFont;

  147.     UINT m_MenuResourceID;
  148. };

  149. /////////////////////////////////////////////////////////////////////////////

  150. //{{AFX_INSERT_LOCATION}}
  151. // Microsoft Developer Studio will insert additional declarations immediately before the previous line.

  152. #endif // !defined(AFX_EDITEX_H__B3788DB1_4FA1_11D1_9FB8_006097B531B3__INCLUDED_)
复制代码
  1. // Description:
  2. //
  3. //  Extended CEdit class. Allows easy customization of the following:
  4. //
  5. //      1. COLORREF bkColor( COLORREF crColor )
  6. //         - Sets back ground color of the control
  7. //
  8. //      2. COLORREF bkColor()
  9. //         - Returns back ground color of control
  10. //
  11. //      3. COLORREF textColor( COLORREF crColor )
  12. //         - Sets text or foreground color of the control
  13. //
  14. //      4. COLORREF textColor() const
  15. //         - Returns text (or foreground) color of control
  16. //
  17. //      5. void setCustomMask( CEditMask* editMask /* NULL means default state */ )
  18. //
  19. //      6. void definePopupMenu( UINT uResourceID = 0 /* 0 uses default */ )
  20. //         - Overide default context menu with new menu resource.
  21. //
  22. //      *** Set new font for this control ***
  23. //
  24. //      7. void setFont( const LOGFONT* lpLogFont );
  25. //  
  26. //      8. void setFont( LONG fontHeight      = -8,
  27. //                       LONG fontWeight      = FW_NORMAL,
  28. //                       UCHAR pitchAndFamily = DEFAULT_PITCH | FF_DONTCARE,
  29. //                       LPCSTR faceName      = _T("MS Sans Serif"         
  30. //                     );
  31. //
  32. // Remarks:
  33. //
  34. //      When using the CEditEx control do not free the CEditMask pointer
  35. //      assigned by the setCustomMask call. This class will free it for
  36. //      you once it leaves scope.
  37. //
  38. #include "stdafx.h"
  39. #include "LogFont.h"
  40. #include "EditEx.h"

  41. #ifdef _DEBUG
  42. #define new DEBUG_NEW
  43. #undef THIS_FILE
  44. static char THIS_FILE[] = __FILE__;
  45. #endif

  46. /////////////////////////////////////////////////////////////////////////////
  47. // CEditEx
  48. IMPLEMENT_DYNCREATE(CEditEx, CEdit)

  49. BEGIN_MESSAGE_MAP(CEditEx, CEdit)
  50.     //{{AFX_MSG_MAP(CEditEx)
  51.     ON_WM_CHAR()
  52.     ON_WM_CONTEXTMENU()
  53.     //}}AFX_MSG_MAP
  54.     ON_WM_CTLCOLOR_REFLECT()
  55. END_MESSAGE_MAP()

  56. /////////////////////////////////////////////////////////////////////////////
  57. // Public Interfaces:
  58. //

  59. // Construction:
  60. //
  61. //** CEditEx::CEditEx()
  62. //
  63. CEditEx::CEditEx() : m_pCFont(0)
  64. {
  65.     // Use default popup menu
  66.     //
  67.     m_MenuResourceID = 0;

  68.     // Use system colors for defaults
  69.     //
  70.     m_crTextColor = ::GetSysColor( COLOR_WINDOWTEXT );
  71.     m_crBkColor   = ::GetSysColor( COLOR_WINDOW     );

  72.     // The default brush type: SOLID
  73.     //
  74.     CreateBrushType();

  75.     // Edit mask is null
  76.     //
  77.     m_pEditMask = 0;
  78. }

  79. //** CEditEx::~CEditEx()
  80. //
  81. CEditEx::~CEditEx()
  82. {
  83.     if ( m_pCFont    ) delete m_pCFont;
  84.     if ( m_pEditMask ) delete m_pEditMask;
  85. }

  86. // Note: Copy construction is blocked for this class.
  87. //       This is because there would be no defined
  88. //       m_hWnd during the construction of the object.
  89. //
  90. // CEditEx::CEditEx( const CEditEx& o )
  91. //

  92. // Allow = operator to be used for copying basics.
  93. //
  94. CEditEx& CEditEx::operator = ( const CEditEx& o )
  95. {

  96.     _ASSERT( o != *this ); // You probably did not mean to do this...

  97.     if ( o == *this ) return *this; // copying self...
  98.    
  99.     bkColor( o.m_crBkColor );
  100.     textColor( o.m_crTextColor );

  101.     if ( o.m_pCFont ) {
  102.          CLogFont pLogFont;
  103.          o.m_pCFont->GetLogFont( &pLogFont );
  104.          setFont( &pLogFont );
  105.     }

  106.     return *this;
  107. }
  108. //** void SetFont( const LOGFONT* lpLogFont )
  109. //

  110. void CEditEx::setFont( const LOGFONT* lpLogFont )
  111. {
  112.     _ASSERT( lpLogFont ); // logfont is not defined!!!

  113.     if ( !lpLogFont ) return;

  114.     if ( m_pCFont ) delete m_pCFont;
  115.    
  116.     m_pCFont = new CFont;
  117.     m_pCFont->CreateFontIndirect( lpLogFont );

  118.     SetFont( m_pCFont );
  119. }

  120. void CEditEx::setFont( LONG fontHeight      /* = -8                         */,
  121.                        LONG fontWeight      /* = FW_NORMAL                  */,
  122.                        UCHAR pitchAndFamily /* = DEFAULT_PITCH | FF_DONTCARE*/,
  123.                        LPCSTR faceName      /* = _T("MS Sans Serif")        */ )
  124. {
  125.     if ( m_pCFont )
  126.     {
  127.         delete m_pCFont;
  128.     }
  129.     m_pCFont = new CFont;

  130.     const CLogFont lf( fontHeight,
  131.                        FW_NORMAL,
  132.                        pitchAndFamily,
  133.                        faceName
  134.                      );

  135.     m_pCFont->CreateFontIndirect( &lf );

  136.     SetFont( m_pCFont );
  137. }

  138. //** COLORREF CEditEx::bkColor( COLORREF crColor )
  139. //
  140. COLORREF CEditEx::bkColor( COLORREF crColor )
  141. {
  142.     _ASSERT(::IsWindow(m_hWnd));

  143.     COLORREF crPrevBkColor = m_crBkColor;

  144.     m_crBkColor = crColor;
  145.    
  146.     m_brBkGround.DeleteObject();

  147.     CreateBrushType();

  148.     Invalidate();

  149.     return crPrevBkColor;
  150. }

  151. //** COLORREF CEditEx::textColor( COLORREF crColor )
  152. //
  153. COLORREF CEditEx::textColor( COLORREF crColor )
  154. {
  155.     _ASSERT(::IsWindow(m_hWnd));
  156.    
  157.     COLORREF crPrevTextColor = m_crTextColor;
  158.    
  159.     m_crTextColor = crColor;
  160.    
  161.     Invalidate();
  162.    
  163.     return crPrevTextColor;
  164. }

  165. /////////////////////////////////////////////////////////////////////////////
  166. // Protected and private interfaces:

  167. //
  168. //** BOOL CEditEx::CreateBrushType()
  169. //
  170. BOOL CEditEx::CreateBrushType()
  171. {
  172.     return m_brBkGround.CreateSolidBrush( m_crBkColor );
  173. }

  174. //** void CEditEx::OnContextMenu(CWnd* pWnd, CPoint point)
  175. //
  176. void CEditEx::OnContextMenu(CWnd* pWnd, CPoint point)
  177. {
  178.     // Use default popup
  179.     //
  180.     if ( !m_MenuResourceID ) {
  181.          CEdit::OnContextMenu( pWnd, point );
  182.          return;
  183.     }
  184.    
  185.     // Replace default popup menu
  186.     //
  187.     CMenu menu;
  188.    
  189.     if ( !menu.LoadMenu( m_MenuResourceID ) ) {
  190.          CEdit::OnContextMenu( pWnd, point);
  191.     }
  192.     else {
  193.          CMenu* pContext = menu.GetSubMenu(0);
  194.          pContext->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, this );
  195.     }
  196. }

  197. //** void CEditEx::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
  198. //
  199. void CEditEx::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
  200. {
  201.     if ( 0 == m_pEditMask ) {
  202.          CEdit::OnChar(nChar, nRepCnt, nFlags);
  203.          return;
  204.     }

  205.     // else Use custom mask...
  206.     //
  207.     if ( m_pEditMask->AddChar( nChar ) )
  208.          CEdit::OnChar(nChar, nRepCnt, nFlags);
  209.     else
  210.          MessageBeep(0);
  211. }

  212. //** HBRUSH CEditEx::CtlColor(CDC* pDC, UINT nCtlColor)
  213. //
  214. HBRUSH CEditEx::CtlColor(CDC* pDC, UINT nCtlColor)
  215. {
  216.     pDC->SetTextColor( m_crTextColor );
  217.     pDC->SetBkColor( m_crBkColor );
  218.     return (HBRUSH)m_brBkGround;
  219. }
复制代码


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索