自定义MFC CEdit控件的外观

来源:互联网 发布:此windows副本不是正版 编辑:程序博客网 时间:2024/05/18 13:30
#pragma once/*Title:自定义MFC CEdit控件的外观目的:自定义MFC CEdit控件的边框颜色,显示内容的左上角坐标。     要改变字体和CEdit控件的大小可以在调用者中设置。
测试环境:VS2013SP3
状态:待更新
最后更新日期:2014-10-21例如://m_font is CFont.//m_ctlServiceID is CKagulaCEditm_font.CreatePointFont(120, L"宋体");m_ctlServiceID.SetWindowPos(NULL, 0, 0, ceditWidth, ceditHeight,SWP_NOMOVE | SWP_NOZORDER | SWP_NOREPOSITION);m_ctlServiceID.SetFont(&m_font);m_ctlServiceID.VerticalCenter();*/// CKagulaCEditclass CKagulaCEdit : public CEdit{DECLARE_DYNAMIC(CKagulaCEdit)public:CKagulaCEdit();virtual ~CKagulaCEdit();protected:DECLARE_MESSAGE_MAP()private:CBrush m_brushBorder;public:void VerticalCenter();void SetBorderColor(COLORREF clr);afx_msg void OnNcPaint();};


// KagulaCEdit.cpp : implementation file//#include "stdafx.h"#include "cat8637_brand.h"#include "KagulaCEdit.h"// CKagulaCEditIMPLEMENT_DYNAMIC(CKagulaCEdit, CEdit)CKagulaCEdit::CKagulaCEdit(){m_brushBorder.CreateSolidBrush(RGB(172, 192, 211));}CKagulaCEdit::~CKagulaCEdit(){}BEGIN_MESSAGE_MAP(CKagulaCEdit, CEdit)ON_WM_NCPAINT()END_MESSAGE_MAP()// CKagulaCEdit message handlers//draw bordervoid CKagulaCEdit::OnNcPaint(){// TODO: Add your message handler code here// Do not call CEdit::OnNcPaint() for painting messagesCRect rect;GetClientRect(&rect);rect.InflateRect(0, 0, 3, 3);CDC *pDC = GetWindowDC();pDC->FrameRect(&rect, &m_brushBorder);ReleaseDC(pDC);}void CKagulaCEdit::SetBorderColor(COLORREF clr){m_brushBorder.CreateSolidBrush(clr);}//in the resource editor, set Behavior->Multiline True.void CKagulaCEdit::VerticalCenter(){CRect rc;GetClientRect(&rc);CDC* pDC = GetDC();TEXTMETRIC tm;pDC->GetTextMetrics(&tm);int nFontHeight = tm.tmHeight + tm.tmExternalLeading;int nMargin = (rc.Height() - nFontHeight) / 2;rc.DeflateRect(0, nMargin);rc.left = tm.tmAveCharWidth/2;SetRectNP(&rc);ReleaseDC(pDC);}


0 0
原创粉丝点击