⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dc.h

📁 一个更为先进的嵌入式操作系统.采用RMS线程调度算法,具有信号量等同步对象.亦包括GUI. 通过该系统您可以极大知道Windows的内部秘密.
💻 H
字号:
#ifndef _GOS_DC_H_
#define _GOS_DC_H_

enum _tagDC
{
	DT_GETCARETPOS		=0x0010,
	DT_GETCARETINDEX	=0x0020,
	DT_CALCRECT			=0x0030,

	DT_MULTILINE		=0x0100,
	DT_FILLFULLRECT		=0x0200,
	DT_WORDBREAK		=0x0300,
	DT_UNDERLINE		=0x0400,
	DT_STRIKELINE		=0x0800,

	DT_LEFT				=0x1000,
	DT_RIGHT			=0x2000,
	DT_CENTER			=0x3000,
	DT_TOP				=0x4000,
	DT_BOTTOM			=0x8000,
	DT_VCENTER			=0xC000,

	DrawTextGrowRow=63,
};

typedef struct _tagDCDTROW
{
	LPCTSTR pStr;
	LPCTSTR pEnd;
	SIZE size;
}DCDTROW,*PDCDTROW;

class CWnd;
class CDisplay;
class CScrollBar;
class CDC
{
public:
	//绘图函数
	void SetPixel(POINT pt,COLORREF clr);
	void MoveTo(POINT pt){m_ptPos=pt;}
	void LineTo(POINT pt){PrvLine(m_ptPos,pt);}
	void FillSolidRect(LPCRECT pRect,COLORREF clr);
	void FillRect(LPCRECT pRect);
	void Rectangle(LPCRECT pRect);
	void Ellipse(LPCRECT pRect);
	void Polyline(PPOINT pPoints,int nCount);
	void Polygon(PPOINT pPoints,int nCount);
	void DrawRect(LPCRECT pRect,COLORREF crColor,int nPenStyle=PS_SOLID);
	void DrawFocusRect(LPCRECT pRect,COLORREF crColor)
		{ DrawRect(pRect,crColor,PS_DOT); }
	void Draw3dRect(LPCRECT lpRect,COLORREF clrTopLeft,COLORREF clrBottomRight);
	void BitBlt(CDC* pSrcDC,DWORD dwRop)
		{ BitBlt(pSrcDC->m_rclClip,pSrcDC->m_pBitmap,NULL,dwRop); }
	void BitBlt(LPCRECT pDestRect,CBitmap* pBitmap,LPCRECT pSrcRect,DWORD nRop);
	
	//文字处理
	int DrawText(const CString& str,LPCRECT pRect,UINT nFormat)
		{ return DrawText(LPCTSTR(str),str.GetLength(),pRect,nFormat); }
	int DrawText(LPCTSTR pszString,LPCRECT pRect,UINT nFormat)
		{ return DrawText(pszString,strlen(pszString),pRect,nFormat); }
	int DrawText(CWnd* pWnd,LPCRECT pRect,UINT nFormat);
	int DrawText(LPCTSTR pszString,int nCount,LPCRECT pRect,UINT nFormat);
	CSize GetTextExtent(const CString& str)
		{ return GetTextExtent(LPCTSTR(str),str.GetLength());}
	CSize GetTextExtent(LPCTSTR pszString,int nCount);

	//绘图属性
	CBitmap* SelectObject(CBitmap* pBitmap)
		{ CBitmap* pOld=m_pBitmap; m_pBitmap=pBitmap;
			m_rop.SelectObject(pBitmap);return pOld; }
	CPalette* SelectObject(CPalette* pPalette)
		{ CPalette* pOld=m_pPalette;m_pPalette=pPalette;return pOld; }
	CPen* SelectObject(CPen* pPen)
		{ CPen* pOld=m_pPen;m_pPen=pPen;return pOld; }
	CBrush* SelectObject(CBrush* pBrush)
		{ CBrush* pOld=m_pBrush;m_pBrush=pBrush;return pOld; }
	CFont* SelectObject(CFont* pFont)
		{ CFont* pOld=m_pFont; m_pFont=pFont; return pOld; }
	COLORREF SetTextColor(COLORREF crColor)
		{ COLORREF nOld=m_nTextColor; m_nTextColor=crColor; return nOld; }
	COLORREF SetBkColor(COLORREF crColor)
		{ COLORREF nOld=m_nBkColor; m_nBkColor=crColor; return nOld; }
	int SetROP2(int nDrawMode)
		{int nOld=m_nDrawMode;m_nDrawMode=nDrawMode;return nOld; }
	CBitmap* GetCurrentBitmap(){return m_pBitmap;}
	CPalette* GetCurrentPalette(){return m_pPalette;}
	CPen* GetCurrentPen(){return m_pPen;}
	CBrush* GetCurrentBrush(){return m_pBrush;}
	COLORREF GetTextColor(){return m_nTextColor;}
	COLORREF GetBkColor(){return m_nBkColor;}
	int GetROP2(){return m_nDrawMode;}
	CROP& GetRopObj(){return m_rop;}
	void SetOrg(POINT pt){m_ptOrg=pt;}
	CPoint GetOrg(){return m_ptOrg;}
	void SetClipRect(LPCRECT pRect){m_rclClip=*pRect;};
	void GetClipRect(LPRECT pRect){*pRect=m_rclClip;}
	POINT GetCurrentPosition(){return m_ptPos;}
	//构建
	CDC(void);
private:
	void PrvLine(POINT pt1,POINT pt2);
	void PrvLineV(int x,int y1,int y2);
	void PrvLineH(int y,int x1,int x2);
	void PrvLineI(POINT pt1,POINT pt2);
	void PrvFillEllipse(LPCRECT pRect);
	void PrvFillText(CRect& rect,LPCTSTR pszString,LPCTSTR pszStrEnd);
	void PrvDrawText(CRect& rect,LPCTSTR pszString,LPCTSTR pszStrEnd,UINT nFormat);
	void PrvCalcText(DCDTROW& dr,int nWidth,UINT nFormat);
	int PrvTextWidth(LPCTSTR pszString,LPCTSTR pszStrEnd,int nFontSize);
	static void PrvPolygon(POINT pt1,POINT pt2,int y,int* pMinX,int* pMaxX);
private:
	//data members
	CROP m_rop;
	CPoint m_ptOrg;
	CPoint m_ptPos;
	CRect m_rclClip;
	COLORREF m_nTextColor;
	COLORREF m_nBkColor;
	DWORD m_nDrawMode;
	CPalette* m_pPalette;
	CBitmap* m_pBitmap;
	CPen* m_pPen;
	CBrush* m_pBrush;
	CFont* m_pFont;
};

typedef CDC* PDC;

#endif _GOS_DC_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -