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.编译并运行此例子程序。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)