通知
すべてクリア
2010年12月4日 2:19 AM
MFCを使用しないでGUIプログラムを作成しております。
現在ウィンドウに特殊な描画を行う為、
1)LockWindowUpdateでデスクトップの描画更新をロック
2)GetWindowRgnで描画対象ウィンドウのリージョンを取得
3)GetDCEXの引数に
第一引数に処理対象デスクトップのウィンドウハンドルを設定
第二引数に2)で取得したリージョンハンドル(処理対象ウィンドウのリージョン
です)を設定
第三引数にDCX_LOCKWINDOWUPDATEを設定(ウィンドウロック中での描画を有効とす
るフラグ)
として、デバイスコンテキストを取得、その後、実際の描画処理を行うことで、クリッ
ピングは処理対象ウィンドウのみとなり、Xpまではこの方法でうまく実装できていたの
ですが、なぜかVista以降うまくいかないようになってしました。。。
よくよく調べてみると、2)のGetWindowRgnの呼出でエラーを起こしており、次の
GetDCExでクリッピング領域がうまく設定されず結果として描画がおかしくなってしまう
ことがわかりました。
MSDN等を漁ってみた所、Vistaから本来はウィンドウを作成した際にシステムで設定され
るはずのウィンドウリージョンがVistaから設定されないように仕様が変更されており、
ならばと自前でリージョンを強引に設定してみたのですが、ウィンドウのフレーム及び
タイトルバーの描画がおかしくなってしまう始末・・・
そこで、どなたか同様の問題を解決された方等いらっしゃいましたら、何卒ご教授いた
だきたいのですが・・・
(RegistaerWindowEx等で何かしらフラグを与えてやれば初期リージョンを設定する方法
等あったりするのでしょうか??)