在ActiveX控件中如何动态调用DLL函数
1个回答
展开全部
当然是DLL的了。生成好后加入一个接口叫IPosCtrl,当然了要在Web上用,所以生成的接口一定是要小所以选择Lite Control的。接口加好后,就要实现方法了。首先用接口一般都要对其进行初始化。所以加入一个叫Init(short nCom)的接口方法,该方法完成加载DLL和DLL中的功能函数,还有就是打开对POS机进行操作的COM口;还有一个是修改POS机的时间的方法叫ModifyPosDT(BSTR bstrDT);还有个是清空POS机中数据的方法--EmptyPos()。最后,当你不想用时就要关闭所打开的COM口--Quit()。在生成接口IPosCtrl时同时会生成CPosCtrl类。一般是把实现方法都写在类中,而接口只时输出该类中你想输出的方法。所以在类中就写了以下几个方法: InitDll()----加载DLL库和其中的功能函数;ExitDll()----卸载DLL库,用完后不卸载是在占用内存。所以它是少不了的。SetPosDateTime(char * pchDT)---设置POS机的时间。 ClearPos()----清空POS机中的记录。 在类中我就写了这几个方法。 // PosCtrl.cpp : Implementation of CPosCtrl #include "stdafx.h"#include "PosActiveX.h"#include "PosCtrl.h" //--------------------------------------------------------// Police.dll所用到的常量定义//--------------------------------------------------------#define Com_UpRecord 1#define Com_UpPoliceLen 2#define Com_UpSimpleDataLen 3#define Com_UpSimplePunishLen 4#define Com_UpGeneralDataLen 5#define Com_UpGeneralPunishLen 6 #define Com_EmptyPolice 7#define Com_EmptySimpleData 8#define Com_EmptySimplePunish 9#define Com_EmptyGeneralData 10#define Com_EmptyGeneralPunish 11 #define Com_DownRecord 0x80#define Com_DownStreetCodeLen 0x81#define Com_DownBlackListLen 0x82#define Com_DownPeccancySimpleLen 0x83#define Com_DownPeccancyGeneralLen 0x84#define Com_DownDateTime 0x85#define Com_Exit 0x86#define Com_Init 0x87 #define Err_UpSimpleDataLen 0#define Err_UpSimplePunishLen 1#define Err_UpGeneralDataLen 2#define Err_UpGeneralPunishLen 3#define Err_UpPoliceLen 4#define Err_UpRecord 5#define Err_DownStreetCodeLen 6#define Err_DownSimplePeccancyCodeLen 7#define Err_DownGeneralPeccancyCodeLen 8#define Err_DownBlackList 9#define Err_DownDateTime 10#define Err_EmptyData 11#define Err_GetCode 12; #define Const_Terminator 0x20 #pragma data_seg("mydata") static HINSTANCE DLLInst = NULL; //动态库句柄 #pragma data_seg() // HANDLE hCom; //COM串口句柄 //------------------------------------------------------//POLICE.DLL动态库函数功能定义//------------------------------------------------------HANDLE (__stdcall *Init_comm)(LPSTR str);//初始化通信口BYTE (__stdcall *Exit)(HANDLE hCom);//关闭通信口BYTE (__stdcall *Protocol)(HANDLE hCom,BYTE cmd,BYTE len,BYTE *_dt,BYTE *prlen,BYTE *prdt);//通信协议BYTE (__stdcall *Pipe_control)(HANDLE hCom,BYTE mode);//多路控制typedefBYTE (__stdcall *Dev_escape)(HANDLE hCom);//断开多路控制 //---------------------------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询