線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1264
推到 Plurk!
推到 Facebook!

請問dll中包含res的時候

答題得分者是:hagar
hkstm
一般會員


發表:23
回覆:31
積分:10
註冊:2002-03-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-07 03:31:31 IP:218.165.xxx.xxx 未訂閱
請問各位高手我在dpr中跟某個res檔一起編譯成dll檔時,另外一個專案檔如要呼叫此dll檔中的res,跟直接在專案檔引用此res的方法有何差異,因為我想既然已經編譯成一個dll了,應該不需要在一次在專案檔中{$R XXX.res},可是又呼叫不出此res中的圖檔…,?。 謝謝。
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-07 07:31:08 IP:202.39.xxx.xxx 未訂閱
ex:
var
  hLib: THandle; 
  hIcon: THandle;
  bmp: TBitmap;
begin
  hLib := LoadLibrary('C:\TEST.DLL');
  try
    if hLib <= 32 then
      ShowMessage(SysErrorMessage(GetLastError))
    else begin
      hIcon := LoadIcon(hLib, 'IconResourceName');
      Application.Icon.Handle := hIcon;          bmp := TBitmap.Create;
      bmp.LoadFromResourceName(hLib,'BitmapResourceName');
      Image1.Canvas.Draw(0, 0, bmp);
      bmp.Free;
    end;
  finally
    FreeLibrary(hLib);
  end;
end;
--- --<-<-<@ 發表人 - hagar 於 2003/08/08 07:28:56
hkstm
一般會員


發表:23
回覆:31
積分:10
註冊:2002-03-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-08 06:11:57 IP:218.165.xxx.xxx 未訂閱
if h <= 32 then 請問h?代表什麼 bmp.LoadFromResourceName(hinstance,'BitmapResourceName'); image1.Picture.Bitmap:=bmp; 這是我之前直接取用res檔的用法可以直接顯現… 但經過dll之後就不行了 你的方法我試過我沒有成功說來源檔找不到… 對顧win32api不熟…可不可以對這方面指導一下 或是介紹有關於這方面的書
hkstm
一般會員


發表:23
回覆:31
積分:10
註冊:2002-03-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-08 07:11:19 IP:218.165.xxx.xxx 未訂閱
hLib := LoadLibrary('C:\TEST.DLL'); 不需要改為LoadLibrary(pchar('C:\TEST.DLL'))嗎? Application.Icon.Handle := hIcon; 在此的用意是? 發表人 - hkstm 於 2003/08/08 07:19:06
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-08 07:27:47 IP:202.39.xxx.xxx 未訂閱
1.Sorry! 不是 h, 是 hLib 2.可以不用 3.Application.Icon.Handle 是將 Application.Icon 以 resource 內 所取得的 Icon 取代 --- --<-<-<@
系統時間:2024-07-02 3:37:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!