2012-09-24 95 views
0

連接資源我都基於類TCustomControl得出我自己的分量。我需要嵌入以.png格式存儲的組件位圖資源。我加入到項目文件resources.rc與此內容:C++ Builder的XE2 - 與組件

AP_LOGO RCDATA .\AP_logo_RGB_transparent.png 

編制是全成。組件靜態鏈接到項目。當我運行試圖訪問嵌入的資源時,它拋出以下錯誤應用程序:

Project raised exception class EResNotFound with message 'Resource AP_LOGO not found'. 

在源代碼訪問的位圖資源下面幾行:

Graphics::TBitmap *bmp = new Graphics::TBitmap(); 
    HINST handle = FindClassHInstance(__classid(TVctDiag2)); 
    bmp->LoadFromResourceName(handle, L"AP_LOGO"); // <----- exception apppers there 

當我打開可執行文件的資源編輯心不是任何名爲「AP_LOGO」的資源。爲什麼?

回答

0

它不起作用,因爲TBitmap::LoadFromResource...()方法僅查找BITMAP資源,但是您已定義RCDATA資源。如果你不改變你的資源類型,那麼你將不得不使用TResourceStream代替,例如:

HINST handle = FindClassHInstance(__classid(TVctDiag2)); 
TResourceStream *strm = new TResourceStream(handle, L"AP_LOGO", RT_RCDATA); 
Graphics::TBitmap *bmp = new Graphics::TBitmap(); 
bmp->LoadFromStream(strm); 
delete strm; 

有了,賽義夫,你不能加載PNG資源爲TBitmap開始。如果您必須使用PNG資源,則必須改用PNG類,如TPngImage

+0

未找到資源'AP_LOGO'。 – truthseeker

+0

然後你的資源實際上並沒有被編譯到你的組件包中。你確定你將.rc文件添加到項目中嗎?您是否嘗試過使用IDE自帶的內置資源管理器,而不是使用.rc文件? –

+0

當我編譯組件作爲動態鏈接庫.bpl,我可以看到它的AP_LOGO資源。當我靜態鏈接組件時,AP_LOGO資源未鏈接到可執行文件。至於內置的資源管理器 - 不,我沒有。 – truthseeker