VC++孙鑫视频笔记(五)

    掌握CDC的文字处理程序的编写,如何产生自定义字体和自定义插入符,熟悉对CString类的使用。通过对卡拉OK程序的编写,讲解定时器的使用和DrawText函数的巧妙运用。讲解如何使用CDC的裁减功能。

    1>创建一个一般的插入符 CreateSoildCaret(),ShowCaret(),获取文本信息GetTextMetrics();

    2>创建一个图形插入符CreateCaret(),注意:当资源是局部变量的时,程序离开这个局部后,资源变量会调用其析构函数将资源       销毁。

    3>输出文字:

        OnDraw()and OnPaint(),http://blog.vckbase.com/arong/archive/2005/02/28/3325.html

        CString 对字符串的操作;

        CDC中TextOut()输出文本,在StringTable包下定义字符串资源

    4>路径程,CDC下的几个类成员变量:GetTextExtent(),BeginPath()与EndPath()SelectClipPath()将路进程与当前的剪切区域进行某种模式的互操作……

    5>字符的输入 <CFont类>

         关键代码:

void CTextView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: Add your message handler code here and/or call default CClientDC dc(this); CFont font; font.CreatePointFont(300,"华文行楷",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+=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 CTextView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default SetCaretPos(point); m_strLine.Empty(); m_ptOrigin=point; CView::OnLButtonDown(nFlags, point); }

    6>定时器

     setTimer可在OnCreate中用,有一个OnTimer()的消息响应函数也可以自己写一个回调函数,具体可以参看SetTimer的msdn

你可能感兴趣的:(null,vc++,图形)