VC 純資源DLL製作及調用

來源:互聯網
上載者:User
純資源 DLL 是僅包含資源(標、位元影像、字串和對話方塊)的 DLL。使用純資源 DLL 是在多個程式之間共用同一組資源的好方法。提供其資源被針對多種語言進行本地化的應用程式也是一種好方法。若要建立純資源 DLL,請建立一個新的 Win32 DLL(非 MFC)項目,並將資源添加到此項目。
  • 在“建立項目”對話方塊中選擇“Win32 項目”,並在“Win32 項目嚮導”中指定 DLL 項目類型。

  • 為 DLL 建立一個包含資源(如字串或菜單)的新資源指令碼,並儲存該 .rc 檔案。如果該.rc檔案包含位元影像用記事本開啟它,可以看到下面這樣的一段

  • DIB_BKGD_HF             BITMAP            "bkgd_**.bmp"
    DIB_BKGD_GT  BITMAP    "bkgd_***.bmp"
    DIB_BKGD_BF  BITMAP    "bkgd_*****.bmp"

  • 這些就是針對位元影像的申明,將相應的位元影像添加到這個裡面就行了。

  • “項目”菜單上單擊“添加現有項”,然後在項目中插入這個新的 .rc 檔案。

  • 指定 /NOENTRY 連結器選項。/NOENTRY 防止連結器將 _main 引用連結到 DLL 中;此選項是建立純資源 DLL 所必需的。

  • 產生 DLL。

使用純資源 DLL 的應用程式應調用 LoadLibrary顯式連結到 DLL。若要訪問資源,請調用一般函數 FindResourceLoadResource,這兩個函數對任何類型的資源都有效,或調用下列資源特定的函數之一:

  • FormatMessage

  • LoadAccelerators

  • LoadBitmap

  • LoadCursor

  • LoadIcon

  • LoadMenu

  • LoadString

使用完資源後,應用程式應調用 FreeLibrary

下面部份是說明一下資源中的BMP如何動態載入並顯示

    hmodule = LoadLibrary("ExtendDLL.dll");
    HDC   m_hdcMem;
    m_hdcMem = CreateCompatibleDC(hdc);
    BITMAP bm;
    RECT rect;

    HBITMAP    hBitmap =  LoadBitmap(hmodule,"DIB_BKGD_HF");   //MAKEINTRESOURCE(IDB_BITMAP1)
    //HBITMAP    hBitmap = ( HBITMAP )LoadImage( hmodule, "DIB_BKGD_HF",IMAGE_BITMAP,0,0,LR_DEFAULTSIZE);
    GetObject( hBitmap, sizeof BITMAP, &bm);
    SelectObject( m_hdcMem, hBitmap);
    GetClientRect( hWnd, &rect);
    //::SetStretchBltMode(hdc,COLORONCOLOR);
    //::StretchBlt(hdc, rect.left, rect.top, rect.right, rect.bottom, m_hdcMem, 0, 0, bm.bmWidth, bm.bmHeight,SRCCOPY);
    BitBlt(hdc,0,0,bm.bmWidth,bm.bmHeight,m_hdcMem,0,0,SRCCOPY);
    ReleaseDC( hWnd, m_hdcMem );
    FreeLibrary(hmodule);

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.