• VC++学习(5)——文本编程,插入符的初始化,图形插入符;文字始终在窗口;字符输入功能,回车换行,删除,左键定位;字体修改,字体平滑变色


    在这里插入图片描述

    引出

    VC++学习(5)——文本编程,插入符的初始化,图形插入符;文字始终在窗口;字符输入功能,回车换行,删除,左键定位;字体修改,字体平滑变色


    第五讲 文本编程

    新建项目

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    输入线的初始化

    输入的竖直线,一闪一闪的输入

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    增加Windows消息处理

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    根据字体大小定义插入符大小

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    int CTextView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    {
    	if (CView::OnCreate(lpCreateStruct) == -1)
    		return -1;
    	
    	// TODO: Add your specialized creation code here
    
    	// 确定符号大小
    	CClientDC dc(this); // 当前设备描述表describe
    	TEXTMETRIC tm;
    	dc.GetTextMetrics(&tm); // 取地址符
    
    	// 创建一个插入符号
    	CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);
    	ShowCaret(); // 显示出来
    
    	return 0;
    }
    

    创建图形插入符

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    文字始终保存在窗口中

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    CString类

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    /
    // CTextView drawing
    
    void CTextView::OnDraw(CDC* pDC)
    {
    	CTextDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    	// TODO: add draw code for native data here
    
    	// CString
    	CString str("pet");
    	pDC->TextOut(50,50,str);
    
    }
    

    通过字符串资源

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    /
    // CTextView drawing
    
    void CTextView::OnDraw(CDC* pDC)
    {
    	CTextDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
    	// TODO: add draw code for native data here
    
    	// CString
    	CString str("pet");
    	pDC->TextOut(50,50,str);
    
    	// 使用字符串资源
    	str.LoadString(IDS_PET);
    	pDC->TextOut(0,200,str);
    
    
    }
    

    路径层

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    字符输入的功能

    键盘输入消息

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    鼠标左键消息

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    void CTextView::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    	// 移动插入符到这里
    	SetCaretPos(point);
    	m_strLine.Empty(); // 将cstring中保存的内容情空
    	CView::OnLButtonDown(nFlags, point);
    }
    
    
    保存点击位置的坐标

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    输入回车键的处理

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    删除文字的实现

    将文本的颜色设置成和背景色一样

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    字符输入功能代码

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    1.鼠标左键定位插入字符位置;

    2.特殊字符的处理,回车键,删除键;

    3.光标随着输入的字符移动;

    void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    	// 字体的高度
    	CClientDC dc(this);
    	TEXTMETRIC tm;
    	dc.GetTextMetrics(&tm);
    
    
    	printf("%u\n", nChar);
    
    	if(0x0d==nChar) // 输入的是回车
    	{
    		m_strLine.Empty(); // 清空
    		m_ptOrig.y += tm.tmHeight; // 到下一行
    
    	}else if(0x08==nChar) // 输入的是删除
    	{
    		// 获取背景色,文本颜色设置成背景色
    		COLORREF clr = dc.SetTextColor(dc.GetBkColor());
    		// 然后输出
    		dc.TextOut(m_ptOrig.x,m_ptOrig.y,m_strLine);
    
    		// 减少字符,再次输出
    		m_strLine = m_strLine.Left(m_strLine.GetLength()-1);
    		dc.SetTextColor(clr); 
    
    	}else // 输入其他
    	{
    		m_strLine += nChar;
    
    	}
    
    	// 插入符随着输入移动
    	CSize sz = dc.GetTextExtent(m_strLine);
    	
    	CPoint pt;
    	pt.x = m_ptOrig.x + sz.cx;
    	pt.y = m_ptOrig.y;
    	SetCaretPos(pt);
    
    	dc.TextOut(m_ptOrig.x,m_ptOrig.y,m_strLine);
    	CView::OnChar(nChar, nRepCnt, nFlags);
    }
    
    void CTextView::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    	// 移动插入符到这里
    	SetCaretPos(point);
    	m_strLine.Empty(); // 将cstring中保存的内容情空
    	m_ptOrig = point;  // 保存坐标值
    	CView::OnLButtonDown(nFlags, point);
    }
    

    字体的修改

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    vc++6.0中的字体

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    Windows系统中的字体

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    	// 定义字体
    	CFont font;
    	font.CreatePointFont(300, "华文行楷", NULL);
    	CFont *pOldFont = dc.SelectObject(&font);
    

    模拟卡拉ok变色字体

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    void CTextView::OnTimer(UINT nIDEvent) 
    {
    	// TODO: Add your message handler code here and/or call default
    	
    	// 显示大小按5个像素增加
    	m_nWidth += 5;
    
    	CClientDC dc(this);
    
    	// 字体的高度
    	TEXTMETRIC tm;
    	dc.GetTextMetrics(&tm);
    
    	CRect rect;
    	rect.left = 0;
    	rect.top = 200;
    	rect.right = m_nWidth;
    	rect.bottom = rect.top + tm.tmHeight;
    
    	// 改变文本颜色
    	dc.SetTextColor(RGB(255,0,0));
    	CString str;
    	str.LoadString(IDS_PET);
    	dc.DrawText(str,rect,DT_LEFT);
    
    
    	rect.top=150;
    	rect.bottom = rect.top + tm.tmHeight;
    	dc.DrawText(str,rect,DT_RIGHT);
    
    	// 判断一下,走到哪里了
    	CSize sz = dc.GetTextExtent(str);
    	if(m_nWidth>sz.cx)
    	{
    		m_nWidth = 0;
    		dc.SetTextColor(RGB(0,255,0));
    		dc.TextOut(0,200,str);
    	}
    
    	CView::OnTimer(nIDEvent);
    }
    

    总结

    VC++学习(5)——文本编程,插入符的初始化,图形插入符;文字始终在窗口;字符输入功能,回车换行,删除,左键定位;字体修改,字体平滑变色


    其他

    第四讲 简单绘图

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    加入点击弹窗

    框架类CMainFrame中加入不生效,需要在CDrawView中加入

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    编写代码,加入一个消息框

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    在头文件中,自动加入了注释宏

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    源文件中加入了宏,加入了消息响应函数的宏

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    划线的实现1

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    鼠标的抬起与放下的事件定义

    /
    // CDrawView message handlers
    
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	// 点击的时候,拿到了点
    	m_ptOrigin=point; // 获取起点
    	// MessageBox("view click");
    	CView::OnLButtonDown(nFlags, point);
    }
    
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	HDC hdc; 
    	hdc=::GetDC(m_hWnd);
    	// 起点
    	MoveToEx(hdc,m_ptOrigin.x,m_ptOrigin.y,NULL);
    	// 划线
    	LineTo(hdc,point.x,point.y);
    	// 释放dc
    	::ReleaseDC(m_hWnd,hdc);
    	CView::OnLButtonUp(nFlags, point);
    }
    

    划线实现2

    用cdc实现

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    划线的实现3,CClient

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    GetParent()

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    划线的实现4

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    	CWindowDC dc(GetParent());
    	dc.MoveTo(m_ptOrigin);
    	dc.LineTo(point);
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    不同的颜色画笔

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    	// 创建画笔
    	CPen pen(PS_DOT,1,RGB(255,0,0));
    	CClientDC dc(this);
    	CPen *pOldPen=dc.SelectObject(&pen);
    	dc.MoveTo(m_ptOrigin);
    	dc.LineTo(point);
    	dc.SelectObject(pOldPen); // 先前的画笔选择回设备描述表
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    不同颜色画刷

    	// 创建画刷
    	CBrush brush(RGB(255,0,0)); 
    	CClientDC dc(this);
    	dc.FillRect(CRect(m_ptOrigin,point),&brush);
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    位图

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    	CBitmap bitmap;
    	bitmap.LoadBitmap(IDB_BITMAP1);
    	CBrush brush(&bitmap);
    	CClientDC dc(this);
    	dc.FillRect(CRect(m_ptOrigin,point),&brush);
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    空的矩形

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    画笔实现

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    构造函数初始化为false

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    鼠标按下时,设置为真,True

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    鼠标抬起,设置为false

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    画出连续的线条

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    void CDrawView::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    	// 判断鼠标状态
    
    	CClientDC dc(this);
    	if(m_bDraw==TRUE)
    	{
    		// 开始划线
    		dc.MoveTo(m_ptOrigin);
    		dc.LineTo(point);
    		m_ptOrigin=point; // 终点设置为起点
    	}
    	
    	CView::OnMouseMove(nFlags, point);
    }
    

    换个红色的画笔

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    void CDrawView::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    
    
    	CClientDC dc(this);
    	// 换个颜色
    	CPen pen(PS_SOLID,1,RGB(255,0,0));
    	CPen *pOldPen=dc.SelectObject(&pen); // 之前的画笔
    
    	// 判断鼠标状态
    	if(m_bDraw==TRUE)
    	{
    		// 开始划线
    		dc.MoveTo(m_ptOrigin);
    		dc.LineTo(point);
    		m_ptOrigin=point; // 终点设置为起点
    	}
    	
    	dc.SelectObject(pOldPen); //设置回之前的画笔
    	CView::OnMouseMove(nFlags, point);
    }
    

    画个扇形

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    先画出一个点,再到另一个点画出一条线,终点变化,重新划线

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    画出边线

    void CDrawView::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    
    
    
    	CClientDC dc(this);
    	// 换个颜色
    	CPen pen(PS_SOLID,1,RGB(255,0,0));
    	CPen *pOldPen=dc.SelectObject(&pen); // 之前的画笔
    
    	// 判断鼠标状态
    	if(m_bDraw==TRUE)
    	{
    		// 开始划线
    		dc.MoveTo(m_ptOrigin);
    		dc.LineTo(m_ptOld); // 画出一个点
    		// dc.MoveTo(m_ptOrigin); // 线性的扇形
    		dc.MoveTo(m_ptOld); // 画出边线
    		dc.LineTo(point);
    		m_ptOld=point;
    	}
    	dc.SelectObject(pOldPen); //设置回之前的画笔
    	CView::OnMouseMove(nFlags, point);
    }
    

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 相关阅读:
    亚马逊测评自养号策略:手机与PC结合的重要性
    2022年(第二届)信息技术服务业应用技能大赛网络与信息安全管理赛项的通知
    前端架构学习,一些知识点记录(一)
    掌握这些技巧,轻松批量压缩视频大小
    【ECMAScript6】其它新增接口特性
    数字藏品值得探究,依然是广阔的大海播
    Asp .Net Web Forms 系列:配置图片防盗链的几种方法
    JavaScript 基础知识
    【IOS实用玩机技巧】爱思助手 IPA 签名功能常见问题汇总
    【笔试题】【day22】
  • 原文地址:https://blog.csdn.net/Pireley/article/details/139865513