`

VC视频教程笔记(第5课)

    博客分类:
  • C++
阅读更多
http://www.sunxin.org/forum/thread/210.html?page=1
作者:虎非龙

第5课
1.CWnd::CreateSolidCaret创建插入符,ShowCaret()显示插入符。GetTextMetrics(),获得当前字体的一些信息。CWnd::CreateCaret()创建图象插入符
bitmap.LoadBitmap(IDB_BITMAP1);//此处的bitmap为成员变量!!!
CreateCaret(&bitmap);
ShowCaret();
TEXTMETRIC tm;//字体结构体
dc.GetTextMetrics(&tm);//
m_ptOrigin.y+=tm.tmHeight;//获得字体高度。
2.VC中CString::LoadString(ID号),比较方便。
3.路径层的概念:有两种方法创建路径层:
  (1)
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_DIFF);
   (2)
        CSize sz=pDC->GetTextExtent(str);
        CRgn rn;
        rn.CreateRectRgn(0,50,sz.cx,sz.cy);
        pDC->SelectClipRgn(&rn,RGN_DIFF);
路径层有什么作用?可以保护我们先前的文本或者图像不被后来画的覆盖。
4.在View上输入文字的步骤。
CFont font;//创建字体对象
font.CreatePointFont(300,"华文行楷",NULL);//设置
CFont *pOldFont=dc.SelectObject(&font);//将字体选择到DC中
TEXTMETRIC tm;//创建字体信息对象
dc.GetTextMetrics(&tm);//获得当前字体信息
if(0x0d==nChar)//处理回车键
{
  m_strLine.Empty();
  m_ptOrigin.y+=tm.tmHeight;
}
else if(0x08==nChar)//处理退格键
{
  COLORREF clr=dc.SetTextColor(dc.GetBkColor());
  dc.TextOut(m_ptOrigin.x,m_ptOrigin.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_ptOrigin.x+sz.cx;
pt.y=m_ptOrigin.y; SetCaretPos(pt);
dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);//输出字体 dc.SelectObject(pOldFont);//将原先的字体选择回去。
5.模拟卡啦OK变色的步骤。
   (1)设置定时器
   (2)在定时器中加入如下代码
//DEL  m_nWidth+=5;//此为view的成员变量,初始值为0
//DEL
//DEL
//DEL  CClientDC dc(this);
//DEL  TEXTMETRIC tm;
//DEL  dc.GetTextMetrics(&tm);
//DEL  CRect rect;
//DEL  rect.left=0;
//DEL  rect.top=200;
//DEL  rect.right=m_nWidth;
//DEL  rect.bottom=rect.top+tm.tmHeight;//此长方形的长度随着定时器的触发,逐渐增大
//DEL
//DEL  dc.SetTextColor(RGB(255,0,0));
//DEL  CString str;
//DEL  str.LoadString(IDS_WEIXIN);
//DEL  dc.DrawText(str,rect,DT_LEFT);此函数的作用是将字符串输出到长方形中,但如果字符串的长度超过长方形的长度,多余的字符将被截断
//DEL
//DEL  rect.top=150;
//DEL  rect.bottom=rect.top+tm.tmHeight;
//DEL  dc.DrawText(str,rect,DT_RIGHT);
//DEL
//DEL  CSize sz=dc.GetTextExtent(str);获得字符串的长度
//DEL  if(m_nWidth>sz.cx)当长方形的长度大于字符串的长度后,将其重新归0
//DEL  {
//DEL   m_nWidth=0;
//DEL   dc.SetTextColor(RGB(0,255,0));
//DEL   dc.TextOut(0,200,str);
//DEL  }
//DEL
//DEL  CView::OnTimer(nIDEvent);
6.SetTimer也可以用回调函数来操作,但并不方便。以下是步骤
  (1) 在View的OnCreate消息响应函数中:SetTimer(1,1000,Timer2Proc);
  (2) 回调函数的实现:
void CALLBACK EXPORT Timer2Proc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT nIDEvent,   // timer identification
   DWORD dwTime    // system time
)
{
//  MessageBox((((CMainFrame *)AfxGetMainWnd())->m_hWnd),"ddfaf","weixin",0);
;
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;//获得MainFrame的指针
CTextView *pView=(CTextView *)pMain->GetActiveView();//获得view的指针
CClientDC dc(pView);//构造DC
  dc.TextOut(333,222,"hello world");}//我们可以看出,使用回调函数时要获得窗口或者APP的指针,给我们的操作带来麻烦。并不方便。
分享到:
评论

相关推荐

    孙鑫VC视频教程笔记[1].doc

    【孙鑫VC视频教程笔记】是一份记录了学习VC++编程知识的文档,主要涵盖了MFC框架和SDK编程的基础概念及技巧。以下是其中涉及到的重要知识点的详细解释: 1. **StdAfx.h**:在MFC项目中,StdAfx.h文件包含了基本的...

    VC网络验证编写开发视频教程【20课】

    资源名称:VC网络验证编写开发视频教程【20课】资源目录:【】编程视频教程网络验证编写20课第一课【】编程视频教程网络验证编写20课第七课【】编程视频教程网络验证编写20课第三课[51ZSK.COM]【】编程视频教程网络...

    C++视频教程-VC深入详解自学笔记(完全免费

    《C++视频教程-VC深入详解自学笔记》是一份全面且免费的学习资源,旨在帮助初学者和有一定基础的开发者深入理解C++编程语言,特别是通过Visual C++ (VC++)这一开发环境进行实践。教程由孙鑫整理,涵盖了从基础到高级...

    VC.rar_VC 视频教程

    这个"VC.rar"压缩包中的"VC视频教程.exe"可能是一个交互式的视频教程,旨在帮助学习者掌握VC++的基本概念和高级特性。通过观看这些视频,无论是初学者还是有经验的开发者,都可以期望获得以下方面的知识: 1. **...

    孙鑫老师vc视频教程.txt

    孙鑫老师vc视频教程

    从零开始学VC系列教程_第五章程

    【从零开始学VC系列教程_第五章程】是面向初学者的一份详细教程,旨在帮助没有编程基础或者对Microsoft Visual C++(简称VC)不熟悉的人掌握这一强大的C++开发环境。本章节将深入讲解VC的基本概念、环境搭建以及如何...

    VC就业培训宝典之MFC视频教程

    资源名称:VC 就业培训宝典之MFC视频教程资源目录:【】吕鑫:MFC视频教程第一章(1-1)【】吕鑫:MFC视频教程第一章(1-2)【】吕鑫:MFC视频教程第七章(7-1)【】吕鑫:MFC视频教程第七章(7-2)【】吕鑫:MFC...

    VC2008视频教程

    【VC2008视频教程】是一套专为初学者设计的编程教学资源,旨在帮助对Visual C++ 2008(也称VC++ 2008或MSVC9)感兴趣的用户快速掌握该开发环境和C++编程语言的基础知识。在本教程中,你将学习到如何安装Visual ...

    VC#学习笔记仅供参考

    【VC#学习笔记仅供参考】 本笔记主要涵盖了ASP.NET应用程序的开发知识,特别是针对网页设计和数据库访问技术。在学习过程中,我们将逐步了解如何构建信息浏览页面,并深入探讨各种Web服务器控件的使用。 首先,...

    VC自觉笔记-1

    VC6.0的学习笔记。 正在完美中。。。。。

    VC6.0入门视频教程及源码

    适合VC6初学者,第一步观看视频,第二步运行配套源程序学习。课程目录如下: 01基于控制台的Win32程序;02 基于对话框的MFC工程;03 基于单文档的MFC工程;04 Windows基本控件编程;05工具栏和菜单的编程;06 Win32 ...

    VC入门教程 7天学会VC

    《VC入门教程 7天学会VC》是一份专为初学者设计的编程教育资源,由知名讲师张孝祥的课程笔记整理而成。这份教程主要聚焦于Visual C++(简称VC)的使用,帮助学习者在短时间内掌握C++编程基础以及如何在VC环境下进行...

    如何使用vc打造局域网聊天室第5课

    完整讲述如何使用vc打造局域网聊天室,共10课,每课都是一个视频(动画教程,时长半个小时到一个小时,画面清晰,解压后大小100多 M),节目如下: 第一课、编程环境及准备知识 第二课、聊天室界面的制作及初始...

    使用VC进行VFW视频捕获笔记

    本文是关于使用Microsoft Visual C++ (VC++) 和Video for Windows (VFW) API进行视频捕获的详细笔记。VFW是Windows操作系统提供的一种视频处理框架,它简化了视频捕获、处理和播放的过程。下面将深入探讨各个关键...

    VC串口通信modbus协议源代码视频教程

    VC串口通信modbus协议源代码工程视频教程工程建立详细步骤

    vc6.0学习笔记

    **VC6.0学习笔记** Microsoft Visual C++ 6.0(简称VC6.0)是微软公司推出的一款经典且广泛使用的C++集成开发环境,它在20世纪90年代末期至21世纪初期占据了重要的地位。这份学习笔记旨在帮助初学者了解并掌握VC6.0...

    如何使用vc打造局域网聊天室第1课

    完整讲述了如何使用vc打造局域网聊天室,一共10课,每课都是一个视频教程(动画教程,时长半个小时到一个小时,画面清晰,解压后大小100多M),节目如下: 第一课、编程环境及准备知识 第二课、聊天室界面的...

    vc学习教程-界面设计

    vc学习教程-界面设计,方便好用,又实惠

    vc深入详解 笔记

    **VC深入详解笔记** 本文将基于孙鑫的《VC深入详解》一书,结合作者的个人笔记,深入探讨Microsoft Visual C++(简称VC)的各个方面,帮助读者掌握关键概念和技术,提升编程技能。《VC深入详解》是学习VC++的重要...

    vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟19

    vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟vc教程杨章伟v

Global site tag (gtag.js) - Google Analytics