CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

求各位高人帮忙。先行谢过!

楼主ymkj(ymkj)2001-06-12 00:05:00 在 Delphi / VCL组件开发及应用 提问

下面是VC++的一段程序,那位高人能帮我用DELPHI重写,  
  我十在是不会C++,加上对DELPHI的类类型理解不透,  
  求各位帮忙。先行谢过!  
   
  class   CViewCtlClass  
  {  
   
  public:  
  BOOL   m_bResourceAllocated;  
  DWORD   m_dwSlotNumber;  
  HWND   m_hDisplayWnd;  
  RECT   m_rOutputArea;  
  int   m_iXGlobalPos;  
  int   m_iYGlobalPos;  
   
  DWORD   m_dwFrameCount;  
  HANDLE   m_hWriteRingBufferEvent;  
  HANDLE   m_hDisplayStopEvent;  
  HANDLE   m_hSourceFilterSetupOK;  
  HANDLE m_hThreadReadyEvent;  
   
  char   m_csTempDirectory[MAX_PATH];  
  char   m_fFilename[MAX_PATH];  
   
  VIEWCTL_VIDEO_DATATYPE   m_dwDataType;  
   
  //VIEWCTL_SNAPSHOT   m_SnapShot;  
   
  BOOL   m_fDoSnapShot;  
   
  DWORD   m_dwViewDelayCount;  
  DWORD   m_dwBufferCount;  
   
  BOOL   m_fDisplayCreated;  
  BOOL   m_fDirectDrawInit;  
  BOOL   m_fUseDirectDraw;  
  BOOL   m_fUseDirectShow;  
  BOOL   m_fUseScreenAxis;  
  //   Thread   control  
  BYTE   *m_pRGBBuf;  
  HANDLE   m_hViewControlThread;  
  DWORD   m_dwViewControlThreadID;  
  BYTE*   m_RingBuffer[RING_BUFFER_COUNT];  
  DWORD   m_dwWriteIndex;  
  DWORD   m_dwReadIndex;  
  BOOL     m_bStopDisplay;  
  DWORD   m_dwWriteFrameSkipedCount;  
  DWORD   m_dwReadFrameSkipedCount;  
   
  DWORD   m_dwImageWidth;  
  DWORD   m_dwImageHeight;  
  DWORD   m_dwCount;  
  DWORD   m_dwDisplayInterval;  
   
  BITMAPFILEHEADER   m_bmpHeader;  
  BITMAPINFO   m_bmpInfo;  
   
  //color   key  
  BYTE m_bColorKeyRed;  
  BYTE m_bColorKeyGreen;  
  BYTE m_bColorKeyBlue;  
   
  LPVOID   m_lpDrawFrameObj;  
   
  public:  
  CViewCtlClass();  
  ~CViewCtlClass();  
  int   CreateDisplay(VIEWCTL_DISPLAYINFO   nDisplayInfo);  
  int   CloseDisplay(BOOL   bCleanUp);  
  int   HandleVideoBuffer(COMMON_BUFFER_INFO   nVideoBufferInfo);  
  BOOL   IsMediaPlaying(DWORD   *dwPlayTime);  
  DWORD   SetOutputArea(RECT   r);  
  void   CallbackFunction(VIEWCTL_PDecoderBegin   theCBFunction);  
   
  void   Playback(char   *filename);  
  void   SetDiscontinuous(DWORD   dwPauseTicks);  
   
  BOOL   CreateViewControlThread();  
  void   Displayer_LVPT();  
  BOOL   AllocateBuffers();  
  BOOL   FreeBuffers();  
  BOOL   WriteRingBuffer(BYTE   *lpBuffer,   DWORD   dwNumberOfByte);  
  BOOL   DisplayRingBuffer();  
   
  static   DWORD   InitialThreadProc(LPVOID   pv)   {  
  CViewCtlClass   *   pThis   =   (CViewCtlClass*)   pv;  
  return   pThis->ViewControlThread(NULL);  
          };  
  DWORD   WINAPI   ViewControlThread(LPVOID   lpdwParam);  
  BOOL   FreeResources();  
   
  BOOL   CreateBMPInfo();  
  BOOL   DisplayFrame(BYTE   *lpBuffer,   HDC   hDC,   RECT   rOutputArea,   DWORD   dwImageWidth,   DWORD   dwImageHeight);  
   
  void   InitDDraw();  
  void   CloseDDraw();  
   
  };  
  问题点数:24、回复次数:8Top

1 楼ymkj(ymkj)回复于 2001-06-12 12:22:00 得分 0

求助!Top

2 楼inprises(何许)回复于 2001-06-12 13:10:00 得分 0

没问题,要时间。Top

3 楼wonderxin(颜鑫的忠实崇拜者★★★★★)回复于 2001-06-12 13:11:00 得分 0

遗憾,我只是delphi和vc的初学者,无能为力------给你提前贴子Top

4 楼fkang0411(康康)回复于 2001-06-12 13:13:00 得分 0

关注Top

5 楼zengyufeng(御风)回复于 2001-06-12 13:55:00 得分 24

    TViewCtlClass   =   class  
      private  
          m_bResourceAllocated:   boolean;  
          m_dwSlotNumber:   DWORD;  
          m_hDisplayWnd:   HWND;  
          m_rOutputArea:   TRect;  
          m_iXGlobalPos:   integer;  
          m_iYGlobalPos:   integer;  
   
          m_dwFrameCount:   DWORD;  
          m_hWriteRingBufferEvent:   THANDLE;  
          m_hDisplayStopEvent:   THANDLE;  
          m_hSourceFilterSetupOK:   THANDLE;  
          m_hThreadReadyEvent:   THANDLE;  
   
          m_csTempDirectory:   array[0..MAX_PATH   -   1]   of   char;  
          m_fFilename:   array[0..MAX_PATH   -   1]   of   char;   ;  
   
          m_dwDataType:   VIEWCTL_VIDEO_DATATYPE;  
   
          //VIEWCTL_SNAPSHOT   m_SnapShot;  
   
          m_fDoSnapShot:   boolean;  
   
          m_dwViewDelayCount:   DWORD;  
          m_dwBufferCount:   DWORD;  
   
          m_fDisplayCreated:   boolean;  
          m_fDirectDrawInit:   boolean;  
          m_fUseDirectDraw:   boolean;  
          m_fUseDirectShow:   boolean;  
          m_fUseScreenAxis:   boolean;  
          //   Thread   control  
          m_pRGBBuf:   PByte;  
          m_hViewControlThread:   THANDLE;  
          m_dwViewControlThreadID:   DWORD;  
          m_RingBuffer:   array[0..RING_BUFFER_COUNT   -   1]   of   PByte;  
          m_dwWriteIndex:   DWORD;  
          m_dwReadIndex:   DWORD;  
          m_bStopDisplay:   boolean;  
          m_dwWriteFrameSkipedCount:   DWORD;  
          m_dwReadFrameSkipedCount:   DWORD;  
   
          m_dwImageWidth:   DWORD;  
          m_dwImageHeight:   DWORD;  
          m_dwCount:   DWORD;  
          m_dwDisplayInterval:   DWORD;  
   
          m_bmpHeader:   BITMAPFILEHEADER;  
          m_bmpInfo:   BITMAPINFO;  
   
          //color   key  
          m_bColorKeyRed:   byte;  
          BYTE   m_bColorKeyGreen:   byte;  
          BYTE   m_bColorKeyBlue:   byte;  
   
          m_lpDrawFrameObj:   pointer;  
   
      public:  
          constructor   Create;  
          destructor   Destroy;   override;  
          function   CreateDisplay(   nDisplayInfo:   VIEWCTL_DISPLAYINFO   ):   integer;  
          function   CloseDisplay(   bCleanUp:   boolean   ):   integer;  
          function   THANDLEVideoBuffer(   nVideoBufferInfo:   COMMON_BUFFER_INFO   ):   integer;  
          function   IsMediaPlaying(   dwPlayTime:   PDWORD   ):   boolean;  
          function   SetOutputArea(   r:   TRect   ):   DWORD;  
          procedure   CallbackFunction(   theCBFunction:   VIEWCTL_PDecoderBegin   );  
   
          procedure   Playback(   filename:   string   );  
          procedure   SetDiscontinuous(   dwPauseTicks:   DWORD   );  
   
          function   CreateViewControlThread:   boolean;  
          procedure   Displayer_LVPT;  
          function   AllocateBuffers:   boolean;  
          function   FreeBuffers:   boolean;  
          function   WriteRingBuffer(   lpBuffer:   PByte;   dwNumberOfByte:   DWORD   ):   boolean;  
          function   DisplayRingBuffer:   boolean;  
   
          function   InitialThreadProc(   pv:   pointer   ):   DWORD;  
   
          function   WINAPI   ViewControlThread(   lpdwParam:   pointer   ):   DWORD;  
          function   FreeResources:   boolean;  
   
          function   CreateBMPInfo:   boolean;  
          function   DisplayFrame(   lpBuffer:   PByte;   DC:   HDC;   rOutputArea:   TRect;   DWORD   dwImageWidth,   dwImageHeight:   DWORD   ):   boolean;  
   
          procedure   InitDDraw;  
          procedure   CloseDDraw;  
      end;  
  Top

6 楼ymkj(ymkj)回复于 2001-06-12 20:43:00 得分 0

zengyufeng(御风)您好!  
  我还有一些问题,可否留个通讯方法?  
  E_mail:ymkj@263.netTop

7 楼ymkj(ymkj)回复于 2001-06-13 13:07:00 得分 0

我按zengyufeng(御风)朋友说的方法做,  
  出现的问题是:  
  所有的函数都是Unsatisfied   forward   or   external   declaration:   'TViewCtlClass.函数名'  
  包括Create和DestroyTop

8 楼ymkj(ymkj)回复于 2001-06-14 21:59:00 得分 0

求助!   Top

相关问题

  • 200 分求教,估计有人知道吧,请教各位,先行谢过!!!!!!!!!!!!
  • 先行谢过,关于时间处理,望各位大侠关注(100)
  • 一个十分简单webservice问题,请达人指教!先行谢过!
  • 各位老大,哪有win2000专业版可下,在此先行谢谢过了!!!(如找到百分相赠)
  • 如何使页面不执行如下代码??小妹先行谢过各位大虾了。。急等!!!
  • 高手请进。先行谢过。
  • JavaScript小问题,先行谢过!
  • 高分求解:1.如何往List 中添加button? 2.如果在该button中添加头像(Icon)又该怎么做?有劳各位大侠,先行谢过!!
  • 简单的触发器问题,更新时另外一个表的相应字段也跟着更新!请各位帮忙,先行谢过
  • 请问ORACLE的Developer/2000在哪儿可以找到?先行谢过!

关键词

  • delphi
  • viewctl
  • cviewctlclass
  • routputarea
  • dword
  • bool
  • thandle
  • snapshot
  • boolean
  • lpvoid

得分解答快速导航

  • 帖主:ymkj
  • zengyufeng

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo