pDC->GetState();报错
时间: 2024-02-16 19:05:00 浏览: 70
redux-thunk-3.1.0.zip
pDC->GetState() 报错的原因可能是因为 CDC 类中没有 GetState() 函数,或者是使用了错误的 CDC 对象指针。
在 MFC 应用程序中,CDC 类确实没有 GetState() 函数,正确的获取 CDC 对象状态的方式是使用 SaveDC() 和 RestoreDC() 函数。例如:
```
CDC* pDC = GetDC();
if (pDC != NULL)
{
int nSavedDC = pDC->SaveDC(); // 保存当前绘图环境
// 在此进行绘图操作
pDC->RestoreDC(nSavedDC); // 恢复绘图环境
ReleaseDC(pDC); // 释放 CDC 对象
}
```
如果您坚持要使用 GetState() 函数,可以自己实现该函数并添加到 CDC 类中,例如:
```
int CDC::GetState(CDCSTATE* pState) const
{
if (pState == NULL)
return 0;
pState->hDC = m_hDC;
pState->hAttribDC = m_hAttribDC;
pState->m_bPrinting = m_bPrinting;
pState->m_bUseDC = m_bUseDC;
pState->m_hDCPen = m_hDCPen;
pState->m_hDCBrush = m_hDCBrush;
pState->m_hFont = m_hFont;
pState->m_hBitmap = m_hBitmap;
pState->m_hPalette = m_hPalette;
pState->m_nBkMode = m_nBkMode;
pState->m_nArcDirection = m_nArcDirection;
pState->m_nMapMode = m_nMapMode;
pState->m_nDefROP2 = m_nDefROP2;
pState->m_sizeVpExt = m_sizeVpExt;
pState->m_sizeVpOrg = m_sizeVpOrg;
pState->m_sizeWinExt = m_sizeWinExt;
pState->m_sizeWinOrg = m_sizeWinOrg;
pState->m_nSaveDCIndex = m_nSaveDCIndex;
pState->m_bHasHalftonePalette = m_bHasHalftonePalette;
return 1;
}
```
不过需要注意的是,这并不是 CDC 类原本就有的函数,也不是 MFC 库中提供的标准函数,使用时需要自己承担一定的风险。
阅读全文