*.vcxproj text eol=crlf
*.vcxproj.filters text eol=crlf
*.vcxproj.users text eol=crlf
-*.rc text eol=crlf
+*.rc text eol=auto
*.props eol=crlf
resource.h text eol=crlf
#define IDS_MAIN_ERROR_WINMUTE_ALREADY_RUNNING_TEXT 105
#define IDS_MAIN_ERROR_INIT_WINMUTE_TITLE 106
#define IDS_MAIN_ERROR_INIT_WINMUTE_TEXT 107
+#define IDS_WM_ERROR_WINDOWS_SUPPORT_TITLE 201
+#define IDS_WM_ERROR_WINDOWS_SUPPORT_TEXT2 202
+#define IDS_WM_ERROR_WINDOWS_SUPPORT_TEXT 202
// Next default values for new objects
//
std::wstring WMi18n::GetCurrentLanguageName() const
{
- return GetString(IDS_LANG_NAME);
+ return GetTextW(IDS_LANG_NAME);
}
// https://learn.microsoft.com/en-us/windows/win32/intl/creating-a-multilingual-user-interface-application
}
}
-std::wstring WMi18n::GetString(UINT strId) const
+std::wstring WMi18n::GetTextW(UINT strId) const
{
HMODULE hMod = (langModule_ == nullptr) ? hglobInstance : langModule_;
constexpr size_t strBufferSize = 2048 + 1;
return err;
}
}
+
+std::string WMi18n::GetTextA(UINT strId) const
+{
+ HMODULE hMod = (langModule_ == nullptr) ? hglobInstance : langModule_;
+ constexpr size_t strBufferSize = 2048 + 1;
+ char strBuffer[strBufferSize]{ 0 };
+ const int strLength = LoadStringA(hMod, strId, strBuffer, 0);
+ if (strLength == 0) {
+ return "";
+ } else if (strLength < strBufferSize) {
+ LoadStringA(hMod, strId, strBuffer, ARRAY_SIZE(strBuffer));
+ return std::string(strBuffer, strBuffer + strLength);
+ } else if (strLength > 0) {
+ char *largeBuffer = new char[strLength + 1];
+ LoadStringA(hMod, strId, largeBuffer, strLength + 1);
+ std::string ret(strBuffer, largeBuffer + strLength);
+ delete[] largeBuffer;
+ return ret;
+ } else {
+ WMLog::GetInstance().WriteWindowsError(L"LoadStringA", GetLastError());
+ std::string err = "String resource " + std::to_string(strId) + " not found";
+ return err;
+ }
+}
std::wstring GetCurrentLanguageModule() const;
std::wstring GetCurrentLanguageName() const;
- std::wstring GetString(UINT id) const;
+ std::wstring GetTextW(UINT id) const;
+ std::string GetTextA(UINT id) const;
private:
WMi18n() noexcept;
nullptr,
nullptr,
PROGRAM_NAME,
- i18n.GetString(IDS_MAIN_ERROR_SETTINGS_INIT_TITLE).c_str(),
- i18n.GetString(IDS_MAIN_ERROR_SETTINGS_INIT_TEXT).c_str(),
+ i18n.GetTextW(IDS_MAIN_ERROR_SETTINGS_INIT_TITLE).c_str(),
+ i18n.GetTextW(IDS_MAIN_ERROR_SETTINGS_INIT_TEXT).c_str(),
TDCBF_OK_BUTTON,
TD_ERROR_ICON,
nullptr);
LoadLanguage(settings, i18n);
- HANDLE hMutex = CreateMutexW(nullptr, TRUE, L"LxSystemsWinMuteMtx");
+ HANDLE hMutex = CreateMutexW(nullptr, TRUE, L"LxSystemsWinMuteRunOnce");
if (hMutex == nullptr) {
return FALSE;
} else if (GetLastError() == ERROR_ALREADY_EXISTS) {
nullptr,
nullptr,
PROGRAM_NAME,
- i18n.GetString(IDS_MAIN_ERROR_WINMUTE_ALREADY_RUNNING_TITLE).c_str(),
- i18n.GetString(IDS_MAIN_ERROR_WINMUTE_ALREADY_RUNNING_TEXT).c_str(),
+ i18n.GetTextW(IDS_MAIN_ERROR_WINMUTE_ALREADY_RUNNING_TITLE).c_str(),
+ i18n.GetTextW(IDS_MAIN_ERROR_WINMUTE_ALREADY_RUNNING_TEXT).c_str(),
TDCBF_OK_BUTTON,
TD_INFORMATION_ICON,
nullptr);
SetWorkingDirectory();
-
HeapSetInformation(nullptr, HeapEnableTerminationOnCorruption, nullptr, 0);
if (!InitWindowsComponents()) {
nullptr,
nullptr,
PROGRAM_NAME,
- i18n.GetString(IDS_MAIN_ERROR_INIT_WINMUTE_TITLE).c_str(),
- i18n.GetString(IDS_MAIN_ERROR_INIT_WINMUTE_TEXT).c_str(),
+ i18n.GetTextW(IDS_MAIN_ERROR_INIT_WINMUTE_TITLE).c_str(),
+ i18n.GetTextW(IDS_MAIN_ERROR_INIT_WINMUTE_TEXT).c_str(),
TDCBF_OK_BUTTON,
TD_ERROR_ICON,
nullptr);
hTrayMenu_(nullptr),
hAppIcon_(nullptr),
hTrayIcon_(nullptr),
- settings_(settings)
+ settings_(settings),
+ i18n(WMi18n::GetInstance())
{
}
// Nothing to do
} else if (IsWindowsXPOrGreater()) {
TaskDialog(
- nullptr, nullptr, PROGRAM_NAME,
- L"Only Windows Vista and newer is supported",
- L"For Windows XP support, please download WinMute "
- L" version 1.4.2 or older",
+ nullptr, nullptr,
+ PROGRAM_NAME,
+ i18n.GetTextW(IDS_WM_ERROR_WINDOWS_SUPPORT_TITLE).c_str(),
+ i18n.GetTextW(IDS_WM_ERROR_WINDOWS_SUPPORT_TEXT).c_str(),
TDCBF_OK_BUTTON, TD_ERROR_ICON, nullptr);
return false;
}
TrayIcon trayIcon_;
WifiDetector wifiDetector_;
WMSettings& settings_;
+ WMi18n &i18n;
MuteControl muteCtrl_;
QuietHoursTimer quietHours_;
BluetoothDetector btDetector_;
"WinMute encountered a critical error while initializing and must shut down."
END
+STRINGTABLE
+BEGIN
+ IDS_WM_ERROR_WINDOWS_SUPPORT_TITLE
+ "Only Windows Vista and newer is supported"
+END
+
#endif // English (United Kingdom) resources
/////////////////////////////////////////////////////////////////////////////
#define IDD_MANAGE_ENDPOINTS 135
#define IDD_DIALOG2 137
#define IDD_MANAGE_ENDPOINTS_ADD 137
+#define IDS_WM_ERROR_WINDOWS_SUPPORT_TITLE 201
+#define IDS_STRING202 202
+#define IDS_WM_ERROR_WINDOWS_SUPPORT_TEXT 202
#define IDC_LINK_HOMEPAGE 1001
#define IDC_LINK_SUPPORT 1002
#define IDC_LINK_PROJECT 1002