Win32API質問箱 Build120at TECH
Win32API質問箱 Build120 - 暇つぶし2ch266:226
15/05/05 18:36:30.71 20DP2R/2.net
>>254
これ通るか不明ですが。
case WM_PAINT:を動かす時って、通常、hdc = BeginPaint(hWnd, &ps);EndPaint(hWnd, &ps);がセットですよね?
と、いうことは、hWndのhdcの値を任意の情報に書き換えられれば、バッファリングできるかもしれないですよね?
だめで元々と思ってください。
予め、自分のウインドハンドルに、hdc=GetDC(hWnd);でHDC取得して、 バッファに、SelectObject(hdc,hMyBmp);で関連付けしておく
それと、ダブルバッファ用のメモリーDC(myDC)を作っておく
んで、GetDesktopWindow() とか必要に応じて、グローバルフック+サブクラス化して、 WM_PAINTの本来受け渡す、HookPrc( hWnd,rParam,lParam); のhWndを書き換えてバッファリングして描画するっていう方法はどうでしょうか?
case WM_PAINT:
myWndDC =GetDC(hMyWnd); // 自分のウインドハンドルのDCを取得
// myBmpはCreateCompatibleBitmapで本来のhWndのDC, 所属のhBitmapなどからサイズとか取得したほうが良いと思う
hdc =GetDC(hWnd);myBmp = 略;ReleaseDC(hdc);
oBmp=(HBITMAP)SelectObject(myWndDC,myBmp); // myWndDCにバッファ用のビットマップをセット
// 先に描画、描画対象を自分のウインドのhDCに描かせることが成功すればチラツキは抑えられるはず?
HookPrc(hMyWnd,wParam,lParam);
hdc = BeginPaint(hWnd, &ps);
BitBlt(myDC,略,myWndDC,略); // 背景として、本来の描画内容をmyDCに転送(バッファリング)
SelectObject(hMyDC,oBmp); // 本来のビットマップに戻す
ReleaseDC(hMyWnd, myWndDC); // リリース
DeleteObject(myBmp); // myBmpを破棄
FillRect(myDC,略)など // ここで自分で上書き描画
BitBlt(hdc,略,myDC); // 実際のウインドに描画する
EndPaint(hWnd, &ps);return 0;


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch