詳解MFC/C++調(diào)用易語言的整數(shù)型和文本型與VS2010互動
1、LoadDll.cpp
#include "StdAfx.h" #include "LoadDLL.h" pMFCdll_OneVOID_OneVOID MFCdll_OneVOID_OneVOID; pMFCdll_OneWORD_OneVOID MFCdll_OneWORD_OneVOID; pMFCdll_OneCHAR_OneVOID MFCdll_OneCHAR_OneVOID; pMFCdll_OneWORD_OneWORD MFCdll_OneWORD_OneWORD; pMFCdll_OneWORD_TwoWORD MFCdll_OneWORD_TwoWORD; pMFCdll_OneWORD_ThreeWORD MFCdll_OneWORD_ThreeWORD; pMFCdll_OneWORD_FourWORD MFCdll_OneWORD_FourWORD; pMFCdll_OneWORD_FiveWORD MFCdll_OneWORD_FiveWORD; pMFCdll_OneWORD_SixWORD MFCdll_OneWORD_SixWORD; pMFCdll_OneWORD_OneChar MFCdll_OneWORD_OneChar; pMFCdll_OneWORD_TwoChar MFCdll_OneWORD_TwoChar; pMFCdll_OneWORD_ThreeChar MFCdll_OneWORD_ThreeChar; pMFCdll_OneWORD_FourChar MFCdll_OneWORD_FourChar; pMFCdll_OneWORD_FiveChar MFCdll_OneWORD_FiveChar; pMFCdll_OneWORD_SixChar MFCdll_OneWORD_SixChar; pMFCdll_OneChar_OneChar MFCdll_OneChar_OneChar; pMFCdll_OneChar_TwoChar MFCdll_OneChar_TwoChar; pMFCdll_OneChar_ThreeChar MFCdll_OneChar_ThreeChar; pMFCdll_OneChar_FourChar MFCdll_OneChar_FourChar; pMFCdll_OneChar_FiveChar MFCdll_OneChar_FiveChar; pMFCdll_OneChar_SixChar MFCdll_OneChar_SixChar; pMFCdll_OneChar_OneWORD MFCdll_OneChar_OneWORD; pMFCdll_OneChar_TwoWORD MFCdll_OneChar_TwoWORD; pMFCdll_OneChar_ThreeWORD MFCdll_OneChar_ThreeWORD; pMFCdll_OneChar_FourWORD MFCdll_OneChar_FourWORD; pMFCdll_OneChar_FiveWORD MFCdll_OneChar_FiveWORD; pMFCdll_OneChar_SixWORD MFCdll_OneChar_SixWORD; HINSTANCE g_Hinstance; //實例句柄 //加載DLL BOOL LoadDll(char *name) { if(g_Hinstance != NULL) return TRUE; //如果g_Hinstance不為空就返回 MFCdll_OneWORD_SixWORD = NULL; //這里是加載ZJY_SoftOverTime用的 MFCdll_OneCHAR_OneVOID = NULL; //這里是加載ZJY_GetSystemDisk用的 g_Hinstance = LoadLibrary(name); if(g_Hinstance == NULL) { // AfxMessageBox("加載dll動態(tài)庫失敗!"); return FALSE; } MFCdll_OneWORD_SixWORD = (pMFCdll_OneWORD_SixWORD)GetProcAddress(g_Hinstance, "ZJY_SoftOverTime"); MFCdll_OneCHAR_OneVOID = (pMFCdll_OneCHAR_OneVOID)GetProcAddress(g_Hinstance, "ZJY_GetSystemDisk"); if(NULL == MFCdll_OneWORD_SixWORD || NULL == MFCdll_OneCHAR_OneVOID) { // AfxMessageBox("加載動態(tài)庫MFCCallBackDllTest函數(shù)失敗"); FreeLibrary(g_Hinstance); g_Hinstance = NULL; return FALSE; } return TRUE; } //卸載DLL void UninstallDll() { if (g_Hinstance != NULL) { MFCdll_OneWORD_SixWORD = NULL; MFCdll_OneCHAR_OneVOID = NULL; FreeLibrary(g_Hinstance); g_Hinstance = NULL; } }
2、LoadDll.h
#ifndef __MFCCLOADDLL_H #define __MFCCLOADDLL_H #include <windows.h> BOOL LoadDll(char *name); //加載DLL void UninstallDll(); //卸載DLL /************************************************************************/ /*易語言:沒參數(shù)帶返回值的,不帶的。 /***********************************************************************/ typedef void (WINAPI *pMFCdll_OneVOID_OneVOID) (); //返回VOID typedef WORD (WINAPI *pMFCdll_OneWORD_OneVOID) (); //返回WORD typedef char * (WINAPI *pMFCdll_OneCHAR_OneVOID) (); //返回CHAR /************************************************************************/ /*易語言:整數(shù)型接口 <返回值,整數(shù)型>(整數(shù)型 a, 整數(shù)型 b,整數(shù)型 c,整數(shù)型 d,整數(shù)型 e,整數(shù)型 f)*/ /***********************************************************************/ typedef WORD (WINAPI *pMFCdll_OneWORD_OneWORD) (WORD a); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_TwoWORD) (WORD a , WORD b); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_ThreeWORD)(WORD a , WORD b ,WORD c); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_FourWORD) (WORD a , WORD b ,WORD c ,WORD d); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_FiveWORD) (WORD a , WORD b ,WORD c ,WORD d ,WORD e); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_SixWORD) (WORD a , WORD b ,WORD c ,WORD d ,WORD e,WORD f); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_OneChar) (char * a); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_TwoChar) (char * a , char * b); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_ThreeChar)(char * a , char * b ,char * c); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_FourChar) (char * a , char * b ,char * c ,char * d); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_FiveChar) (char * a , char * b ,char * c ,char * d ,char * e); //返回WORD typedef WORD (WINAPI *pMFCdll_OneWORD_SixChar) (char * a , char * b ,char * c ,char * d ,char * e,char * f); //返回WORD /************************************************************************/ /*易語言:字符串接口 <返回值,CString>(文本型 a, 整數(shù)型 b,整數(shù)型 c,整數(shù)型 d,整數(shù)型 e,整數(shù)型 f)*/ /***********************************************************************/ typedef char * (WINAPI *pMFCdll_OneChar_OneChar) (char *); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_TwoChar) (char * , char *); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_ThreeChar) (char * , char * ,char *); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_FourChar) (char * , char * ,char * ,char *); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_FiveChar) (char * , char * ,char * ,char * ,char *); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_SixChar) (char * , char * ,char * ,char * ,char * ,char *); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_OneWORD) (WORD a); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_TwoWORD) (WORD a , WORD b); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_ThreeWORD) (WORD a , WORD b ,WORD c); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_FourWORD) (WORD a , WORD b ,WORD c ,WORD d); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_FiveWORD) (WORD a , WORD b ,WORD c ,WORD d ,WORD e); //返回cahr * typedef char * (WINAPI *pMFCdll_OneChar_SixWORD) (WORD a , WORD b ,WORD c ,WORD d ,WORD e,WORD f); //返回cahr * /************************************************************************/ /*易語言使用外部定義 /***********************************************************************/ extern pMFCdll_OneVOID_OneVOID MFCdll_OneVOID_OneVOID; extern pMFCdll_OneWORD_OneVOID MFCdll_OneWORD_OneVOID; extern pMFCdll_OneCHAR_OneVOID MFCdll_OneCHAR_OneVOID; extern pMFCdll_OneWORD_OneWORD MFCdll_OneWORD_OneWORD; extern pMFCdll_OneWORD_TwoWORD MFCdll_OneWORD_TwoWORD; extern pMFCdll_OneWORD_ThreeWORD MFCdll_OneWORD_ThreeWORD; extern pMFCdll_OneWORD_FourWORD MFCdll_OneWORD_FourWORD; extern pMFCdll_OneWORD_FiveWORD MFCdll_OneWORD_FiveWORD; extern pMFCdll_OneWORD_SixWORD MFCdll_OneWORD_SixWORD; extern pMFCdll_OneWORD_OneChar MFCdll_OneWORD_OneChar; extern pMFCdll_OneWORD_TwoChar MFCdll_OneWORD_TwoChar; extern pMFCdll_OneWORD_ThreeChar MFCdll_OneWORD_ThreeChar; extern pMFCdll_OneWORD_FourChar MFCdll_OneWORD_FourChar; extern pMFCdll_OneWORD_FiveChar MFCdll_OneWORD_FiveChar; extern pMFCdll_OneWORD_SixChar MFCdll_OneWORD_SixChar; extern pMFCdll_OneChar_OneChar MFCdll_OneChar_OneChar; extern pMFCdll_OneChar_TwoChar MFCdll_OneChar_TwoChar; extern pMFCdll_OneChar_ThreeChar MFCdll_OneChar_ThreeChar; extern pMFCdll_OneChar_FourChar MFCdll_OneChar_FourChar; extern pMFCdll_OneChar_FiveChar MFCdll_OneChar_FiveChar; extern pMFCdll_OneChar_SixChar MFCdll_OneChar_SixChar; extern pMFCdll_OneChar_OneWORD MFCdll_OneChar_OneWORD; extern pMFCdll_OneChar_TwoWORD MFCdll_OneChar_TwoWORD; extern pMFCdll_OneChar_ThreeWORD MFCdll_OneChar_ThreeWORD; extern pMFCdll_OneChar_FourWORD MFCdll_OneChar_FourWORD; extern pMFCdll_OneChar_FiveWORD MFCdll_OneChar_FiveWORD; extern pMFCdll_OneChar_SixWORD MFCdll_OneChar_SixWORD; #endif //MFCCLOADDLL_H
3、這里為不帶Dlg的那個項目文件
// testDll.cpp : 定義應(yīng)用程序的類行為。 // #include "stdafx.h" #include "testDll.h" #include "testDllDlg.h" #include "LoadDLL.h" //*************原來的代碼不動****************** BOOL CtestDllApp::InitInstance() { //這里上面不動,下面加載DLL,就是游戲讀條一樣的,現(xiàn)在只有一個 if(LoadDll("C://Users//Administrator//Desktop//ZJDLLV1.0.3.dll") == FALSE) { AfxMessageBox("ZJDLLV1.0.3.dll,加載失敗!"); AfxGetMainWnd()->CloseWindow(); } else { AfxMessageBox("ZJDLLV1.0.3.dll,加載成功!"); } //下面系統(tǒng)的 CtestDllDlg dlg; m_pMainWnd = &dlg; INT_PTR nResponse = dlg.DoModal(); if (nResponse == IDOK) { // TODO: 在此放置處理何時用 // “確定”來關(guān)閉對話框的代碼 } else if (nResponse == IDCANCEL) { // TODO: 在此放置處理何時用 // “取消”來關(guān)閉對話框的代碼 } // 刪除上面創(chuàng)建的 shell 管理器。 if (pShellManager != NULL) { delete pShellManager; } // 由于對話框已關(guān)閉,所以將返回 FALSE 以便退出應(yīng)用程序, // 而不是啟動應(yīng)用程序的消息泵。 return FALSE; }
4、這里帶Dlg的那個項目文件
#include "LoadDLL.h" //-------中間的不動--------- //這里是按鈕單機(jī)自動生成的槽函數(shù) void CtestDllDlg::OnBnClickedOk() { WORD reslut = MFCdll_OneWORD_SixWORD(2017,9,7,15,23,0); if(reslut == 1) { AfxMessageBox("軟件可正常使用!"); } else if(reslut == 0) { AfxMessageBox("軟件已過期!"); } AfxMessageBox(MFCdll_OneCHAR_OneVOID()); }
5、教程結(jié)束。
上一篇:C語言實現(xiàn)AT指令A(yù)SCII碼的拼接處理流程
欄 目:C語言
下一篇:詳解c語言中的 strcpy和strncpy字符串函數(shù)使用
本文標(biāo)題:詳解MFC/C++調(diào)用易語言的整數(shù)型和文本型與VS2010互動
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/654.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
- 01-10求子數(shù)組最大和的解決方法詳解
- 01-10深入二叉樹兩個結(jié)點的最低共同父結(jié)點的詳解
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計- 解析最少換車次數(shù)的問題詳解
- 01-10數(shù)據(jù)結(jié)構(gòu)課程設(shè)計-用棧實現(xiàn)表達(dá)式求值的方法詳解
- 01-10HDOJ 1443 約瑟夫環(huán)的最新應(yīng)用分析詳解
- 01-10深入理解C++中常見的關(guān)鍵字含義
- 01-10使用C++實現(xiàn)全排列算法的方法詳解
- 01-10如何查看進(jìn)程實際的內(nèi)存占用情況詳解
- 01-10深入Main函數(shù)中的參數(shù)argc,argv的使用詳解


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改