程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 在ActiveX控件中如何動態調用DLL函數

在ActiveX控件中如何動態調用DLL函數

編輯:關於C語言

 

 

先用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);//斷開多路控制

 

 

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved