怎么修改CEdit中文本的字体大小及颜色

怎么修改CEdit中文本的字体大小及颜色,第1张

在下例中,要修改颜色的文本框对象ID为:IDC_EDIT。

HBRUSH

CTestDlg::OnCtlColor(CDC*

pDC,

CWnd*

pWnd,

UINT

nCtlColor)

{

HBRUSH

hbr

=

CDialog::OnCtlColor(pDC,

pWnd,

nCtlColor)

//

TODO:

Change

any

attributes

of

the

DC

here

if(pWnd

==

&m_edit)

{

pDC->SetBkMode(TRANSPARENT)

pDC->SetTextColor(RGB(0,0,255))

HBRUSH

newHbr

=

CreateSolidBrush(GetSysColor(COLOR_BTNFACE))

//

TODO:

Return

a

different

brush

if

the

default

is

not

desired

return

newHbr

}

return

hbr

}

改变字体的大小:=========================================思路:调用控件的SetFont方法。

步骤:1:添加字体类对象

//假设你已有了名为My的对话框工程.并有一个ID=IDC_EDIT1的Edit控件.

class

CMyDlg

:

public

CDialog

{

public:

CFont

*m_Font//最好用指针,我用对象调用好像不起作用,不清楚原因!

m_Font

=

new

CFont//结束时记得要delete

m_Font

........

}

2.新建字体&设置字体myFont.CreateFont(41,0,0,0,

100,FALSE,FALSE,0,ANSI_CHARSET,

OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,

DEFAULT_QUALITY,FF_SWISS,(LPCTSTR)"Arial")//创建字体

CEdit

*m_Edit=(CEdit

*)GetDlgItem(IDC_EDITBegin)

m_Edit->SetFont(&myFont,FALSE)//设置字体

创建字体函数BOOL

CreateFont的参数说明:

=============BOOL

CreateFont(

int

nHeight,

int

nWidth,

int

nEscapement,

int

nOrientation,

int

nWeight,

BYTE

bItalic,

BYTE

bUnderline,

BYTE

cStrikeOut,

BYTE

nCharSet,

BYTE

nOutPrecision,

BYTE

nClipPrecision,

BYTE

nQuality,

BYTE

nPitchAndFamily,

LPCTSTR

lpszFacename

)

nHeight

:字体高度.

三中情况

1、>0:字体的高度值(设备坐标)2、=0:字体采用缺省值.

3、

SetFont(&fnt_static)

GetDlgItem(IDC_BUTTONGenerate)->

SetFont(&fnt_static)

其中,IDC_STATIC,IDC_BUTTON分别为静态文本和按钮的ID。

PS:以上讨论的方法只是一次修改一个控件的属性,显然这样做是不符合面向对象的思想的。

一了百了的方法:从CEdit类派生出一个可以自己处理字体、背景和字体颜色的类。具体怎样做,在研究出来后再写一篇。

按照如下的步骤生成一个例子程序。从主菜单 Dialog 中选择菜单项 File View Dialog,将会显示出一个对话框。点击按钮 Browse,并选择要查看的文本文件,当选择文件后,点击按钮 OK,便在对话框的编辑框中显示出所选择的文件的名字,点击按钮 Load,编辑框便立即显示出此文件。

用户可以标记或拷贝编辑框中的文本,试着执行一下会发现,还可以对编辑框中的文本进行编辑。点击核选框 Set Viewer Read Only 后,此功能便被删除,不过,依旧可以查看、标记或拷贝编辑框中的文本,只是不能修改而已。

实现例子程序的步骤如下:

1.在 Visual C++ 中利用 App Wizard 创建新的项目 LD92。进入 AppStudio,创建新的对话框,在对话框的顶端,添加标题为 View File 的静态文本域,在与此静态文本域相邻的右边,添加一个编辑框,然后,添加与这两个控制并排的按钮,标题为 &Browse。

2.在刚才添加的控制的下面,即对话框的中央,添加一个编辑框。从对话框中删除按钮 OK,并把按钮 Cancel 的标题设定为 Close,把按钮 Close 移到对话框底部的右下角。然后,设置多行编辑域的风格为:Multiline、Horizontal scroll、Vertial scroll、No hide selection 以及 Border。在编辑框的下面添加一个核选框(Check Box),在对话框的左下角添加一个按钮,设置其标题为 Load。

3.进入 ClassWizard,为对话框生成新的对话框类。把此类命名为 CFileViewDlg,接受该类的所有其它缺省值并保存此类。

4.进入 ClassWizard,从下拉列表中选择对象 CFileViewDlg,从对象列表中选择对象 IDC_BUTTON1,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新函数 OnBrowse。在 CFileViewDlg 的方法 OnBrowse 中添加下面的代码。

void CFileViewDlg::OnBrowse()

{

CFileDialog dlg(TRUE,"*.txt","*.txt")

if(dlg.DoModal()==IDOK)

{

CEdit * edit=(CEdit *)GetDlgItem(IDC_EDIT1)

edit->SetWindowText(dlg.GetPathName())

}

}

5.从对象列表中选择对象 IDC_BUTTON2,从消息列表中选择消息 BN_CLICKED,点击按钮 Add Function 添加新函数 OnLoad。在 CFileViewDlg 的方法 OnLoad 中添加下面的代码。

const MAX_BUFFER_LEN=256

void CFileViewDlg::OnLoad()

{

char fileName[_MAX_PATH]

char buf[MAX_BUFFER_LEN+1]

CEdit * edit=(CEdit *)GetDlgItem(IDC_EDIT2)

GetDlgItem(IDC_EDIT1)->GetWindowText(fileName,_MAX_PATH)

FILE * fp=fopen(fileName,"r")

if(fp==(FILE *)NULL)

{

MessageBox("Unable to open file","Error",MB_OK)

return

}

edit->SetWindowText("")

while(!feof(fp))

{

if(fgets(buf,MAX_BUFFER_LEN,fp)==NULL)

break

if(strlen(buf))

buf[strlen(buf)-1]=0

strcat(buf,"\r\n")

edit->SetFocus()

int idx=edit->GetWindowTextLength()

edit->SendMessage(EM_SETSEL,idx,idx)

edit->SendMessage(EM_REPLACESEL,0,(LPARAM)(LPCSTR)buf)

}

edit->SetSel(0)

fclose(fp)

}

6.从对象列表中选择对象 IDC_CHECK1,从消息列表中选择消息 COMMAND,点击按钮 Add Function 添加新函数 OnSetReadOnly。在 CFileViewDlg 的方法 OnSetReadOnly 中添加下面的代码。

void CFileViewDlg::OnSetReadOnly()

{

CButton * b=(CButton *)GetDlgItem(IDC_CHECK1)

GetDlgItem(IDC_EDIT2)->SendMessage(EM_SETREADONLY,

b->GetCheck(),0)

}

7.进入 AppStudio,添加标题为 Dialog 的主菜单,在此菜单上,添加标题为 File View Dialog、标识符为 ID_FILE_VIEW_DIALOG 的新的下拉菜单项。保存此菜单,退出 AppStudio。

8.在 ClassWizard 中,从对象列表中选择对象 ID_FILE_VIEW_DIALOG,从消息列表中选择消息 COMMAND,点击按钮 Add Function 添加新函数 。在此方法中添加下面的代码。

void CMainFrame::OnFileViewDlg()

{

CFileViewDlg dlg

dlg.DoModal()

}

9.在文件 MainFrm 的顶部添加下列代码:

#include "FileViewDlg.h"

10.编译并运行此例子程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11300391.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存