2016-06-20 3 views
1

3つのページ(またはフォーム)を含むフォームがあり、2ページがRTL方向にペルシア語で、1つがLTRです。親フォームを次のようにRTLモードに設定しました。MFCでlistcntrlの方向を変更する際にエラーが発生しました

if (Create(CWnd::FromHandle(hWndParent), 
     WS_SYSMENU | WS_POPUP | WS_CAPTION | DS_MODALFRAME | WS_VISIBLE | DS_CONTEXTHELP , 
     WS_EX_LAYOUTRTL | WS_EX_CONTROLPARENT | WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME) == 0) 
     return IDCANCEL; 

すべてのページがRTLモードになります。その英語のページでは、私はLTRモードにする必要がありlistcntrlを持っているので、私は英語のページクラスでこのコードを記述します。

LONG lStyle = ::GetWindowLong(GetDlgItem(IDC_LST_ITEMS)->m_hWnd,GWL_EXSTYLE); 
lStyle &= ~WS_EX_LAYOUTRTL; 
::SetWindowLong(GetDlgItem(IDC_LST_ITEMS)->m_hWnd, GWL_EXSTYLE, lStyle); 

実際にはすべての項目がLTRに私のリストコントロールの変更が、私のヘッダに含ま列はRTLです。

この問題を解決するにはどうすればよいですか?

Enter image description here

答えて

1

あなたは、ダイアログエディタの「プロパティウィンドウ」のフラグを変更することができます。ダイアログエディタで、ターゲットダイアログを開き、ListViewコントロールをクリックし、F4キーを押し、 "Right Align Text"をListViewコントロールのfalseに設定します。

あなたは、コードを通してそれを変更する場合は、おそらくまた、リストビューのヘッダーコントロールのハンドルを必要とする:

HWND hHeader = ListView_GetHeader(hListView); 
LONG lStyle = ::GetWindowLong(hHeader, GWL_EXSTYLE); 
lStyle &= ~WS_EX_LAYOUTRTL; 
::SetWindowLong(hHeader, GWL_EXSTYLE, lStyle); 
+0

どうもありがとう、Barmakを。 – reza

関連する問題