외부 핸들에서 가져온 아이콘을 가상 노드 트리의 가상 노드로 표시 할 수 있습니까? 노드의 데이터에는 HWND가 들어 있습니다.가상 문자열 트리의 노드 이미지와 같은 HWND (또는 이와 비슷한) 사용
답변
VT의 Images
속성과 OnGetImageIndex
이벤트에 할당 된 ImageList
을 사용합니다. WM_GETICON을 사용하여 이미지 목록을 채우는 방법은 다음과 같습니다.
procedure TForm1.Button1Click(Sender: TObject);
var IconHandle: HIcon;
begin
IconHandle := SendMessage(123456, WM_GETICON, ICON_SMALL2, 0);
ImageList_AddIcon(ImageList1.Handle, IconHandle);
end;
그리고 예를 들어 0 이미지 인덱스를 VirtualTreeView로 전달하십시오.
procedure TForm10.VirtualStringTree1GetImageIndex(Sender: TBaseVirtualTree;
Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex;
var Ghosted: Boolean; var ImageIndex: Integer);
begin
ImageIndex := 0;
end;
완벽하게 작동합니다. - 감사합니다! :) – Jeff
IconClass는 객체 참조에 매우 나쁜 이름입니다. 그것은 수업이 아닙니다. 나는 그것을'Icon'이라고 부를 것이다. 더 간단하게하기 위해서'ImageList_AddIcon (ImageList1.Handle, IconHandle)'을 쓰고'TIcon'을 사용하지 않는 것이 좋습니다. –
@ David - 귀하의 제안에 따라 답변을 편집했습니다. 감사. IconClass에 관해서는 나쁜 이름이라는 것을 알고 있습니다. 클래스가 아닌 인스턴스입니다. –
'HWND'는 * 창 * 핸들입니다. 창은 아이콘이 아닙니다. * 아이콘 * 핸들을 'HICON'이라고합니다. 윈도우의 아이콘을 얻으려면, 즉 HWND의 HICON을 얻으려면 [WM_GETICON]을 보낸다. (http://msdn.microsoft.com/en-us/library/ms632625 (VS .85) .aspx) 메시지가 표시됩니다. –
@ Andreas, Jeff는 HWND가있는 창에 속한 아이콘을 얻고 싶습니다. – Johan
@Johan : 예, 그렇기 때문에 나는 그에게'WM_GETICON'을 사용하라고했습니다! –