15,979
社区成员
发帖
与我相关
我的任务
分享
SetProcessDefaultLayout(LAYOUT_RTL);
//ModifyStyleEx(0, WS_EX_LAYOUTRTL | WS_EX_RTLREADING | WS_EX_RIGHT);
SetWindowLong(m_hWnd, GWL_EXSTYLE, GetWindowLong(m_hWnd, GWL_EXSTYLE) |
(WS_EX_LAYOUTRTL | WS_EX_RTLREADING | WS_EX_RIGHT));
SetWindowPos(NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_FRAMECHANGED);
UpdateWindow();
BOOL ChangeContrlFun(HWND hParent, BOOL bRightRead, BOOL bRightText)
{
BOOL bRet = FALSE;
//扩展风格
DWORD dwExStyleClrMask = (WS_EX_LTRREADING|WS_EX_RTLREADING|WS_EX_LEFT|WS_EX_RIGHT);
DWORD dwExSytleSetMask = 0;
if(bRightRead)
dwExSytleSetMask |= WS_EX_RTLREADING;
else
dwExSytleSetMask |= WS_EX_LTRREADING;
if(bRightText)
dwExSytleSetMask |= WS_EX_RIGHT;
else
dwExSytleSetMask |= WS_EX_LEFT;
if(IsWindow(hParent))
{
DWORD dwExStyle;
//遍历子窗口
HWND hChild = GetWindow(hParent, GW_CHILD);
while(hChild != NULL)
{
//修改扩展风格
dwExStyle = (GetWindowLong(hChild, GWL_EXSTYLE) & (~dwExStyleClrMask)) | dwExSytleSetMask;
SetWindowLong(hChild, GWL_EXSTYLE, dwExStyle);
//按类修改属性
TCHAR szClass[64] = {0};
if(GetClassName(hChild, szClass, 64))
{
DWORD dwStyle = GetWindowLong(hChild, GWL_STYLE);
DWORD dwClrMask = 0;
DWORD dwSetMask = 0;
//Static
if(_tcsicmp(szClass, _T("Static")) == 0)
{
dwClrMask = SS_RIGHT | SS_CENTER | SS_LEFT;
if(bRightText)
dwSetMask = SS_RIGHT;
else
dwSetMask = SS_LEFT;
}
//Edit
if(_tcsicmp(szClass, _T("Edit")) == 0)
{
dwClrMask = (ES_RIGHT | ES_CENTER | ES_LEFT);
if(bRightText)
dwSetMask |= ES_RIGHT;
}
//button
if(_tcsicmp(szClass, _T("Button")) == 0)
{
dwClrMask = (BS_LEFT | BS_RIGHT);
if(bRightText)
dwSetMask |= BS_RIGHT;
else
dwSetMask |= BS_LEFT;
}
/*
//
if(_tcsicmp(szClass, _T("xxxx")) == 0)
{
dwClrMask = ;
if(bRightText)
dwSetMask = ;
else
dwSetMask = ;
}
*/
SetWindowLong(hChild, GWL_STYLE, (dwStyle & (~dwClrMask)) | dwSetMask);
}
//获取下一个控件
hChild = GetWindow(hChild, GW_HWNDNEXT);
}
//修改主窗口扩展风格
dwExStyle = (GetWindowLong(hParent, GWL_EXSTYLE) & (~dwExStyleClrMask))
| dwExSytleSetMask;
SetWindowLong(hParent, GWL_EXSTYLE, dwExStyle);
//刷新窗口
InvalidateRect(hParent, NULL, TRUE);
bRet = TRUE;
}
return bRet;
}
void CDlg1Dlg::OnButton1()
{
static BOOL m_bRight = FALSE;
m_bRight = ! m_bRight;
ChangeContrlFun(m_hWnd, m_bRight, m_bRight);
}