Q&A

  • 리소스로 포함된 비트맵의 공유가 가능한가요?
우여곡절 끝에 비트맵을 리소스에 포함시키고, 프로그램 실행시 이 비트맵을
버튼(speedbuttom)의 glyph로 이용하고자 합니다.
근데, 한 비트맵을 여러 버튼에서 사용하거든요.

그래서, 다음과 같은 코드을 실행시켰는데...

...
procedure Tfrm_cln.FormCreate(Sender: TObject);
  BmpHandle  := LoadBitmap( HInstance, 'PDEL' );
end;

procedure Tfrm_cln.btn100Click(Sender: TObject);
begin
  if (BmpHandle <> 0) then begin
    btn100.Glyph.Handle := BmpHandle;
  end;
end;

procedure Tfrm_cln.btn101Click(Sender: TObject);
begin
  if (BmpHandle <> 0) then begin
    btn101.Glyph.Handle := BmpHandle;
  end;
end;
...

btn100이든 btn101이든 먼저 누른버튼에만 비트맵이 나타나는 군요.
제가 멀 잘못한것 같은데, 비트맵 리소스의 공유에 대한 자료가 찾기 참 힘들어서요...

부디 고수님들.... 전 뇌가 너무 아파여...
3  COMMENTS
  • Profile
    GanJang 2002.06.03 23:31
    이건 그냥 트릭일뿐인데염.
    Resource 를 "TResStream" 를 사용해서 아예 파일루 만들어 노으심 될것 같아염.

    예)
      ResStream := TResourceStream.CreateFromID(HInstance, 1, RT_RCDATA);
      ResStream.SaveToFile('alram.wav');
      ResStream.Free;

    저도 예전에 검색해서 찾아해본거라 ^^;


  • Profile
    박형일 2002.06.04 01:19
    답변에 감사드립니다.

    근데, 비트맵을 공유하려 하는 이유가,
    시스템 리소스 사용을 어떻게 좀 줄여볼까하는 의도 거든요.
    그런데다가, 이 비트맵핸들을 dll에서 받아온답니다.
    파일에서 불러온다면 어짜피 비트맵을 생성해야 하는것이 아닌가요?

    비트맵핸들을 직접 다른 비트맵의 핸들로 지정하면 무슨 문제가 있냐는 것이거든요.

    뇌가 거의 터질 지경입니다.
    좀 알켜줘여~~~


  • Profile
    코드의매력 2010.08.07 23:28

    98 에선 됩니다.

    그랜데 xp 에서는 다른프로그램의 자료를 사용못하게 하는것 같습니다.