jujiawu1024 2016-02-01 15:03 采纳率: 100%
浏览 1384
已采纳

VISUAL C++ 6。0变幻字体

在网上找到了这么一段代码,但是怎么用在对话框中?

//-----------------以下为MyEdit.h---------------------------------------------
#pragma once
// CMyEdit
class CMyEdit : public CEdit
{
DECLARE_DYNAMIC(CMyEdit)
public:
CMyEdit();
virtual ~CMyEdit();
protected:
DECLARE_MESSAGE_MAP()
public:
void SetBackColor(COLORREF rgb);//设置文本框背景色
void SetTextColor(COLORREF rgb);//设置文本框的字体颜色
void SetTextFont(const LOGFONT &lf);//设置字体
COLORREF GetBackColor(void){return m_crBackGnd;}//获取当前背景色
COLORREF GetTextColor(void){return m_crText;}//获取当前文本色
BOOL GetTextFont(LOGFONT &lf);//获取当前字体
private:
COLORREF m_crText;//字体的颜色
COLORREF m_crBackGnd;//字体的背景颜色
CFont m_font;//字体
CBrush m_brBackGnd;//整个文本区的画刷
//控件自己的消息反射函数CtlColor,绘制控件之前调用
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
};
//---------------以下为MyEdit.cpp-------------------------------------------
#include "stdafx.h"
#include "MyEdit.h"
// CMyEdit
IMPLEMENT_DYNAMIC(CMyEdit, CEdit)
CMyEdit::CMyEdit()
{
//初始化为系统字体和窗口颜色
m_crText = GetSysColor(COLOR_WINDOWTEXT);
m_crBackGnd = GetSysColor(COLOR_WINDOW);
m_font.CreatePointFont(90,"宋体");
m_brBackGnd.CreateSolidBrush(GetSysColor(COLOR_WINDOW));
}
CMyEdit::~CMyEdit()
{
}

BEGIN_MESSAGE_MAP(CMyEdit, CEdit)
//WM_CTLCOLOR的消息反射
ON_WM_CTLCOLOR_REFLECT()
END_MESSAGE_MAP()
// CMyEdit 消息处理程序
void CMyEdit::SetBackColor(COLORREF rgb)
{
//设置文字背景颜色
m_crBackGnd = rgb;
//释放旧的画刷
if (m_brBackGnd.GetSafeHandle())
m_brBackGnd.DeleteObject();
//使用文字背景颜色创建新的画刷,使得文字框背景和文字背景一致
m_brBackGnd.CreateSolidBrush(rgb);
//redraw
Invalidate(TRUE);
}
void CMyEdit::SetTextColor(COLORREF rgb)
{
//设置文字颜色
m_crText = rgb;
//redraw
Invalidate(TRUE);
}
void CMyEdit::SetTextFont(const LOGFONT &lf)
{
//创建新的字体,并设置为CEDIT的字体
if(m_font.GetSafeHandle())
{
m_font.DeleteObject();
}
m_font.CreateFontIndirectA(&lf);
CEdit::SetFont(&m_font);
//redraw
Invalidate(TRUE);
}
BOOL CMyEdit::GetTextFont(LOGFONT &lf)
{
if(m_font.GetLogFont(&lf)!=0)
{ return TRUE; }
return FALSE;
}
HBRUSH CMyEdit::CtlColor(CDC* pDC, UINT nCtlColor)
{
//刷新前更改文本颜色
pDC->SetTextColor(m_crText);
//刷新前更改文本背景
pDC->SetBkColor(m_crBackGnd);
//返回画刷,用来绘制整个控件背景
return m_brBackGnd;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-02-01 15:27
    关注

    class CMyEdit : public CEdit
    这是派生了一个CMyEdit

    加入这个文件作为源代码

    找到你的对话框,把你的文本框变量类型由CEdit全部修改为CMyEdit

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