在ActiveX控件中如何动态调用DLL函数
2006-07-21 11:44:18 来源:WEB开发网核心提示: STDMETHODIMP CPosCtrl::ModifyPosDT(BSTR bstrDT){// TODO: Add your implementation code hereif(SetPosDateTime((char *)bstrDT)){return S_OK;}{return
STDMETHODIMP CPosCtrl::ModifyPosDT(BSTR bstrDT)
{
// TODO: Add your implementation code here
if(SetPosDateTime((char *)bstrDT))
{
return S_OK;
}
{
return S_FALSE;
}
}
//----------------------------------------------------------------------------//
// 功能:实现清空POS机内数据的函数。
// 输入/输出参数:无
// 版本:1.0
// 修改:
//----------------------------------------------------------------------------//
void CPosCtrl::ClearPos()
{
int n=1;
unsigned char cInput[257],cOutput[256];
BYTE byOutput,retVal;
for(int i=0;i<8;i++)
{
(*Pipe_control)(hCom,n); //多路控制
//清空POS机内的数据
if(::MessageBox(NULL,"是否要清空POS机内数据?","提示信息",MB_YESNO | MB_ICONQUESTION)==IDNO)
{
return;
}
retVal = Protocol(hCom,7,1,cInput,&byOutput,cOutput); //通信协议
if (!retVal)
{
retVal = Protocol(hCom,8,1,cInput,&byOutput,cOutput);
if (!retVal)
{
retVal = Protocol(hCom,9,1,cInput,&byOutput,cOutput);
if (!retVal)
{
retVal = Protocol(hCom,10,1,cInput,&byOutput,cOutput);
if (!retVal)
{
retVal = Protocol(hCom,11,1,cInput,&byOutput,cOutput);
}
}
}
::MessageBox(NULL,"POS机内数据已被清空!","提示信息",MB_OK | MB_ICONINFORMATION);
}
n=n<<1 ;
}
(*Protocol)(hCom,0x86,5,cInput,&byOutput,cOutput); //下载成功
(*Dev_escape)(hCom); //关闭多路控制
(*Pipe_control)(hCom,0); //多路控制复位
return;
}
//----------------------------------------------------------------------------//
// 功能:对外提供的清空POS机内数据的接口方法
// 输入/输出参数:无
// 版本:1.0
// 修改:
//----------------------------------------------------------------------------//
STDMETHODIMP CPosCtrl::EmptyPos()
{
// TODO: Add your implementation code here
ClearPos();
return S_OK;
}
下面是调用PosActiveX.Dll的效果,调用时,要先对其进行注册,否则调用是不会成功的.注册是在"Windows的开始菜单中调用"运行",在"运行"对话框中输入:regsvr32 C:\PosActiveX\PosActiveX.dll 注册成功后就可对COM口进行操作了。还有一点是要特别注意的,必须把你要在ActiveX控件调用的Dll文件拷贝到Windows\System目录(对于Win9x系统),对于NT,2000系统就要拷贝到WINNT\System32目录下才能正确的运行。
开发环境:Windows2000和VC6
测试环境:Windows200
更多精彩
赞助商链接
