这是代码:
void CTestCximageView::OnDraw(CDC* pDC)
{
//CTestCximageApp* myApp=(CTestCximageApp *)AfxGetApp();
CTestCximageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
BOOL bPrinting = pDC->IsPrinting();

CMemDC* pMemDC = NULL;
if (!bPrinting) pDC = pMemDC = new CMemDC(pDC);

if (!bPrinting && m_brHatch.m_hObject){
CRect rect;
GetClientRect(&rect);
rect.right  = max(rect.right , m_totalDev.cx);
rect.bottom = max(rect.bottom, m_totalDev.cy);
m_brHatch.UnrealizeObject();
CPoint pt(0, 0);
pDC->LPtoDP(&pt);
pt = pDC->SetBrushOrg(pt.x % 8, pt.y % 8);
CBrush* old = pDC->SelectObject(&m_brHatch);
pDC->FillRect(&rect, &m_brHatch);
pDC->SelectObject(old);
}

CxImage* ima = pDoc->GetImage(); 
if (ima) {
if (bPrinting) {
// get size of printer page (in pixels)
int cxPage = pDC->GetDeviceCaps(HORZRES);
int cyPage = pDC->GetDeviceCaps(VERTRES);
//int dcbpp = pDC->GetDeviceCaps(BITSPIXEL);
//int dcnc = pDC->GetDeviceCaps(NUMCOLORS);
//int dcp = pDC->GetDeviceCaps(PLANES);
// get printer pixels per inch
int cxInch = pDC->GetDeviceCaps(LOGPIXELSX);
int cyInch = pDC->GetDeviceCaps(LOGPIXELSY);
// Best Fit case: create a rectangle which preserves the aspect ratio
int cx = ima->GetXDPI() ? (ima->GetWidth()*cxInch)/ima->GetXDPI():ima->GetWidth()*cxInch/96;
int cy = ima->GetYDPI() ? (ima->GetHeight()*cyInch)/ima->GetYDPI():ima->GetHeight()*cyInch/96;
// print it!
/*HDC TmpDC=CreateCompatibleDC(pDC->GetSafeHdc());
HBITMAP bm =::CreateCompatibleBitmap(pDC->GetSafeHdc(), cx, cy);
HBITMAP oldbm = (HBITMAP)::SelectObject(TmpDC,bm);
BitBlt(TmpDC,0,0,cx,cy,0,0,0,WHITENESS);
ima->Draw(TmpDC,CRect(0,0,cx,cy));
BitBlt(pDC->GetSafeHdc(),100,100,cx,cy,TmpDC,0,0,SRCCOPY);
DeleteObject(SelectObject(TmpDC,oldbm));
DeleteDC(TmpDC);*/
CxImage tmp;
tmp.Copy(*ima);
RGBQUAD c={255,255,255,0};
if (tmp.GetTransIndex()>=0) tmp.SetPaletteColor((BYTE)tmp.GetTransIndex(),c);
tmp.SetTransColor(c);
tmp.AlphaStrip();
tmp.Stretch(pDC->GetSafeHdc(), CRect(100,100,cx,cy));
} else {
if (pDoc->GetStretchMode()) {
CRect rect;
GetClientRect(&rect);
ima->Draw(pDC->GetSafeHdc(), rect,0,pDoc->GetSmoothMode()!=0);
} else {
float zoom=pDoc->GetZoomFactor();
if (zoom==1)
ima->Draw(pDC->GetSafeHdc());
else
ima->Draw(pDC->GetSafeHdc(),
CRect(0,0,(int)(ima->GetWidth()*zoom),(int)(ima->GetHeight()*zoom)),
0,pDoc->GetSmoothMode()!=0);
}

if ( m_tracker.m_rect.Width()>0 && m_tracker.m_rect.Height()>0 )
m_tracker.Draw(pDC);
}
}

delete pMemDC;
}红色标记的地方都有错误,为什么呢?麻烦高手指教下小弟...
'GetImage' : is not a member of 'CTestCximageDoc'
'GetStretchMode' : is not a member of 'CTestCximageDoc'
error C2039: 'GetSmoothMode' : is not a member of 'CTestCximageDoc'
error C2039: 'GetZoomFactor' : is not a member of 'CTestCximageDoc'

解决方案 »

  1.   

    提示不是写得很清楚了么?以上这些有问题的函数都不是CTestCximageDoc的成员啊,所以无法调用啊
      

  2.   

    你CTestCximageDoc是不是继承了错误的类啊?还是别人在头文件里另外声明了这些函数而你没有啊?
      

  3.   

    你的CTestCximageDoc类中提供了GetImage这个函数了?