设为首页 加入收藏

TOP

在ActiveX控件中如何动态调用DLL函数
2014-11-23 20:16:23 来源: 作者: 【 】 浏览:7
Tags:ActiveX 控件 如何 动态 调用 DLL 函数

先用ATL COM AppWizard生成一个名叫PosActiveX的工程,生成时系统会问你是生成DLL还是EXE。当然是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机中的记录。

在类中我就写了这几个方法。

在说一下我要输出的接口方法有:

Init(short nCom)----初化接口,为调用做准备。

Quit()----退出程序时,调用它退出接口调用。

ModifyPosDT(BSTR bstrDT)----设置POS机时间。

EmptyPos()----清空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);//多路控制typedef

BYTE (__stdcall *Dev_escape)(HANDLE hCom);//断开多路控制

//---------------------------------------------

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C 不确定参数个数的函数的实现 下一篇如何改变控件的颜色

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: