发新话题
打印

为啥会无法 include 头文件?

为啥会无法 include 头文件?

小弟初学VC++,有幸从贵网站获得一些源代码,但是编译后出错,错误原因是无法打开头文件,恳请高手帮忙指点迷津:
源头文件是:
#ifndef __DIB_H__
#define __DIB_H__
#include <wingdi.h>
class CDib
{
¡¡public:
¡¡¡¡CDib();
¡¡¡¡~CDib();

¡¡¡¡BOOL Load( const char * );
¡¡¡¡BOOL Save( const char * );
¡¡¡¡BOOL Draw( CDC *, int nX = 0, int nY = 0, int nWidth = -1, int nHeight = -1, int mode = SRCCOPY);
¡¡¡¡BOOL SetPalette( CDC * );

¡¡private:
¡¡¡¡CPalette m_Palette;
¡¡¡¡unsigned char *m_pDib, *m_pDibBits;
¡¡¡¡DWORD m_dwDibSize;
¡¡¡¡BITMAPINFOHEADER *m_pBIH;
¡¡¡¡RGBQUAD *m_pPalette;
¡¡¡¡int m_nPaletteEntries;
};
#endif
源cpp文件是:
#include "stdafx.h"
#include "Dib.h"

CDib::CDib()
{
¡¡m_pDib = NULL;
}

CDib::~CDib()
{
¡¡// Èç¹ûλͼÒѾ­±»¼ÓÔØ£¬ÊÍ·ÅÄÚ´æ
¡¡if (m_pDib != NULL)
¡¡¡¡delete []m_pDib;
}
BOOL CDib:oad(const char *pszFilename)
{
¡¡CFile cf;

¡¡// ´ò¿ªÎ»Í¼Îļþ
¡¡if (!cf.Open(pszFilename, CFile::modeRead))
¡¡¡¡return (FALSE);

¡¡// »ñµÃλͼÎļþ´ó&ETH;¡£¬²¢¼õÈ¥BITMAPFILEHEADERµÄ³¤¶È
¡¡DWORD dwDibSize;
¡¡dwDibSize = cf.GetLength() - sizeof(BITMAPFILEHEADER);

¡¡// ΪDIBλͼ·ÖÅäÄÚ´æ
¡¡unsigned char *pDib;
¡¡pDib = new unsigned char[dwDibSize];
¡¡if (pDib == NULL)
¡¡¡¡return (FALSE);

¡¡BITMAPFILEHEADER BFH;

¡¡// ¶ÁȡλͼÎļþÊý¾Ý
¡¡try
¡¡{
¡¡¡¡// Îļþ¸ñʽÊÇ·ñÕýÈ·Ó&ETH;&ETH;§
¡¡¡¡if ( cf.Read(&BFH, sizeof(BITMAPFILEHEADER)) != sizeof(BITMAPFILEHEADER) ||
¡¡¡¡¡¡¡¡¡¡BFH.bfType != ¡¯MB¡¯ || cf.Read(pDib, dwDibSize) != dwDibSize)
¡¡¡¡{
¡¡¡¡¡¡delete []pDib;
¡¡¡¡¡¡return (FALSE);
¡¡¡¡}
¡¡}
¡¡catch (CFileException *e)
¡¡{
¡¡¡¡e->Delete();
¡¡¡¡delete []pDib;
¡¡¡¡return (FALSE);
¡¡}

¡¡// deleteÏÈÇ°¼ÓÔصÄλͼ
¡¡if (m_pDib != NULL)
¡¡¡¡delete m_pDib;

¡¡// ½«ÁÙʱDibÊý¾ÝÖ¸ÕëºÍDib´ó&ETH;¡±äÁ¿¸³¸øÀà³ÉÔ±±äÁ¿
¡¡m_pDib = pDib;
¡¡m_dwDibSize = dwDibSize;

¡¡// ΪÏàÓ¦Àà³ÉÔ±±äÁ¿¸³BITMAPINFOHEADERºÍµ÷É«°åÖ¸Õë
¡¡m_pBIH = (BITMAPINFOHEADER*)m_pDib;
¡¡m_pPalette = (RGBQUAD*) &m_pDib[sizeof(BITMAPINFOHEADER)];

¡¡// ¼&AElig;Ëãµ÷É«°åÖ&ETH;ʵ¼ÊÑÕÉ«ÊýÁ¿
¡¡m_nPaletteEntries = 1 << m_pBIH->biBitCount;
¡¡if (m_pBIH->biBitCount > 8)
¡¡¡¡m_nPaletteEntries = 0;
¡¡else if (m_pBIH->biClrUsed != 0)
¡¡¡¡m_nPaletteEntries = m_pBIH->biClrUsed;

¡¡// ΪÏàÓ¦Àà³ÉÔ±±äÁ¿¸³image dataÖ¸Õë
¡¡m_pDibBits = &m_pDib[sizeof(BITMAPINFOHEADER) + m_nPaletteEntries * sizeof (RGBQUAD)];

¡¡// deleteÏÈÇ°µÄµ÷É«°å
¡¡if (m_Palette.GetSafeHandle() != NULL)
¡¡¡¡m_Palette.DeleteObject();

¡¡// Èç¹ûλͼÖ&ETH;´æÔÚµ÷É«°å£¬´´½¨LOGPALETTE ¼°CPalette
¡¡if (m_nPaletteEntries != 0)
¡¡{
¡¡¡¡LOGPALETTE *pLogPal = (LOGPALETTE*)new char[sizeof(LOGPALETTE) + m_nPaletteEntries *sizeof(PALETTEENTRY)];

¡¡¡¡if (pLogPal != NULL)
¡¡¡¡{
¡¡¡¡¡¡pLogPal->palVersion = 0x300;
¡¡¡¡¡¡pLogPal->palNumEntries = m_nPaletteEntries;

¡¡¡¡¡¡for (int i = 0; i < m_nPaletteEntries; i++)
¡¡¡¡¡¡{
¡¡¡¡¡¡¡¡pLogPal->palPalEntry.peRed = m_pPalette.rgbRed;
¡¡¡¡¡¡¡¡pLogPal->palPalEntry.peGreen = m_pPalette.rgbGreen;
¡¡¡¡¡¡¡¡pLogPal->palPalEntry.peBlue = m_pPalette.rgbBlue;
¡¡¡¡¡¡}

¡¡¡¡¡¡//´´½¨CPalette²¢ÊÍ·ÅLOGPALETTEµÄÄÚ´æ
¡¡¡¡¡¡m_Palette.CreatePalette(pLogPal);
¡¡¡¡¡¡delete []pLogPal;
¡¡¡¡}
¡¡}

¡¡return (TRUE);
}

