可能没有include包含CGray8Dib的文件。

解决方案 »

  1.   

    试一下这样:
    class CGray8Dib *m_pGray8Dib;
      

  2.   

    class CGray8Dib : public CObject {
    public:
        enum { m_nBitCount = 8, m_nColorTableEntries = 32 }; private:
        LPBITMAPINFOHEADER m_lpBMIH;        // buffer containing the BITMAPINFOHEADER
        RGBQUAD*           m_lpvColorTable; // points inside m_lpBMIH.
        DWORD              m_dwSizeImage;   // # of bits 
        HPALETTE           m_hPalette;    void ComputeMetrics();
        BOOL MakePalette();
        void MakeColorTable();public:
        CGray8Dib(const CRect &rect, int ArX, int ArY); // builds BITMAPINFOHEADER, color table and palette
        ~CGray8Dib();    CSize GetSize () const;
        int   GetBufferSize () const { return m_dwSizeImage; }
        BOOL  Draw(CDC* pDC, int x, int y, const LPBYTE lpImage);
        UINT  UsePalette(CDC* pDC, bool bForeground = false);    void ReduceNumberOfColors (BYTE* pBuffer);
    };
      

  3.   

    to Lighter(火机):
    这样可以了,但我有一些不明白:
    我原来在另一个应用中这样写就不会出错,在VC6中为何要加class?
    分可另加
      

  4.   

    在 .hclass CGray8Dib;class CYourClass
    {
    ...
    public:
      CGray8Dib  *m_pGray8Dib;(CGray8Dib*  m_pGray8Dib;我也试过)
    ...
    在.cpp:
    ...
    #include "Gray8Dib.h"
      

  5.   

    因为我碰到过类似的问题,所以我知道十有八九加上class就行。
    你试试下面的办法:
    在用到CGray8Dib的文件中先包含CGray8Dib的.h;
    紧接着下面来一个:
    class CGray8Dib;      //把类声明一下
    然后再试着用CGray8Dib* p;
    或许会管用。
    具体什么原因我说不上来。