ab.com コミュニティ https://www.activebasic.com/forum/ |
|
ウィンドウにアイコンを描画したい。 https://www.activebasic.com/forum/viewtopic.php?t=2532 |
ページ 1 / 1 |
作成者: | kobo [ 2009年1月12日(月) 23:40 ] |
記事の件名: | ウィンドウにアイコンを描画したい。 |
こんばんは、たまにお世話になっていますkoboです。 ウィンドウのバックに絵を貼り付ける事は、なんとなく出来るようになってきました。 今回は、指定したファイルが持っているアイコンをウィンドウのバックに 描画してみようとチャレンジ中なのですが、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 SubDrawIconで失敗してしまいます。 |
作成者: | kobo [ 2009年1月13日(火) 22:20 ] |
記事の件名: | 自己解決 |
本日、ふと目についた部分が原因ではないかと書き換えてみたら動きました。 まだ、動作として理解できていない部分もありますが一先ずは解決しました。 お騒がせ致しましたm(__)m コード: '成功 if DrawIconEx(hpDC, 10,10,bgicon,32,32,0,0,DI_NORMAL)=FALSE then msgbox hMainWnd,"描画失敗","小アイコン" if DrawIconEx(hpDC,100,10,smicon,32,32,0,0,DI_NORMAL)=FALSE then msgbox hMainWnd,"描画失敗","大アイコン" |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |