掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
背景を更新するには? (ID:70126)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> HWND hWndDesktop = GetDesktopWindow(); > HDC hdcDesktop = GetDC(hWndDesktop); > Ellipse(hdcDesktop,100,100,200,200); > ReleaseDC(hWndDesktop, hdcDesktop); VC6sp6+XPsp3 環境で↑を試してみたら円は描画されなかった。 # HWND hWndDesktop = NULL; # に変更してみたら表面上問題無く描画されたけど なので、コレは恐らく環境依存の症状だと思われる。 キムラさんの環境が”OS が Vista で Aero が有効”な環境だったりしない? もしそうならば、Vista の DWM(Desktop Window Manager)が影響してるのかもしんない。 XP以前では、スクリーンという一枚のキャンバスの領域を直接各ウィンドウ毎に割り振ってスクリーンの描画を行っている。 だけど、Vista(Aero)ではダブルバッファリングでスクリーンへの描画を行うように変わった。 また、各ウィンドウは其々専用のキャンバスを持っていてそこに自身の画面イメージを持っている。 で、実際のスクリーンへの描画は 1、オフスクリーンに各ウィンドウの専用キャンバスで持っている内容を合成 2、オフスクリーンの内容をスクリーンに転送 っていう感じの処理が行われていたと俺の脳は記憶している。 なので、今回のように自分が管理しているウィンドウ外の領域に描画とかしちゃうと問題がでるのかもしんない。 # Vista 環境が無いのでキムラさんの提示コードを実際に Vista で動かしてません。 # なので、益々的外れな回答をしているかもしれないが…自分が思いついた点を書いてみた。 # 関係なさそうだったらスルーしてください。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.