 
   
           


ƹ֮Ϸ֮:ͼҳCPICPAGE
  
ͼҳָڴбͼݵĸֱ,Ļ,ͼƬ,ڽĽݵ,ҪֻDirectXı,õһЩ,ֱDirectX򽻵,ıֲĲϵͳĹСö. 
  
ǵ,CPICPAGEһǿԼõĶ,ǲʹDirectX,Լһֱṹ,Ϸಿֲκθı,ֻҪCPICPAGEչCSELFPAGEĶ󼴿.֪"ͼ"˾ѩɺⶬ(ǳĳʦ,Ҵǳ,ҲǹڱȽ"xx"Ϸվ)һԼĹǿͼ,ǲʹDirectX. 
  
ϷͼĲһ㲻ֱӶԾ͵ı,ǵǵĸCPICPAGE. 
  
    ǵϷ,ͼҳĽṹģ 
CPICPAGE 
    CBitmapPage  //׼windowsλͼ,ʹ16Mɫģʽ,һЩµͼ,ʹ 
     //16MɫDirectXDraw־޴˷,米,ǿԱһ 
                 //ڴDirectXDrawΪ,ֻһ²Ž256ɫԭͼ 
                 //CBitmapPageд뱳(ʹɫɱ֤ǳߵͼ,ر 
                 //ʹPotoshop 5.0Animatorfor Window Ϊת256ɫ, 
                 //ɫʧ漫С),ƽʱϷǸٵDirectXDraw 
    CDirectXDrawPage//׼DirectXDraw, 
    CGifPage//Gif,ʱԶ޸ͼ,̳CDirectXDrawPage 
    CAviPage//AVi,ʱԶ޸ͼ,̳CDirectXDrawPage,ԴԼ߳ 
    CFlcPage//Flc,ʱԶ޸ͼ,̳CDirectXDrawPage 
  
     ĿǰֻЩ,ԹҪʱ. 
class CPICPAGE 
{ 
protected: 
      char   picStyle;//ͼ 
      BOOL   CanWrite;//Ƿд 
      int    picWidth,picHeight;//ߴ 
      DWORD  activeMode;//̬,ͷ, 
      unsigned short useTimeMark;//ʹʱ,ʱδʹ,򱣴浽ļ 
      char   *programeBuf;//ôͼĸı, 
                         //ֽ֧űԶͼ 
      char  *lpImgBuf;//ͼڴ 
      long  imgBufLen;//ڴ泤 
      HDC    hDC;//׼豸,ָCDirectXDrawPageļ̳жЧ 
      BOOL   hasChg;//ͼǷѾı 
      BOOL   UseClip;//Ƿ趨ʾ 
      RECT   clipRc;//ʾ 
public: 
      CPICPAGE(); 
      ~CPICPAGE(); 
      virtual  void Destroy(void); 
      char  GetPicStyle(void); 
      BOOL  GetSize(int *w,int *h); 
      void  GetRect(RECT *lpRc); 
      char  *GetImgBuf(void); 
      BOOL  Load(char *lpFileName,long  startOfs=0);ļжȡ 
      virtual   BOOL  LoadFile(FILE *lpFileHandle,long startOfs=0){return FALSE;}; 
      virtual   void  BeginDraw(){};//Ǳ׼DirectXDraw,ٽ 
                                    //Windowı׼ͼζдʱҪHDC,д,Ҫ 
                                    //ͷ,ͷHDC󽵵ٶ 
      virtual   void  EndDraw(){};//ֹWindowı׼ͼζд,ͷHDC 
      virtual   HDC   GetHDC(void){return NULL;}; 
      virtual   void  Line(int bx,int by,int ex,int ey,COLORREF rgb); 
      virtual   void  drawStrgs(char *strg,short bx,short by,char drawBox,short choice); 
      virtual   void  Draw(RECT *lpRc,COLORREF *lpCr,char drawStyle,DWORD otherMess); 
      virtual   void  Fill(RECT *rc=NULL,COLORREF colorFill=0); 
      virtual   void  DrawRect(RECT *rc,COLORREF colorLeft,COLORREF colorRight, 
          COLORREF colorFill,COLORREF colorKey, DWORD drawStyle); 
      virtual   BOOL BltInView( CPICPAGE *lpDec, 
                 int srcInX, int srcInY,     //x,ysouRectBltdesλ 
                DWORD flap=0, RECT *DecView=NULL, RECT *souRectBlt=NULL,//ԴͼƬĿ 
                RECT *lpFillRect=NULL)  {return FALSE;}; 
      virtual   BOOL  FillRect(CPICPAGE *lpSou,RECT *lpSouRect=NULL,RECT lpDecRect=NULL) 
                        {return FALSE;}; 
      virtual   BOOL  Scroll(int scrollX,int scrollY,RECT *lpRect=NULL){return FALSE;}; 
      virtual   BOOL ChgSize(int chgWidth,int chgHeight,int mode=0) 
                         {return FALSE;};//0 óߴ,1 ıߴ 
       virtual   BOOL HasLost(void){return FALSE;}; //Ѿʧͼ 
       virtual   BOOL Scroll(int scrollX,int scrollY,COLORREF fillColor=0, 
          RECT *lpScrollRc=NULL){return FALSE;}; 
      virtual   void TimeTrace(vodi);//ʱ,ڴʱԼͼ 
}; 
  
