MFC CDC 类 公共方法:CDC::ExcludeClipRect
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的ExcludeClipRect方法用于在设备上下文的裁剪区域中排除一个矩形。这可以用于设置绘图区域,使得在该区域内的绘图操作不会影响到指定的矩形区域。以下是CDC::ExcludeClipRect方法的声明:int ExcludeClipRect( int x1, int y1, int x2, int y2);参数说明: x1,y1:矩形的左上角坐标。 x2,y2:矩形的右下角坐标。该方法返回值是一个非零值,表示成功;返回值为零,表示失败。下面是一个使用ExcludeClipRect方法的简单示例:// 假设pDC是一个有效的CDC指针// 排除矩形(10, 10, 100, 100)不受绘图影响pDC->ExcludeClipRect(10, 10, 100, 100);// 在裁剪区域内进行绘图操作pDC->Rectangle(0, 0, 200, 200);// 恢复裁剪区域pDC->SelectClipRgn(NULL);在这个示...
MFC CDC 类 公共方法:CDC::Escape
在MFC(Microsoft Foundation Classes)中,CDC(Device Context类)的Escape方法用于向打印机发送特定的打印机命令。该方法的声明如下:int CDC::Escape( int nEscape, // 打印机命令 int nCount, // 命令数据的字节数 LPCSTR lpszInData, // 命令数据的指针 LPVOID lpOutData // 输出数据的指针);参数说明: nEscape:表示要执行的打印机命令。这个参数通常是由打印机制造商定义的常量。 nCount:表示命令数据的字节数。 lpszInData:是指向包含命令数据的缓冲区的指针。 lpOutData:是指向用于接收输出数据的缓冲区的指针。可以将其设置为NULL,如果不需要输出数据。该方法返回值表示成功执行的字节数,如果失败则返回负值。以下是一个使用CDC::Escape方法的简单示例:// 构造打印机命令BYTE escapeCommand[] = {0x1B, 0x40}; // 例如,这里是ESC @,初始化...
MFC CDC 类 公共方法:CDC::EnumObjects
在 MFC(Microsoft Foundation Classes)中,CDC::EnumObjects 不是 CDC 类的公共方法。可能你想要查询的是 GDI(图形设备接口)函数 EnumObjects。EnumObjects 是 GDI 函数,而不是 CDC 类的方法。它用于枚举设备上下文(DC)中的对象(如画刷、字体等),以便获取有关这些对象的信息。以下是 EnumObjects 的原型:int EnumObjects( HDC hdc, int nObjectType, GOBJENUMPROC lpObjectFunc, LPARAM lParam); hdc:设备上下文的句柄。 nObjectType:要枚举的对象类型,如 OBJ_BRUSH、OBJ_FONT 等。 lpObjectFunc:指向枚举过程的指针。这个过程由系统调用来处理每个找到的对象。 lParam:传递给枚举过程的应用程序定义的参数。以下是一个简单的示例,演示如何使用 EnumObjects:#include <windows.h&g...
MFC CDC 类 公共方法:CDC::EndPath
在 MFC(Microsoft Foundation Classes)中,CDC::EndPath 是 CDC 类的公共方法之一,用于结束当前路径的定义。以下是 EndPath 方法的原型:BOOL EndPath();EndPath 方法用于结束在设备上下文中定义的路径。在调用 BeginPath 方法开始定义路径之后,通过调用 EndPath 方法,你可以结束路径的定义,从而形成一个完整的路径。以下是一个简单的示例:CDC dc;dc.CreateCompatibleDC(NULL);// 开始定义路径dc.BeginPath();// 在路径中添加一些线条和曲线dc.MoveTo(50, 50);dc.LineTo(100, 50);dc.LineTo(100, 100);dc.ArcTo(50, 50, 100, 100, 100, 75, 50, 50);// 结束路径定义dc.EndPath();// 在路径上进行一些操作,例如绘制路径dc.StrokePath();在上面的示例中,BeginPath 方法开始定义路径,然后通过 LineTo 和 ArcTo 方法添加线条和...
MFC CDC 类 公共方法:CDC::EndPage
在 MFC(Microsoft Foundation Classes)中,CDC::EndPage 是 CDC 类的公共方法之一,用于结束当前页的打印。以下是 EndPage 方法的原型:virtual int EndPage();EndPage 方法通常在每一页打印结束时调用。在文档的打印中,可以在多个页面之间执行打印绘图操作,并在每一页结束时调用 EndPage。以下是一个简单的示例:CPrintDialog printDlg(FALSE);if (printDlg.DoModal() == IDOK){ CDC dc; dc.Attach(printDlg.GetPrinterDC()); // 开始打印 dc.StartDoc(_T("My Document")); // 打印第一页 dc.StartPage(); // 在第一页中进行一些绘图操作 // 结束第一页 dc.EndPage(); // 打印第二页 dc.StartPage(); // 在第二页中进行一些绘图操作 //...
MFC CDC 类 公共方法:CDC::EndDoc
在 MFC(Microsoft Foundation Classes)中,CDC::EndDoc 是 CDC 类的公共方法之一,用于结束文档的打印。以下是 EndDoc 方法的原型:virtual void EndDoc();EndDoc 方法通常在打印任务结束时调用,它标志着文档的打印已完成。以下是一个简单的示例:CPrintDialog printDlg(FALSE);if (printDlg.DoModal() == IDOK){ CDC dc; dc.Attach(printDlg.GetPrinterDC()); // 开始打印 dc.StartDoc(_T("My Document")); // 在文档中进行一些绘图操作 // 结束文档打印 dc.EndDoc(); dc.Detach();}在上面的示例中,EndDoc 方法用于结束文档的打印。在实际应用中,你需要在 StartDoc 和 EndDoc 之间执行实际的打印绘图操作。
MFC CDC 类 公共方法:CDC::Ellipse
在 MFC(Microsoft Foundation Classes)中,CDC::Ellipse 是 CDC 类的公共方法之一,用于在设备上下文中绘制一个椭圆。以下是 Ellipse 方法的原型:BOOL CDC::Ellipse( LPCRECT lpRect // 指定椭圆的边界矩形);这个方法用于在指定的矩形区域内绘制一个椭圆。lpRect 参数是一个指向 RECT 结构的指针,指定了椭圆的边界矩形。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 在矩形区域内绘制椭圆dc.Ellipse(&rect);在上面的示例中,Ellipse 方法用于在设备上下文中绘制一个椭圆,该椭圆的边界矩形由 CRect 对象 rect 指定。Ellipse 方法是用于绘制椭圆形状的一种便捷方法,通常在绘制图形界面元素时使用。
MFC CDC 类 公共方法:CDC::DrawTextEx
在 MFC(Microsoft Foundation Classes)中,CDC::DrawTextEx 是 CDC 类的公共方法之一,用于在设备上下文中绘制文本,并支持更多的文本绘制选项,相较于 CDC::DrawText。以下是 DrawTextEx 方法的原型:int CDC::DrawTextEx( LPTSTR lpchText, int cchText, LPRECT lprc, UINT format, LPDRAWTEXTPARAMS lpdtp);这个方法与 CDC::DrawText 类似,但是多了一个额外的参数 lpdtp,该参数是一个 LPDRAWTEXTPARAMS 结构,用于指定更详细的文本绘制参数。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 要绘制的文本LPTSTR text = _T("Hello, MFC!");// 使用DRAWTEXTPARAMS结构DRAWTEXTPARAMS dtp = { sizeof(DR...
MFC CDC 类 公共方法:CDC::DrawText
在 MFC(Microsoft Foundation Classes)中,CDC::DrawText 是 CDC 类的公共方法之一,用于在设备上下文中绘制文本。以下是 DrawText 方法的原型:int CDC::DrawText( LPCTSTR lpszString, // 要绘制的文本 int nCount, // 要绘制的字符数,如果为 -1,则直到字符串的结尾 LPRECT lpRect, // 指定绘制文本的矩形 UINT nFormat // 格式标志);这个方法用于在指定矩形区域内绘制文本。lpszString 参数是要绘制的文本字符串,nCount 是要绘制的字符数,如果为 -1,则一直绘制到字符串的结尾。lpRect 参数指定了文本绘制的矩形区域,nFormat 参数是一个控制文本绘制格式的标志集。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 要绘制的文本LPCTSTR text = _T(...
MFC CDC 类 公共方法:CDC::DrawState
在 MFC(Microsoft Foundation Classes)中,CDC::DrawState 是 CDC 类的公共方法之一,用于在设备上下文中绘制一个状态图形,通常用于按钮或其他控件的绘制。以下是 DrawState 方法的原型:BOOL CDC::DrawState( CPoint pt, // 绘制的起点 CSize size, // 图形的大小 HBITMAP hBitmap, // 位图句柄 UINT nFlags, // 绘制标志 HBRUSH hBrush = NULL // 背景画刷);这个方法用于绘制一个表示按钮或控件状态的图形。pt 参数指定绘制的起点,size 参数指定图形的大小,hBitmap 是表示图形的位图句柄。nFlags 参数包含有关如何绘制图形的标志,例如 DSS_NORMAL 表示正常状态,DSS_DISABLED 表示禁用状态等等。hBrush 参数是可选的,用于指定背景画刷。以下是一个简单的示例:CClientDC dc(this);// 创建一个位图,用...
MFC CDC 类 公共方法:CDC::DrawIcon
在 MFC(Microsoft Foundation Classes)中,CDC::DrawIcon 是 CDC 类的公共方法之一,用于在设备上下文中绘制一个图标。以下是 DrawIcon 方法的原型:BOOL CDC::DrawIcon( int x, // x 坐标 int y, // y 坐标 HICON hIcon // 图标句柄);这个方法用于在指定位置 (x, y) 绘制指定图标 (hIcon)。返回值是一个布尔值,表示绘制是否成功。以下是一个简单的示例:CClientDC dc(this);// 获取系统标准图标句柄HICON hIcon = ::LoadIcon(NULL, IDI_INFORMATION);// 绘制图标dc.DrawIcon(50, 50, hIcon);在上面的示例中,DrawIcon 方法用于在设备上下文中绘制一个系统标准信息图标,图标的位置是 (50, 50)。您可以使用不同的图标句柄来绘制不同的图标。注意:在实际应用程序中,通常会使用 CIcon 对象,该对象包装了 HICON 句柄,并...
MFC CDC 类 公共方法:CDC::DrawFrameControl
在 MFC(Microsoft Foundation Classes)中,CDC::DrawFrameControl 是 CDC 类的公共方法之一,用于在设备上下文中绘制一个标准的用户界面元素(如按钮或复选框)。以下是 DrawFrameControl 方法的原型:BOOL CDC::DrawFrameControl( LPRECT lpRect, // 指定矩形的指针 UINT nType, // 元素的类型 UINT nState // 元素的状态);lpRect 参数是一个 LPCRECT 类型的指针,指向要绘制的矩形的矩形结构。nType 参数指定要绘制的元素的类型,例如 DFC_BUTTON 表示按钮,DFC_CAPTION 表示标题条,等等。nState 参数指定元素的状态。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 绘制一个按钮dc.DrawFrameControl(&rect, DFC_BUTTON, DFCS_...
MFC CDC 类 公共方法:CDC::DrawFocusRect
在 MFC(Microsoft Foundation Classes)中,CDC::DrawFocusRect 是 CDC 类的公共方法之一,用于在设备上下文中绘制一个聚焦矩形。这通常用于可获得输入焦点的窗口或控件,以突显其边界。以下是 DrawFocusRect 方法的原型:BOOL CDC::DrawFocusRect( LPCRECT lpRect);该方法接受一个 LPCRECT 类型的指针,指向要绘制的矩形的矩形结构。DrawFocusRect 方法绘制一个聚焦矩形,其效果是在 Windows 操作系统中使用反向视频(inverted video)来模拟聚焦框。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 绘制一个聚焦矩形dc.DrawFocusRect(&rect);在上面的示例中,DrawFocusRect 方法用于在设备上下文中绘制一个聚焦矩形。这通常在处理控件的焦点状态时很有用,以提供用户界面的视觉反馈。
MFC CDC 类 公共方法:CDC::DrawEdge
在MFC(Microsoft Foundation Classes)中,CDC::DrawEdge 是 CDC 类的公共方法之一,用于在设备上下文中绘制具有边框效果的矩形。DrawEdge 方法通常用于创建具有凸起或凹陷效果的按钮或边框。以下是 DrawEdge 方法的原型:BOOL CDC::DrawEdge( LPRECT qrc, UINT edge, UINT grfFlags);该方法接受一个 LPRECT 类型的指针 qrc,指向要绘制的矩形的矩形结构。edge 参数指定要绘制的边框类型,可以是 BDR_RAISEDOUTER、BDR_SUNKENOUTER、BDR_RAISEDINNER 或 BDR_SUNKENINNER 之一。grfFlags 参数是一个控制绘制行为的标志集。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 绘制一个具有凹陷效果的矩形边框dc.DrawEdge(&rect, BDR_SUNKENOUTER, BF_RECT);在上面的示例中,...
MFC CDC 类 公共方法:CDC::DrawDragRect
在MFC(Microsoft Foundation Classes)中,CDC::DrawDragRect 是 CDC 类的公共方法之一,用于在设备上下文中绘制拖动矩形的效果。该方法通常用于实现拖放操作中的视觉反馈,允许用户在拖动时看到一个虚线矩形跟随鼠标移动。以下是 DrawDragRect 方法的原型:void CDC::DrawDragRect( LPCRECT lpRect, SIZE size, LPCRECT lpRectLast, SIZE sizeLast, CBrush* pBrush = NULL, CBrush* pBrushLast = NULL);该方法接受两个矩形区域(lpRect 和 lpRectLast),每个矩形由 LPCRECT 类型的指针表示。size 和 sizeLast 分别表示当前和上一次绘制的虚线矩形的边框大小。可选地,您可以传递两个 CBrush 对象来指定虚线矩形的填充颜色,pBrush 表示当前虚线矩形的填充颜色,pBrushLast 表示上一次绘制的虚线矩形的填充颜色。以下是一个简单的示例:CClientDC...
MFC CDC 类 公共方法:CDC::Draw3dRect
在MFC(Microsoft Foundation Classes)中,CDC::Draw3dRect 是 CDC 类的公共方法之一,用于在设备上下文中绘制一个矩形,具有3D效果的外观。该方法的原型如下:void CDC::Draw3dRect( LPCRECT lpRect, COLORREF clrTopLeft, COLORREF clrBottomRight);该方法接受一个 LPCRECT 类型的指针,指向要绘制的矩形的矩形结构。还接受两个 COLORREF 类型的参数,分别表示矩形的左上角和右下角的颜色。以下是一个简单的示例:CClientDC dc(this);// 定义一个矩形CRect rect(50, 50, 150, 100);// 绘制带有3D效果的矩形dc.Draw3dRect(&rect, RGB(255, 0, 0), RGB(0, 0, 255));在上面的示例中,Draw3dRect 方法使用 dc(一个设备上下文对象)在客户区域内的指定矩形上绘制一个带有3D效果的矩形。颜色 RGB(255, 0, 0) 表示左上角的颜色,颜色 R...
MFC CDC 类 公共方法:CDC::DPtoLP
在MFC(Microsoft Foundation Classes)中,CDC::DPtoLP 是 CDC 类的公共方法之一,用于将逻辑坐标(设备无关坐标)转换为逻辑坐标(设备相关坐标)。该方法的原型如下:void CDC::DPtoLP( LPPOINT lpPoints, int nCount = 1) const;此方法接受一个 LPPOINT 类型的指针,指向要转换的点数组,并可选地接受一个整数参数 nCount,表示点的数量。在调用此方法后,指定的点数组将包含相应的逻辑坐标。以下是一个简单的示例:CClientDC dc(this);// 假设有一个逻辑坐标的点数组POINT logicalPoints[3];logicalPoints[0].x = 100;logicalPoints[0].y = 200;logicalPoints[1].x = 150;logicalPoints[1].y = 250;logicalPoints[2].x = 200;logicalPoints[2].y = 300;// 将逻辑坐标转换为设备相关坐标dc.DPtoLP(logic...
MFC CDC 类 公共方法:CDC::DPtoHIMETRIC
在 MFC(Microsoft Foundation Classes)中,CDC::DPtoHIMETRIC 是 CDC 类的公共方法之一,用于将逻辑坐标(设备无关坐标)转换为HIMETRIC坐标(1/100毫米)。该方法的原型如下:void CDC::DPtoHIMETRIC( SIZE& size) const;此方法接受一个 SIZE 结构的引用,表示宽度和高度的逻辑坐标。在调用此方法后,size 结构将包含相应的HIMETRIC坐标。以下是一个简单的示例:CClientDC dc(this);// 假设有一个逻辑坐标的大小SIZE logicalSize;logicalSize.cx = 100; // 逻辑坐标的宽度logicalSize.cy = 200; // 逻辑坐标的高度// 将逻辑坐标转换为HIMETRIC坐标dc.DPtoHIMETRIC(logicalSize);// 现在 logicalSize 中包含了相应的HIMETRIC坐标这个方法在开发打印相关的功能时可能会有用,因为打印通常使用HIMETRIC坐标,而屏幕显示使用逻辑坐标。
MFC CDC 类 公共方法:CDC::Detach
在MFC(Microsoft Foundation Classes)中,CDC 类的 Detach 方法是用于分离设备上下文(Device Context)句柄的方法。这个方法的签名通常如下:HDC CDC::Detach();Detach 方法用于将 CDC 对象与其底层的设备上下文句柄分离,返回分离的设备上下文句柄。这可以在某些情况下很有用,例如在将 CDC 对象传递给某个函数或类的时候,但希望保留设备上下文的控制权。以下是一个简单的示例:CDC myDC; // 假设已经创建了 CDC 对象并进行了一些绘图操作HDC hDC = myDC.Detach();// 现在 myDC 对象不再拥有设备上下文句柄,而是由 hDC 变量接管了// 在适当的时候,可能需要恢复控制权myDC.Attach(hDC);请注意,使用 Detach 后,程序员需要负责管理相关的资源,确保在不再需要设备上下文时释放资源。Attach 方法用于将设备上下文重新关联到 CDC 对象。这仅是一个简单的示例,实际应用中需要根据具体的代码和需求进行更详细的处理。
MFC CDC 类 公共方法:CDC::CreateCompatibleDC
在 MFC(Microsoft Foundation Classes)的 CDC 类中,CreateCompatibleDC 方法用于创建一个与指定设备上下文兼容的设备上下文。以下是 CDC::CreateCompatibleDC 方法的基本语法:BOOL CreateCompatibleDC( CDC* pDC // 与新创建的设备上下文兼容的设备上下文对象);该方法返回一个 BOOL 类型的值,表示创建是否成功。如果成功,则返回非零值;否则,返回零。使用示例:CDC dc; // 假设已经创建了 CDC 对象CDC dcCompat; // 用于存储新创建的与 dc 兼容的设备上下文// 创建与 dc 兼容的设备上下文if (dcCompat.CreateCompatibleDC(&dc)){ // 创建成功,可以使用 dcCompat 进行绘图操作 dcCompat.Rectangle(10, 10, 100, 100); // 在 dcCompat 上绘制一个矩形}else{ // 创建失败}在这个示例中,CreateCompatibleDC...