<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    訪問動態鏈接庫中的C++類和資源

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接 面我們來介紹如何訪問動態鏈接庫中的C++類和資源。其具體操作步驟如下:
    (1)創建一個基于對話框的工程,工程名稱為“AccessDll”。設計對話框資源如圖1所示。
     RFID設備管理軟件
    圖1  對話框資源設計窗口
    (2)定義一個名稱為CTextDlg的抽象類,因為需要訪問動態鏈接庫中的CTextDlg類,因此客戶端需要定義一個框架,即抽象類CTextDlg。
    class CTextDlg             //定義抽象類CTextDlg
    {
    public:
     virtual void __stdcall ShowTextDlg(char* pchText) = 0;  //定義純虛方法
    };
    (3)定義兩個函數指針,用于關聯動態鏈接庫中的全局函數。
    typedef CTextDlg*   (__stdcall *funGetTextDlg)();    //定義函數指針類型
    typedef void  ( __stdcall *funReleaseTextDlg)(CTextDlg* pTextDlg); //定義函數指針類型
    (4)處理“確定”按鈕的單擊事件,訪問動態鏈接庫中CTextDlg類的方法,并加載動態鏈接庫中的位圖資源。
    void CAccessDllDlg::OnOK() 
    {
     HMODULE hMod = LoadLibrary("ClassDll.dll");   //加載動態鏈接庫
     if (hMod != NULL)        //判斷是否加載成功
     {
      //獲取動態鏈接庫中的GetTextDlg函數
      funGetTextDlg GetTextDlg = (funGetTextDlg)GetProcAddress(hMod,"GetTextDlg");
      funReleaseTextDlg ReleaseTextDlg= (funReleaseTextDlg)GetProcAddress(hMod,
    "ReleaseTextDlg");//獲取動態鏈接庫中的ReleaseTextDlg 函數
      if (GetTextDlg != NULL && ReleaseTextDlg != NULL) //判斷函數指針是否為空
      {
       CTextDlg* pTextDlg =  GetTextDlg();  //調用動態鏈接庫中的方法,構造CTextDlg對象
       pTextDlg->ShowTextDlg("編程詞典");  //訪問CTextDlg類的ShowTextDlg方法
       ReleaseTextDlg(pTextDlg);    //釋放pTextDlg對象
      }
      FreeLibrary(hMod);       //卸載動態鏈接庫
     }
     //加載動態鏈接庫
    HMODULE hRes = LoadLibraryEx("ClassDll",NULL,LOAD_LIBRARY_AS_DATAFILE);
     if (hRes != NULL)        //判斷是否加載成功
     {
      //加載動態鏈接庫中的位圖,其中2000為動態鏈接庫中的位圖資源ID值
    HANDLE hBmp = LoadImage(hRes,MAKEINTRESOURCE(2000),IMAGE_BITMAP,0,0,0);
      if (hBmp != NULL)       //判斷加載位圖是否成功
      {
       m_BK.SetBitmap((HBITMAP)hBmp);   //在空間中顯示位圖
      }
      FreeLibrary(hRes);       //卸載動態鏈接庫
     }
    }
     提示:為了獲取動態鏈接庫中的資源,我們需要使用LoadLibraryEx函數以數據文件的形式加載動態鏈接庫。
    (5)運行程序,單擊“確定”按鈕,效果如圖2所示。
     RFID設備管理軟件
    圖2  訪問動態鏈接庫中的C++類和資源RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全