裏画面を作ってそこに描画するには以下の手順が必要です。
1 CreateCompatibleDCでHDCを取得する
2 CreateCompatibleBitmapでHBITMAPを取得する
3 SelectObjectでHBITMAPをHDCに関連づける。尚、そのときの返戻値を取得する。(元に戻すため)
4 裏画面に描画したり、それを表画面に描画したりする。
5 使い終わったら、関連付けたオブジェクトを元に戻し、その後削除する。
HBITMAP bmp,obmp; HBRUSH br,obr; HDC mem; mem=CreateCompatibleDC(hdc);//HDCを取得 bmp=CreateCompatibleBitmap(hdc,100,100);//HBITMAPを取得 br=CreateSolidBrush(RGB(255,255,255));//HBRUSHを取得 obmp=SelectObject(mem,bmp);//HBITMAPを関連付ける obr=SelectObject(mem,br);//HBRUSHをを関連付ける //裏画面に描画(rectはどこかで初期化してください) FillRect(mem,&rect,br); TextOut(mem,0,0,"Kenichi",7); //裏画面から表画面に描画 BitBlt(hdc,0,0,100,100,mem,0,0,SRCCOPY); //関連付けられたオブジェクトを元に戻す //HDCに関連付けられたGDIオブジェクトは削除できないからです SelectObject(mem,obmp); SelectObject(mem,obr); //削除 DeleteObject(bmp); DeleteObject(br); DeleteDC(mem);
ハンドルやデバイスコンテキストの概念はヘルプや参考書を見て理解してください。
ちなみに、オブジェクトが削除できないとリソースが無くなって動作がおかしくなってしまします。
リソースが減っているかどうかは、いいかげんな方法ですがメモ帳やワードパッドの、バージョン情報の
システムリソースの値を確認すれば大体分かります。(本当にいいかげんですね)