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条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?