孙鑫vc++学习(vs2008)笔记之第五课文字处理程序
2012-02-14 22:33
483 查看
1.字体的信息:字体的高度 = 升序的高度 + 降序的高度
View Code
View Code
void CTestView::OnDraw(CDC* pDC) { CTestDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CString str(_T("河南科技大学")); pDC->TextOut(50,50,str); CSize sz = pDC->GetTextExtent(str); //返回字符串的尺寸 str.LoadString(IDS_HANFEI); pDC->TextOut(0,200,str); pDC->BeginPath(); //开始路径层 pDC->Rectangle(50,50,50+sz.cx,50+sz.cy); pDC->EndPath(); pDC->SelectClipPath(RGN_AND); //路径层模式选择 for (int i = 0;i < 300;i += 10) { pDC->MoveTo(0,i); pDC->LineTo(300,i); pDC->MoveTo(i,0); pDC->LineTo(i,300); } } int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 CClientDC dc(this); TEXTMETRIC tm; // 系统字符量度 dc.GetTextMetrics(&tm); // 获取当前字符尺寸 //CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight); // 插字符创建默认隐藏 //CBitmap bitmap; //局部变量不显示,在函数结束的时候析构 bitmap.LoadBitmap(IDB_BITMAP1); CreateCaret(&bitmap); //创建位图插入符 ShowCaret(); // 显示插字符 SetTimer(1,100,NULL); return 0; } void CTestView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 在此添加消息处理程序代码和/或调用默认值 //回车需要处理 CClientDC dc(this); CFont font; font.CreatePointFont(300,_T("华文行楷"),NULL); //字体初始化 CFont *pOldfont = dc.SelectObject(&font); 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.Insert(m_strLine.GetLength(),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); //还原字体 CView::OnChar(nChar, nRepCnt, nFlags); } void CTestView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CView::OnLButtonDown(nFlags, point); m_strLine.Empty(); //光标换位置,字符串清空 m_ptOrigin = point; SetCaretPos(point); //定位新光标位置 } void CTestView::OnTimer(UINT_PTR nIDEvent) //nIDEvent定时器标识 { // TODO: 在此添加消息处理程序代码和/或调用默认值 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_HANFEI); 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); }
相关文章推荐
- 学习笔记:使用HTTP处理程序监视指定目录请求
- 异常处理程序学习笔记
- asp.net实现页面的一般处理程序(CGI)学习笔记
- 黑马程序员之asp.net学习笔记:一般处理程序(*.ashx)小结
- 孙鑫vc++学习(vs2008)笔记之第三课MFC内部运行原理
- c++学习笔记序列之经典处理程序汇总(不断更新中)
- ASP.NET 3.5核心编程学习笔记(44):HTTP处理程序的编写之从数据库加载图像
- 孙鑫老师教学视频学习笔记――文字处理
- 孙鑫VC++视频学习笔记之1: Windows程序内部运行机制
- Lua学习笔记4. coroutine协同程序和文件I/O、错误处理
- Silverlight学习笔记(四)-----【转】Silverlight 线程处理概念和调度程序
- ASP.NET 3.5核心编程学习笔记(41):HTTP处理程序与HTTP模块
- ASP.NET 3.5核心编程学习笔记(43):HTTP处理程序的编写之图片查看器
- [Python学习笔记][第八章Python异常处理结构与程序调试]
- MFC 学习笔记 1 程序入口主函数的处理
- [Python学习笔记][第八章Python异常处理结构与程序调试]
- 孙鑫vc++学习(vs2008)笔记之第一课Windows程序运行原理
- ASP.NET 3.5核心编程学习笔记(42):HTTP处理程序的编写之建立数据报表
- 学习笔记---httpHandler处理程序
- 孙鑫VC++视频学习笔记之4:文本编辑和字处理软件