来自孙鑫的视频教程 1,画图
HDC hdc; hdc=::GetDC(m_hWnd); MoveToEx(hdc,m_Point.x,m_Point.y,NULL); LineTo(hdc,point.x,point.y); ::ReleaseDC(m_hWnd,hdc); */ /* CDC* pDC=GetDC(); pDC->MoveTo(m_Point); pDC->LineTo(point); ReleaseDC(pDC); */ //CClientDC dc(this); /* CClientDC dc(GetParent()); dc.MoveTo(m_Point); dc.LineTo(point);*/ /* CWindowDC dc(GetDesktopWindow()); dc.MoveTo(m_Point); dc.LineTo(point); */ /* CPen pen(PS_DOT,1,RGB(255,0,20)); CClientDC dc(this); CPen *pOldPen=dc.SelectObject(&;pen); dc.MoveTo(m_Point); dc.LineTo(point); dc.SelectObject(pOldPen); */
/*
CBrush brush(RGB(255,0,0)); CClientDC dc(this); dc.FillRect(CRect(m_Point,point),&;brush); */
/*位图 CBitmap bitmap; bitmap.LoadBitmap(IDB_BITMAP1);
CBrush brush(&;bitmap); CClientDC dc(this); dc.FillRect(CRect(m_Point,point),&;brush); */ //可以看到先前的内容. /*CClientDC dc(this); CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH)); CBrush *pOldBrush=dc.SelectObject(pBrush); dc.Rectangle(CRect(m_Point,point)); dc.SelectObject(pOldBrush);*/
2 单
文档//定时器,字体变色,字体选择,输入文字.
void CsingledocView::OnDraw(CDC* pDC) { CsingledocDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CString str;str="jianghuming"; CSize sz=pDC->GetTextExtent(str); pDC->TextOut(59,57,str); str.LoadString(101);pDC->TextOut(0,400,str); pDC->BeginPath(); pDC->Rectangle(59,57,59+sz.cx,57+sz.cy); pDC->EndPath(); pDC->SelectClipPath(RGN_DIFF); for(int i=0;i<300;i+=10) { pDC->MoveTo(0,i); pDC->LineTo(300,i); pDC->MoveTo(i,0); pDC->LineTo(i,300); } { if (CView::OnCreate(lpCreateStruct) == -1) return -1; // TODO: 在此添加您专用的创建代码 CClientDC dc(this); TEXTMETRIC tm; } int CsingledocView::OnCreate(LPCREATESTRUCT lpCreateStruct)
dc.GetTextMetrics(&;tm); // CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight); bitmap.LoadBitmapA(IDB_BITMAP1); CreateCaret(&;bitmap); ShowCaret(); SetTimer(1,100,NULL); return 0; } void CsingledocView::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { // TODO: 在此添加消息处理程序代码和/或调用默认值 CClientDC dc(this ); CFont font; font.CreatePointFont(300,"华文行楷",NULL); CFont* old=dc.SelectObject(&;font); TEXTMETRIC tm; dc.GetTextMetrics(&;tm); if(0x0d==nChar) { m_String.Empty(); m_Point.y+=tm.tmHeight; } else if(0x08==nChar) { COLORREF clr=dc.SetTextColor(dc.GetBkColor()); dc.TextOut(m_Point.x,m_Point.y,m_String); m_String=m_String.Left(m_String.GetLength()-1); dc.SetTextColor(clr); } else { m_String+=(char)nChar; } CSize sz=dc.GetTextExtent(m_String); CPoint pt; pt.x=m_Point.x+sz.cx; pt.y=m_Point.y; SetCaretPos(pt); dc.TextOut(m_Point.x,m_Point.y,m_String); dc.SelectObject(old); CView::OnChar(nChar, nRepCnt, nFlags); } void CsingledocView::OnLButtonDown(UINT nFlags, CPoint point) {
// TODO: 在此添加消息处理
程序代码和/或调用默认值 SetCaretPos(point); m_String.Empty(); m_Point=point; CView::OnLButtonDown(
nFlags, point); } void CsingledocView::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 m_nwidth+=5; CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics(&am