ページ 11

BitBltを2度する

Posted: 2005年7月12日(火) 09:41
by 辻本一揃
はじめまして

AB初心者で一つずつ学んで行こうと思っているのですが、引っかかった点がありましたので投稿させていただきました。BitBltに関する質問です。
ビットマップファイルをウィンドウに描写する方法は理解できたのですが、BitBltを2度した場合に描写されないんです。
つまり簡略して書きますと、

コード: 全て選択

SelectObject(hA,hBitmap)
BitBlt(GetDC(hMainWnd),0,0,100,100,hA,0,0,SRCCOPY)
での動作は確認できたのですが、

コード: 全て選択

SelectObject(hA,hBitmap)
BitBlt(hB,0,0,100,100,hA,0,0,SRCCOPY)
BitBlt(GetDC(hMainWnd),0,0,100,100,hB,0,0,SRCCOPY)
では描写されなくなったのです。どの点がまずいのでしょうか。
環境はv4.03.00でWinXPです

申し訳ないです

Posted: 2005年7月12日(火) 15:37
by 辻本一揃
投稿するまでに手を尽くしたつもりだったのですが、
更に悪あがきをしていたら自己解決いたしました。
お騒がせいたしまして、本当に申し訳ありませんでした。

Re: BitBltを2度する

Posted: 2005年7月12日(火) 21:50
by イグトランス
> BitBlt(GetDC(hMainWnd),0,0,100,100,hB,0,0,SRCCOPY)
これはメモリリークになります。
GetDCしたらReleaseDCを呼ばなければなりません。
たとえばこんな感じです。
Dim hdc As HDC
hdc = GetDC(hMainWnd)
BitBlt(hdc,0,0,100,100,hB,0,0,SRCCOPY)
ReleaseDC(hwnd, hdc)

Posted: 2005年7月12日(火) 23:35
by 辻本一揃
ご指摘ありがとうございました。早速まずいところは全て書き換えました。
道はまだまだ険しいですが頑張りたいと思います(;^-^)