BitBltを2度する

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
辻本一揃

BitBltを2度する

#1 投稿記事 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です
辻本一揃

申し訳ないです

#2 投稿記事 by 辻本一揃 »

投稿するまでに手を尽くしたつもりだったのですが、
更に悪あがきをしていたら自己解決いたしました。
お騒がせいたしまして、本当に申し訳ありませんでした。
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

Re: BitBltを2度する

#3 投稿記事 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)
辻本一揃

#4 投稿記事 by 辻本一揃 »

ご指摘ありがとうございました。早速まずいところは全て書き換えました。
道はまだまだ険しいですが頑張りたいと思います(;^-^)
返信する