안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.
HICON과 TIcon을 혼동하신것 같군요. HICON은 윈도우즈가 할당한 아이콘의 핸들일
뿐입니다. 그리고 윈도우즈의 모든 핸들은 빌더에서 void * 로 처리됩니다.
이 HICON을 그래픽 객체로 감싼 것이 TIcon입니다. TIcon은 TGraphic을 상속받으며
HICON을 핸들로 갖습니다. TIcon::Handle 이 HICON 핸들입니다.
TCanvas::Draw() 메소드는 그릴 객체로서 TGraphic을 상속받은 vcl 객체를 요구합
니다. 당연 HICON을 넘겨주면 컴파일에러가 납니다.
보여주신 소스가 바로 동작하기 위해서는 TIcon 객체를 생성하고 거기에 HICON을
할당한후 그 TIcon 객체를 Draw() 해야합니다.
TIcon *TempIcon = new TIcon;
TempIcon->Handle = LargeIcon[0];
SpeedButton1->Glyph->Canvas->Draw(0,0,TempIcon);
delete TempIcon;
이렇게 하면 될겁니다.
그럼 도움되시길...
독립문에서 임펠리테리였습니다.
(cbuilder, cbuilder@thrunet.com)
|