class CDIBPAGE:public CPICPAGE 
{ 
   HDIB hDIB; 
   LPSTR lpDIBHdr; 
   unsigned aLineByte; 
   BYTE biBitCount; 
   char  style; 
   char *LpGetIMG(void); 

public: 
      CDIBPAGE(){picStyle=BMPPIC;}; 
      BOOL Creat(int width,int height,DWORD mode=0); 
      BOOL SetBmp(char *_lpImgBuf); 
      BOOL LoadFile(FILE *lpFileHandle,long  startOfs=0); 
      BOOL StretchDIBits(HDC  hDC,LPRECT  lpDCRect,LPRECT lpDIBRect,DWORD dwRop,BOOL canChg=FALSE); 
      BOOL Blt(HDC  hDC,LPRECT  lpDCRect,LPRECT  lpDIBRect,DWORD dwRop=SRCCOPY); 
      virtual   BOOL BltInView( CPICPAGE *lpDec, 
     int   srcInX, int srcInY,//x,ysouRectBltdesλ 
     DWORD flap=0, RECT *DecView=NULL, RECT *souRectBlt=NULL,//ԴͼƬĿ 
     RECT *lpFillRect=NULL); 
}; 
  
class CDirectPAGE:public CPICPAGE 
{ 
      LPDIRECTDRAWSURFACE surf; 
public: 
      CDirectPAGE(){surf=NULL;picStyle=DIRECTPIC;} 
      ~CDirectPAGE(); 
      void Destroy(void); 
      BOOL  Creat(int width,int height,DWORD mode=0); 
      LPDIRECTDRAWSURFACE GetSurface(void) {EndDraw();return surf;} 
      virtual BOOL LoadFile(FILE *lpFileHandle,long  startOfs=0); 
      HDC     GetHDC(void); 
      void    BeginDraw(); 
      void    EndDraw(); 
      virtual   BOOL BltInView( CPICPAGE *lpDec, 
     int   srcInX, int srcInY,//x,ysouRectBltdesλ 
     DWORD flap=0, RECT *DecView=NULL, RECT *souRectBlt=NULL,//ԴͼƬĿ 
     RECT *lpFillRect=NULL); 
      void  Fill(RECT *rc=NULL,COLORREF colorFill=0); 
      BOOL  Scroll(int scrollX,int scrollY,COLORREF fillColor=0, RECT *lpScrollRc=NULL); 
}; 
  
ֻоһЩõĽӿ,⻹һЩalphaͨBLT,line,ԼȵBLT,Line,ԹϷҪʱ.Ա׼DirectXDraw,ǿڿʼʱʹһЩwindowĿ⺯,ȻʱٸΪԼٶȸĺ.ϵͳʱһɹ,кڲŻ,Ҫһʼļϸ,ǾϵͳɰܵĹؼٶҪ. 
  
  
ͨ,µĹ,ϵͳʾһЩͼͶ,ʾйصݻ,һ½Դ.,ΪǲʵȽϼ. 
  
  

 