请问在delphi 如何编程(100分)

  • 主题发起人 主题发起人 shuang
  • 开始时间 开始时间
S

shuang

Unregistered / Unconfirmed
GUEST, unregistred user!

C++里的函数:
Hik_PlayM4_SetFileRefCallBack(LONG nPort, void (__stdcall *pFileRefDone)(DWORD nPort,DWORD nUser),DWORD nUser);设置回调函数指针,文件索引建立后回调。为了能在文件中准确快速的定位,我们在文件打开的时候生成文件索引
输入参数:
SetFileRefCallBack:回调函数指针
nUser:用户数据
回调函数声明 Void fileRefDone(DWord nPort,Dword nUser)
参数说明:nPort播放器通道号
nUser用户数据
说明:它是多媒体播放器中的一个在文件打开后播放之前用的一个
建立索引的函数,建立索引的目的是为了可以实现,可以任意指定时间点进行播放。
这是播放器程序(VC++)的一部分
//完成文件索引回调函数
void CALLBACK FileRefDone(DWORD nReserved,DWORD nUser);
/////////////////////////////////////////////////////////////////////////////
//功能:打开文件
////////////////////////////////////////////////////////////////////////////
void CPlayerDlg::OnFileOpen()
{
//如果已经打开,则先关闭;
if(m_bOpen)
{
if(m_bStreamType)
CloseStream();
else
CloseFile();
}
if(!BrowseFile(&m_strPlayFileName))
return;
if(m_bStreamType)
OpenStream();
else
OpenFile();

}
void CPlayerDlg::OpenFile()
{
TRACE("Open fileNAME IS:%s",m_strPlayFileName);
//生成文件索引;
Hik_PlayM4_SetFileRefCallBack(PORT,FileRefDone,(DWORD)this);
if(!Hik_PlayM4_OpenFile(PORT,m_strPlayFileName.GetBuffer(m_strPlayFileName.GetLength())))
{
m_strPlayFileName="";
CString csError;
csError.Format("文件打不开(%d)",Hik_PlayM4_GetLastError(PORT));
MessageBox(csError);
return ;
}
SetOpenState();
m_nMaxFileTime=Hik_PlayM4_GetFileTime(PORT);
if(!m_nMaxFileTime)
{
MessageBox("文件总时间为0");
return;
}
m_nTotalHour=m_nMaxFileTime/3600;
m_nTotalMinute=(m_nMaxFileTime%3600)/60;
m_nTotalSecond=m_nMaxFileTime%60;
m_nTotalFrames=Hik_PlayM4_GetFileTotalFrames(PORT);
//如果要设置在此设置;
//Hik_PlayM4_SetDisplayBuf(PORT,25);
Play();

}
////////////////////////////////////////////////////////////////////////
//功能:文件索引完成后回调此函数,通知用户可以使用相关接口
///////////////////////////////////////////////////////////////////////
void CALLBACK FileRefDone(DWORD nReserved,DWORD nUser)
{
CPlayerDlg* pOwner=(CPlayerDlg*)nUser;
pOwner->m_bFileRefCreated=TRUE;
pOwner->ChangeUI();
}
//////////////////////////////////////////////////////////////////////////
//功能:文件索引完成后,改变界面;
//////////////////////////////////////////////////////////////////////////
void CPlayerDlg::ChangeUI()
{
if(m_bFileRefCreated)
{
CButton *pButton;
pButton = (CButton *)GetDlgItem(IDC_STEPBACK);
pButton->EnableWindow(TRUE);

m_pMainMenu->EnableMenuItem(ID_CUT_FILE,MF_ENABLED);
m_pMainMenu->EnableMenuItem(ID_SEEK,MF_ENABLED);
}
}

请问
(1)声明部分:
void CALLBACK FileRefDone(DWORD nReserved,DWORD nUser);
void CALLBACK FileRefDone(DWORD nReserved,DWORD nUser)
{
CPlayerDlg* pOwner=(CPlayerDlg*)nUser;
pOwner->m_bFileRefCreated=TRUE;
pOwner->ChangeUI();
}
(2)调用部分:
void CPlayerDlg::OpenFile()
{
TRACE("Open fileNAME IS:%s",m_strPlayFileName);
//生成文件索引;
Hik_PlayM4_SetFileRefCallBack(PORT,FileRefDone,(DWORD)this);
.........
}
请教高手在delphi中如何用?
 

:(
帮你up吧:)
 
大家来帮帮忙吧
 
我对vc不熟悉!
 
后退
顶部