mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-04-07 14:09:22 +08:00
[win] online-installer: add RTL mode
This commit is contained in:
@ -1,5 +1,5 @@
|
||||
#pragma code_page(65001)
|
||||
#include <winres.h>
|
||||
#include <Windows.h>
|
||||
#include "../src/version.h"
|
||||
#include "../src/resource.h"
|
||||
|
||||
@ -52,3 +52,17 @@ BEGIN
|
||||
PUSHBUTTON "", IDC_BUTTON_CANCEL, 225, 72, 80, 18
|
||||
CONTROL "", IDC_SILENT_CHECK, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 30, 70, 100, 20
|
||||
END
|
||||
|
||||
IDD_DIALOG_RTL DIALOGEX 0, 0, 320, 100
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_STATICEDGE | WS_EX_LAYOUTRTL
|
||||
CAPTION ""
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
CONTROL "Progress", IDC_PROGRESS, "msctls_progress32", WS_BORDER, 15, 56, 290, 6
|
||||
CONTROL "Icon", IDC_MAIN_ICON, "Static", SS_ICON | SS_CENTER | WS_CHILD | WS_VISIBLE, 15, 10, 32, 32
|
||||
LTEXT "", IDC_LABEL_TITLE, 75, 15, 220, 14, SS_LEFT | WS_CHILD | WS_VISIBLE
|
||||
LTEXT "", IDC_LABEL_MESSAGE, 75, 28, 220, 24, SS_LEFT | WS_CHILD | WS_VISIBLE
|
||||
PUSHBUTTON "", IDC_BUTTON_CANCEL, 225, 72, 80, 18
|
||||
CONTROL "", IDC_SILENT_CHECK, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 30, 70, 100, 20
|
||||
END
|
||||
|
||||
@ -82,7 +82,7 @@ int WINAPI _tWinMain(_In_ HINSTANCE hInst, _In_opt_ HINSTANCE hPrevInstance, _In
|
||||
data.file_name = &fileName;
|
||||
|
||||
InitCommonControls();
|
||||
HWND hDlg = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_DIALOG), NULL, DialogProc, (LPARAM)&data);
|
||||
HWND hDlg = CreateDialogParam(hInst, MAKEINTRESOURCE(NS_Utils::IsRtlLanguage(lcid) ? IDD_DIALOG_RTL : IDD_DIALOG), NULL, DialogProc, (LPARAM)&data);
|
||||
ShowWindow(hDlg, nCmdShow);
|
||||
|
||||
BOOL ret;
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
|
||||
#define IDI_MAINICON 101
|
||||
#define IDD_DIALOG 102
|
||||
#define IDD_DIALOG_RTL 103
|
||||
|
||||
#define IDC_MAIN_ICON 1001
|
||||
#define IDC_LABEL_TITLE 1002
|
||||
|
||||
@ -41,6 +41,10 @@
|
||||
#include <sstream>
|
||||
|
||||
#define _TR(str) Translator::tr(str).c_str()
|
||||
#define BIT123_LAYOUTRTL 0x08000000
|
||||
#ifndef LOCALE_IREADINGLAYOUT
|
||||
# define LOCALE_IREADINGLAYOUT 0x70
|
||||
#endif
|
||||
|
||||
|
||||
namespace NS_Utils
|
||||
@ -67,6 +71,20 @@ namespace NS_Utils
|
||||
caption.append(_TR(CAPTION_TEXT));
|
||||
MessageBox(NULL, str.c_str(), caption.c_str(), MB_ICONERROR | MB_SERVICE_NOTIFICATION_NT3X | MB_SETFOREGROUND);
|
||||
}
|
||||
|
||||
bool IsRtlLanguage(unsigned long lcid)
|
||||
{
|
||||
if (NS_File::getWinVersion() >= WinVer::Win7) {
|
||||
DWORD layout = 0;
|
||||
if (GetLocaleInfo(lcid, LOCALE_IREADINGLAYOUT | LOCALE_RETURN_NUMBER, (LPWSTR)&layout, sizeof(layout)/sizeof(WCHAR)) > 0)
|
||||
return layout == 1;
|
||||
} else {
|
||||
LOCALESIGNATURE lsig;
|
||||
if (GetLocaleInfo(lcid, LOCALE_FONTSIGNATURE, (LPWSTR)&lsig, sizeof(lsig)/sizeof(WCHAR)) > 0)
|
||||
return (lsig.lsUsb[3] & BIT123_LAYOUTRTL) != 0;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
namespace NS_File
|
||||
|
||||
@ -56,6 +56,7 @@ namespace NS_Utils
|
||||
{
|
||||
wstring GetLastErrorAsString();
|
||||
void ShowMessage(wstring str, bool showError = false);
|
||||
bool IsRtlLanguage(unsigned long lcid);
|
||||
}
|
||||
|
||||
namespace NS_File
|
||||
|
||||
Reference in New Issue
Block a user