⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch11demo5view.cpp

📁 零基础学Visual.C....教案PPT.随书光盘-452M.zip
💻 CPP
字号:
// Ch11Demo5View.cpp : implementation of the CCh11Demo5View class
//

#include "stdafx.h"
#include "Ch11Demo5.h"

#include "Ch11Demo5Doc.h"
#include "Ch11Demo5View.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCh11Demo5View

static const UINT MsgFindReplace=::RegisterWindowMessage(FINDMSGSTRING);

IMPLEMENT_DYNCREATE(CCh11Demo5View, CView)

BEGIN_MESSAGE_MAP(CCh11Demo5View, CView)
	//{{AFX_MSG_MAP(CCh11Demo5View)
	ON_COMMAND(ID_FONT, OnFont)
	ON_COMMAND(ID_BACKCOLOR, OnBackcolor)
	ON_COMMAND(ID_TEXTCOLOR, OnTextcolor)
	ON_COMMAND(ID_FIND, OnFind)
	ON_COMMAND(ID_REPLACE, OnReplace)
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

	ON_REGISTERED_MESSAGE(MsgFindReplace, OnFindReplace)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCh11Demo5View construction/destruction

CCh11Demo5View::CCh11Demo5View()
{
	// TODO: add construction code here
	//缺省前景色为黑色,背景色为白色,字体为系统字体
	frontColor=0;
	backColor=0xFFFFFF;
	fnt.CreateStockObject(SYSTEM_FONT);
	str="在使用Windows的过程中,用户经常会遇到一些常用的有特定用途的对话框。\n例如,当执行“File”→“Open”菜单命令,会弹出一个文件选择的对话框,用户可以在其中选择想要打开的文件。\n由于其使用频率很高,因此Windows系统本身提供了对该对话框的支持,用户不必自己设计文件选择对话框。";
	pFindReplaceDlg=NULL; 
	pos=0;
}

CCh11Demo5View::~CCh11Demo5View()
{
}

BOOL CCh11Demo5View::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CCh11Demo5View drawing

void CCh11Demo5View::OnDraw(CDC* pDC)
{
	CCh11Demo5Doc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	CFont *pOldFont;
	pOldFont=pDC->SelectObject(&fnt);//设置字体
	pDC->SetTextColor(frontColor);//设置文本颜色
	pDC->SetBkColor(backColor);//设置背景色
	CRect textrect(40,50,540,500);			//文本输出矩形区域
	pDC->DrawText(str,&textrect,DT_LEFT|DT_WORDBREAK);//文本输出
	pDC->SelectObject(pOldFont);//恢复默认字体
}

/////////////////////////////////////////////////////////////////////////////
// CCh11Demo5View printing

BOOL CCh11Demo5View::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CCh11Demo5View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CCh11Demo5View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CCh11Demo5View diagnostics

#ifdef _DEBUG
void CCh11Demo5View::AssertValid() const
{
	CView::AssertValid();
}

void CCh11Demo5View::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CCh11Demo5Doc* CCh11Demo5View::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CCh11Demo5Doc)));
	return (CCh11Demo5Doc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CCh11Demo5View message handlers

void CCh11Demo5View::OnFont() //字体
{
	// TODO: Add your command handler code here
	LOGFONT ft;
	fnt.GetLogFont(&ft);//获取当前使用字体结构
	CFontDialog dlg(&ft, CF_EFFECTS | CF_SCREENFONTS,0,this);
	if(dlg.DoModal()==IDOK)//弹出字体对话框
	{
		LOGFONT LF;
		//获取所选字体的信息
		dlg.GetCurrentFont(&LF);
		frontColor=dlg.GetColor();
		//建立新的字体
		fnt.DeleteObject();
		fnt.CreateFontIndirect(&LF);
		Invalidate();//重绘视图
	}
}

void CCh11Demo5View::OnBackcolor() //背景颜色
{
	// TODO: Add your command handler code here
	CColorDialog dlg(backColor,CC_FULLOPEN);//构造颜色对话框
	if(dlg.DoModal()==IDOK)
	{
		backColor=dlg.GetColor();//获取对话框中设定的颜色
	}
	Invalidate();//重绘视图
	
}

void CCh11Demo5View::OnTextcolor() //文本颜色
{
	// TODO: Add your command handler code here
	CColorDialog dlg(frontColor,CC_FULLOPEN);//构造颜色对话框
	if(dlg.DoModal()==IDOK)
	{
		frontColor=dlg.GetColor();//获取对话框中设定的颜色
	}
	Invalidate();	//重绘视图	
}



void CCh11Demo5View::OnFind() //查找
{
	// TODO: Add your command handler code here
	pos=0;	
	if(pFindReplaceDlg)//判断是否已存在一个对话框
	{
		if(bFindOnly)//若Find对话框已打开,则使之成为活动窗口
		{	
			pFindReplaceDlg->SetActiveWindow();
			return;
		}
		else
		//关闭替换对话框
		pFindReplaceDlg->SendMessage(WM_CLOSE);
	}
	bFindOnly=TRUE;
	//创建查找对话框
	pFindReplaceDlg=new CFindReplaceDialog;
	pFindReplaceDlg->Create(TRUE,NULL,NULL,FR_DOWN,this);
}


void CCh11Demo5View::OnReplace() //替换
{
	// TODO: Add your command handler code here		
	pos=0;
	if(pFindReplaceDlg)//判断是否已存在一个对话框
	{
		if(!bFindOnly)
		{		
			pFindReplaceDlg->SetActiveWindow();//若替换对话框已打开,则使之成为活动窗口
			return;
		}
		else
		pFindReplaceDlg->SendMessage(WM_CLOSE);//关闭查找对话框
	}
	bFindOnly=FALSE;
	//创建替换对话框
	pFindReplaceDlg=new CFindReplaceDialog;
	pFindReplaceDlg->Create(FALSE,NULL,NULL,FR_DOWN,this);
	
}

LRESULT CCh11Demo5View::OnFindReplace(WPARAM, LPARAM lParam)

{

	//判断对话框是否被关闭
	if(pFindReplaceDlg->IsTerminating())
	pFindReplaceDlg=NULL;
	//获取当前查找/替换对话框的指针
	CFindReplaceDialog* pDlg = CFindReplaceDialog::GetNotifier(lParam);
	CString m_FindString = pDlg->GetFindString(); 						//要查找的字符串
	CString m_ReplaceString = pDlg->GetReplaceString(); 					//要替换的字符串
	CString strpos;
	if( pDlg->FindNext() ) 							//按下了"查找"按钮,查找下一个
	{ 
		pos=str.Find(m_FindString,pos);
		if(pos==-1)//未找到查找的字符
		{
			AfxMessageBox("搜索完毕,没有找到指定字符串");
			pos=0;
		}
		else
		{
			strpos.Format("查找的字符串的位置为%d",pos);
			pos++;
			AfxMessageBox(strpos);//找到字符在原串的位置
		}
	}

	if( pDlg->ReplaceAll() ) 									//按下了"全部替换"按钮
	{ 
		str.Replace(m_FindString,m_ReplaceString);//替换字符串
		Invalidate();//更新视图
	} 
	return 0;

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -