求各位高人帮忙。先行谢过!
下面是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在哪儿可以找到?先行谢过!




