ウィンドウのバックに絵を貼り付ける事は、なんとなく出来るようになってきました。
今回は、指定したファイルが持っているアイコンをウィンドウのバックに
描画してみようとチャレンジ中なのですが、DrawIconExが上手くいきません。
どうも根本的に勘違いしているようなのですが
検索も、BackSeachでもアイコンの話題が少なく、解決までに至りませんでした。
いつも力をかりてばかりで申し訳ないのですがご指導いただけませんでしょうか・・・
コード: 全て選択
Sub MainWnd_Paint(hDC As HDC)
Dim bgicon as DWord
Dim smicon as DWord
Dim hpain as HBITMAP
Dim hpDC as HDC
Dim win_xy As RECT
if len(file)<1 then exit sub
ExtractIconEx(file,0,VarPtr(bgicon),VarPtr(smicon),1)
msgbox 0,file,Str$(bgicon)+"#"+Str$(smicon)+"files"
hpDC=CreateCompatibleDC(hDC)
'ウィンドウ座標を取得
GetClientRect(hMainWnd, win_xy)
'ビットマップを作成
hpain=CreateCompatibleBitmap(hDC,Abs(win_xy.left-win_xy.right),Abs(win_xy.top-win_xy.bottom))
if hpain=0 then msgbox hMainWnd,"ビットマップ作成に失敗しました","失敗"
'デバイスコンテキストにビットマップを選択
if SelectObject(hpDC,hpain)=0 then msgbox hMainWnd,"セレクト失敗","失敗"
if DrawIconEx(hpDC, 10,10,VarPtr(bgicon),0,0,0,0,DI_DEFAULTSIZE)=FALSE then msgbox hMainWnd,"描画失敗","小アイコン"
if DrawIconEx(hpDC,100,10,VarPtr(smicon),0,0,0,0,DI_DEFAULTSIZE)=FALSE then msgbox hMainWnd,"描画失敗","大アイコン"
BitBlt(hDC,0,0,Abs(win_xy.left-win_xy.right),Abs(win_xy.top-win_xy.bottom),hpDC,0,0,SRCCOPY)
DestroyIcon(bgicon)
DestroyIcon(smicon)
ReleaseDC(hMainWnd,hpain)
DeleteObject(hpain)
End Sub