VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -