投稿時間:2005/02/04(Fri) 11:54 投稿者名:ダンボ
URL :
タイトル:アイコン転写時の疑問
いつもお世話になっております。 MSFlexGridにアイコンとファイル名を列挙するという、有り勝ちなアプリケーションを 作っていますが、下記の部分の動作に納得が行かないので、どなたかご説明を願いたいです。
現象1:(*)行を実装すれば期待通りに各ファイルのアイコンがMSFlexGridの各行に表示される。 現象2:(*)行をコメントにすると、MSFlexGrid中の全アイコンが常に最後のファイルのアイコンに書き換えら れる。 (当然.FillStyleは0で設定済み)
疑問点:Set .CellPicture = picIcon.Imageで、ビットマップ実態がMSFlexGridに転写されるのか? それともポインタだけ複写されるのか? 現象2から見ると「ポインタだけ複写」のような気もするが、 現象1から見ると「その度にビットマップ実態が転写されている」ように思える。
For i = 1 to .Rows - 1 .Row = i: .Col = 0 rc = GetIcon(FNAME, picIcon) If rc <> 0 Then Set .CellPicture = picIcon.Image (*) picIcon.Picture = LoadPicture() この行をコメントにすると全部のアイコンが同じになる。 End If Next i
Public Function GetIcon(FNAME As String, PIC As PictureBox) As Long Dim rc As Long, psfi As SHFILEINFO rc = SHGetFileInfo(FNAME, FILE_ATTRIBUTES_NORMAL, psfi, Len(psfi), SHGFI_ICON + SHGFI_SMALLICON) rc = DrawIconEx(PIC.hDC, 0, 0, psfi.hIcon, 0, 0, vbNull, 0, DI_NORMAL) GetIcon = rc End Function
|