标题:
为啥会无法 include 头文件?
[打印本页]
作者:
hunter1085
时间:
2006-4-13 21:52
标题:
为啥会无法 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);
¡¡// »ñµÃλͼÎļþ´óС£¬²¢¼õÈ¥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
¡¡{
¡¡¡¡// Îļþ¸ñʽÊÇ·ñÕýÈ·ÓÐЧ
¡¡¡¡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´óС±äÁ¿¸³¸øÀà³ÉÔ±±äÁ¿
¡¡m_pDib = pDib;
¡¡m_dwDibSize = dwDibSize;
¡¡// ΪÏàÓ¦Àà³ÉÔ±±äÁ¿¸³BITMAPINFOHEADERºÍµ÷É«°åÖ¸Õë
¡¡m_pBIH = (BITMAPINFOHEADER*)m_pDib;
¡¡m_pPalette = (RGBQUAD*) &m_pDib[sizeof(BITMAPINFOHEADER)];
¡¡// ¼ÆËãµ÷É«°åÖÐʵ¼ÊÑÕÉ«ÊýÁ¿
¡¡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();
¡¡// Èç¹ûλͼÖдæÔÚµ÷É«°å£¬´´½¨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;
¡¡// »æÖÆλͼ
¡¡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);
¡¡// ¼ì²éµ±Ç°ÊÇ·ñÓÐÒ»¸öµ÷É«°å¾ä±ú£¬¶ÔÓÚ´óÓÚ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);
}
作者:
Nothing
时间:
2006-4-13 23:44
你需要配制你的include的路径,看看有没有这个文件。
别外你的代码是在哪里下载的?什么样的代码。
欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/)
Powered by Discuz! 6.0.0