//º¯Êý¹¦ÄÜ£º±£´æλͼÈëBMPÎļþ
BOOL CDib::Save(const char *pszFilename)
{
¡¡if (m_pDib == NULL)
¡¡¡¡return (FALSE);

¡¡CFile cf;
¡¡if (!cf.Open(pszFilename, CFile::modeCreate | CFile::modeWrite))
¡¡¡¡return (FALSE);

¡¡try
¡¡{
¡¡¡¡BITMAPFILEHEADER BFH;
¡¡¡¡memset(&BFH, 0, sizeof(BITMAPFILEHEADER));
¡¡¡¡BFH.bfType = ¡¯MB¡¯;
¡¡¡¡BFH.bfSize = sizeof(BITMAPFILEHEADER) + m_dwDibSize;
¡¡¡¡BFH.bfOffBits = sizeof(BITMAPFILEHEADER) +
sizeof(BITMAPINFOHEADER) + m_nPaletteEntries *sizeof(RGBQUAD);

¡¡¡¡cf.Write(&BFH, sizeof(BITMAPFILEHEADER));
¡¡¡¡cf.Write(m_pDib, m_dwDibSize);
¡¡}
¡¡catch (CFileException *e)
¡¡{
¡¡¡¡e->Delete();
¡¡¡¡return (FALSE);
¡¡}
¡¡return (TRUE);
}

BOOL CDib:raw(CDC *pDC, int nX, int nY, int nWidth, int nHeight, int mode)
{
¡¡if (m_pDib == NULL)
¡¡¡¡return (FALSE);

¡¡// »ñȡλͼ¿í¶ÈºÍ¸ß¶È¸³Öµ
¡¡if (nWidth == - 1)
¡¡¡¡nWidth = m_pBIH->biWidth;
¡¡if (nHeight == - 1)
¡¡¡¡nHeight = m_pBIH->biHeight;

¡¡// »æÖ&AElig;λͼ
¡¡StretchDIBits(pDC->m_hDC, nX, nY, nWidth, nHeight, 0, 0, m_pBIH->biWidth, m_pBIH->biHeight, m_pDibBits, (BITMAPINFO*)m_pBIH, BI_RGB, mode);

¡¡return (TRUE);
}

BOOL CDib::SetPalette(CDC *pDC)
{
¡¡if (m_pDib == NULL)
¡¡¡¡return (FALSE);

¡¡// ¼ì²éµ±Ç°ÊÇ·ñÓ&ETH;Ò»¸öµ÷É«°å¾ä±ú£¬¶ÔÓÚ´óÓÚ256É«µÄλͼ£¬ÎªNULL
¡¡if (m_Palette.GetSafeHandle() == NULL)
¡¡¡¡return (TRUE);

¡¡// Ñ¡Ôñµ÷É«°å£¬½Ó×Åʵʩ֮£¬×îºó»Ö¸´Àϵĵ÷É«°å
¡¡CPalette *pOldPalette;
¡¡pOldPalette = pDC->SelectPalette(&m_Palette, FALSE);
¡¡pDC->RealizePalette();
¡¡pDC->SelectPalette(pOldPalette, FALSE);

¡¡return (TRUE);
}

TOP

你需要配制你的include的路径,看看有没有这个文件。
别外你的代码是在哪里下载的?什么样的代码。

TOP

发新话题