トップ回答者
WS_EX_LAYOUTRTL設定したツールバーのイメージがスリープから復帰すると左右反転表示される

質問
-
OSを問わず、スリープから復帰するとWS_EX_LAYOUTRTL設定したツールバーのイメージが反転表示されてしまう。
原因、回避方法をご存知の方がいらっしゃいましたら、ご教示くださいますよう、お願い致します。
---------------------------------
開発環境:Win7x86JP、VS2008 SP1
言語:Visual C++、MFCプロジェクト
<再現プロジェクトの作成方法>
新しいプロジェクト-Visual C++ - MFC - MFCプロジェクトを選択
シングルドキュメント、プロジェクト形式:Visual Studioを選択、MFCの使用方法はスタティックライブラリで・・を選択。
あとは、ウィザードに従い完了させる。
MainFrameのCreateのスタイルにWS_EX_LAYOUTRTLを追加する。
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWndEx::PreCreateWindow(cs) )
return FALSE;
cs.dwExStyle |= WS_EX_LAYOUTRTL;
return TRUE;
}ビルドして任意のOSで実行し、OSをスリープ状態にする。
スリープから復帰する。
ツールバーのイメージが左右反転して表示される。
最小化/最大化、ポップアップなどの再描画をしても元に戻らず、EXEを再起動するしか修正方法がありません。
スリープすると何かを忘れてしまうのですね。。。
-----------------------------
回答
すべての返信
-
レス付きませんね。
残念ながらこの件について詳しいわけではありません。あしからず。
さて、アラビア語などのRightToLeftタイプのウインドウには
WS_EX_LAYOUTRTL のほかに
WS_EX_RTLREADING、
WS_EX_RIGHT、
なども指定するようですが、これらは試してみましたでしょうか。
また、これらの内のいくつかはシステムのサポートしている言語に依存して
無効になる場合があると明記されています。
これらの注意書きは、日本語OS上でのデバッグに意味が無い可能性を示唆しています。あとは、WM_POWERBROADCAST メッセージをハンドリングして
PBT_APMRESUMESUSPEND 時に、どういうことになっているのか
調べる必要があるかもしれません。- 編集済み 仲澤@失業者 2012年10月5日 5:40