diff --git a/Battery/Battery.cpp b/Battery/Battery.cpp
index 5fcedcb7..1a95cd3e 100644
--- a/Battery/Battery.cpp
+++ b/Battery/Battery.cpp
@@ -102,6 +102,9 @@ void CBattery::OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data)
//从配置文件读取配置
g_data.LoadConfig(std::wstring(data));
+ break;
+ case ITMPlugin::EI_TASKBAR_WND_SPERATE_WITH_SPACE:
+ g_data.m_setting_data.show_space = _wtoi(data);
break;
default:
break;
diff --git a/Battery/Battery.rc b/Battery/Battery.rc
index 85fb0803..524791ee 100644
--- a/Battery/Battery.rc
+++ b/Battery/Battery.rc
@@ -180,12 +180,104 @@ BEGIN
IDS_HOUR "Сʱ"
IDS_MINUTE ""
IDS_SECOND ""
+ IDS_NA "N/A"
END
#endif // (壬й) resources
/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// () resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 202, 87
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION ""
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "",IDOK,87,66,50,14
+ PUSHBUTTON "",IDCANCEL,145,66,50,14
+ LTEXT " :",IDC_STATIC,7,9,72,8
+ COMBOBOX IDC_COMBO1,82,7,113,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL " ",IDC_SHOW_TOOLTIPS_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,23,181,10
+ CONTROL " ",IDC_SHOW_PERCENT_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,35,73,10
+ CONTROL " ",IDC_SHOW_CHARGING_ANIMATION_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,47,75,10
+ CONTROL "",IDC_HELP_SYSLINK,"SysLink",WS_TABSTOP,7,70,34,10
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_OPTIONS_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 195
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 80
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_PLUGIN_NAME " "
+ IDS_PLUGIN_DESCRIPTION " TrafficMonitor"
+ IDS_BATTERY ""
+ IDS_BATTYER_TYPE_NUMBER " "
+ IDS_BATTYER_TYPE_ICON " "
+ IDS_BATTYER_TYPE_NUMBER_IN_ICON " "
+ IDS_BATTYER_TYPE_NUMBER_BESIDE_ICON " "
+ IDS_CHARGING " "
+ IDS_BATTERY_LIFE_TIME " "
+END
+
+STRINGTABLE
+BEGIN
+ IDS_BATTERY_FULL_LIFE_TIME " "
+ IDS_HOUR ""
+ IDS_MINUTE ""
+ IDS_SECOND ""
+ IDS_NA "/"
+END
+
+#endif // () resources
+/////////////////////////////////////////////////////////////////////////////
+
+
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources
@@ -270,6 +362,7 @@ BEGIN
IDS_HOUR "hour"
IDS_MINUTE "minute"
IDS_SECOND "second"
+ IDS_NA "N/A"
END
#endif // Ӣ() resources
diff --git a/Battery/BatteryItem.cpp b/Battery/BatteryItem.cpp
index e86190aa..fbea875b 100644
--- a/Battery/BatteryItem.cpp
+++ b/Battery/BatteryItem.cpp
@@ -42,7 +42,12 @@ const wchar_t* CBatteryItem::GetItemValueText() const
const wchar_t* CBatteryItem::GetItemValueSampleText() const
{
if (g_data.m_setting_data.show_percent)
- return L"100%";
+ {
+ if (g_data.m_setting_data.show_space)
+ return L"100 %";
+ else
+ return L"100%";
+ }
else
return L"100";
}
@@ -63,7 +68,12 @@ int CBatteryItem::GetItemWidthEx(void * hDC) const
CString sample_str;
if (g_data.m_setting_data.show_percent)
- sample_str = _T("100%");
+ {
+ if (g_data.m_setting_data.show_space)
+ sample_str = _T("100 %");
+ else
+ sample_str = _T("100%");
+ }
else
sample_str = _T("100");
@@ -93,14 +103,14 @@ void CBatteryItem::DrawItem(void* hDC, int x, int y, int w, int h, bool dark_mod
icon_point.y = rect.top + (rect.Height() - icon_size) / 2;
::DrawIconEx(pDC->GetSafeHdc(), icon_point.x, icon_point.y, hIcon, icon_size, icon_size, 0, NULL, DI_NORMAL);
//填充电量指示
- if (g_data.m_sysPowerStatus.BatteryFlag != 128 && g_data.m_sysPowerStatus.BatteryLifePercent > 0 && g_data.m_sysPowerStatus.BatteryLifePercent <= 100)
+ if (!(g_data.m_sysPowerStatus.BatteryFlag & BATTERY_FLAG_NO_BATTERY) && g_data.m_sysPowerStatus.BatteryLifePercent != BATTERY_PERCENTAGE_UNKNOWN)
{
Gdiplus::RectF rc_indicater;
rc_indicater.X = icon_point.x + g_data.DPIF(1);
rc_indicater.Y = icon_point.y + g_data.DPIF(6);
double percent = g_data.m_sysPowerStatus.BatteryLifePercent;
//显示充电动画
- if (g_data.m_setting_data.show_charging_animation && g_data.IsAcOnline() && g_data.m_sysPowerStatus.BatteryLifePercent < 100)
+ if (g_data.m_setting_data.show_charging_animation && g_data.IsCharging())
{
percent = g_data.m_sysPowerStatus.BatteryLifePercent + (battery_percent / 100 * (100 - g_data.m_sysPowerStatus.BatteryLifePercent));
}
diff --git a/Battery/DataManager.cpp b/Battery/DataManager.cpp
index 8403f493..82e3277a 100644
--- a/Battery/DataManager.cpp
+++ b/Battery/DataManager.cpp
@@ -126,26 +126,26 @@ HICON CDataManager::GetIcon(UINT id)
bool CDataManager::IsAcOnline() const
{
- return m_sysPowerStatus.ACLineStatus == 1;
+ return m_sysPowerStatus.ACLineStatus == AC_LINE_ONLINE;
}
bool CDataManager::IsCharging() const
{
- return m_sysPowerStatus.BatteryFlag == 8;
+ return m_sysPowerStatus.BatteryFlag & BATTERY_FLAG_CHARGING;
}
std::wstring CDataManager::GetBatteryString() const
{
- if (m_sysPowerStatus.BatteryFlag == 128)
+ if (m_sysPowerStatus.BatteryFlag & BATTERY_FLAG_NO_BATTERY)
{
- return L"N/A";
+ return g_data.StringRes(IDS_NA).GetString();
}
else
{
std::wstring str = std::to_wstring(m_sysPowerStatus.BatteryLifePercent);
if (m_setting_data.show_percent)
{
- if (m_sysPowerStatus.BatteryLifePercent < 100)
+ if (g_data.m_setting_data.show_space)
str.push_back(L' ');
str.push_back(L'%');
}
@@ -155,10 +155,9 @@ std::wstring CDataManager::GetBatteryString() const
COLORREF CDataManager::GetBatteryColor() const
{
- if (m_sysPowerStatus.BatteryLifePercent < 20)
+ if (m_sysPowerStatus.BatteryFlag & BATTERY_FLAG_CRITICAL)
return BATTERY_COLOR_CRITICAL;
- else if (m_sysPowerStatus.BatteryLifePercent < 60)
+ if (m_sysPowerStatus.BatteryFlag & BATTERY_FLAG_LOW)
return BATTERY_COLOR_LOW;
- else
- return BATTERY_COLOR_HIGH;
+ return BATTERY_COLOR_HIGH;
}
diff --git a/Battery/DataManager.h b/Battery/DataManager.h
index 21f09ef0..4aa6a3c2 100644
--- a/Battery/DataManager.h
+++ b/Battery/DataManager.h
@@ -23,6 +23,7 @@ struct SettingData
bool show_battery_in_tooltip{};
bool show_percent{};
bool show_charging_animation{}; //显示充电动画
+ bool show_space{};
};
class CDataManager
diff --git a/Battery/resource.h b/Battery/resource.h
index 1124824e..05bae24c 100644
--- a/Battery/resource.h
+++ b/Battery/resource.h
@@ -18,6 +18,7 @@
#define IDS_HOUR 113
#define IDS_MINUTE 114
#define IDS_SECOND 115
+#define IDS_NA 116
#define IDC_COMBO1 1000
#define IDC_SHOW_PERCENT_CHECK 1002
#define IDC_SHOW_CHARGING_ANIMATION_CHECK 1003
diff --git a/DateTime/DateTime.rc b/DateTime/DateTime.rc
index 9b5f8953..095d45b2 100644
--- a/DateTime/DateTime.rc
+++ b/DateTime/DateTime.rc
@@ -224,7 +224,7 @@ END
STRINGTABLE
BEGIN
IDS_JUL "7"
- IDS_AUT "8"
+ IDS_AUG "8"
IDS_SEP "9"
IDS_OCT "10"
IDS_NOV "11"
@@ -253,6 +253,174 @@ END
/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// () resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_MESSAGE_DIALOG DIALOGEX 0, 0, 183, 128
+STYLE DS_SETFONT | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION "Dialog"
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ PUSHBUTTON "",IDCANCEL,128,109,50,14
+ EDITTEXT IDC_EDIT1,4,4,174,101,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL
+END
+
+IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 175, 131
+STYLE DS_SETFONT | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION " "
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "",IDOK,63,110,50,14
+ PUSHBUTTON "",IDCANCEL,118,110,50,14
+ GROUPBOX " ",IDC_STATIC,7,7,161,45
+ EDITTEXT IDC_TIME_FORMAT_EDIT,14,22,147,12,ES_AUTOHSCROLL
+ LTEXT ":",IDC_STATIC,14,38,50,8
+ LTEXT "",IDC_TIME_PREVIEW_STATIC,67,38,94,8,SS_ENDELLIPSIS
+ GROUPBOX " ",IDC_STATIC,7,57,161,45
+ EDITTEXT IDC_DATE_FORMAT_EDIT,14,72,147,12,ES_AUTOHSCROLL
+ LTEXT ":",IDC_STATIC,14,88,50,8
+ LTEXT "",IDC_DATE_PREVIEW_STATIC,67,88,94,8,SS_ENDELLIPSIS
+ PUSHBUTTON "&",IDC_HELP_BUTTON,7,110,50,14
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_MESSAGE_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 4
+ RIGHTMARGIN, 178
+ TOPMARGIN, 4
+ BOTTOMMARGIN, 123
+ END
+
+ IDD_OPTIONS_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 168
+ VERTGUIDE, 14
+ VERTGUIDE, 161
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 124
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_MESSAGE_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 100, 100, 0, 0,
+ 0, 0, 100, 100
+END
+
+IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 100, 100, 0, 0,
+ 100, 100, 0, 0,
+ 0, 0, 100, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 100, 0,
+ 0, 0, 100, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 100, 0,
+ 0, 100, 0, 0
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_PLUGIN_NAME " "
+ IDS_PLUGIN_DESCRIPTION " TrafficMonitor"
+ IDS_TIME ""
+ IDS_DATE ""
+ IDS_CUSTOM_DRAW_ITEM " "
+ IDS_MON ""
+ IDS_TUE ""
+ IDS_WED ""
+ IDS_THU ""
+END
+
+STRINGTABLE
+BEGIN
+ IDS_FRI ""
+ IDS_SAT ""
+ IDS_SUN ""
+ IDS_MONDAY ""
+ IDS_TUESDAY ""
+ IDS_WEDNESDAY ""
+ IDS_THURSDAY ""
+ IDS_FRIDAY ""
+ IDS_SATURDAY ""
+ IDS_SUNDAY ""
+ IDS_JAN ""
+ IDS_FEB ""
+ IDS_MAR ""
+ IDS_ARI ""
+ IDS_MAY ""
+ IDS_JUN ""
+END
+
+STRINGTABLE
+BEGIN
+ IDS_JUL ""
+ IDS_AUG ""
+ IDS_SEP ""
+ IDS_OCT ""
+ IDS_NOV ""
+ IDS_DEC ""
+ IDS_JANUARY ""
+ IDS_FEBRUARY ""
+ IDS_MARCH ""
+ IDS_APRIL ""
+ IDS_MAY_ ""
+ IDS_JUNE ""
+ IDS_JULY ""
+ IDS_AUGUST ""
+ IDS_SEPTEMBER ""
+ IDS_OCTOBER ""
+END
+
+STRINGTABLE
+BEGIN
+ IDS_NOVEMBER ""
+ IDS_DECEMBER ""
+ IDS_FORMAT_HELP " :\r\nd: (1 31).\r\ndd: (01 31).\r\nddd: , ('', .., '').\r\ndddd: , ('', .., '').\r\nM: (1-12).\r\nMM: (01-12).\r\nMMM: , ('', .., '').\r\nMMMM: , ('', .., '').\r\nyy: (00-99).\r\nyyyy: .\r\n\r\n :\r\nh: (1 12)\r\nhh: (01 12)\r\nH: (0 23)\r\nHH: (00 23)\r\nm: (0 59)\r\nmm: (00 59)\r\ns: (0 59)\r\nss: (00 59)\r\nAP: 12- . AP ""AM"" ""PM"".\r\nap: 12- . ap ""am"" ""pm"".\r\n"
+ IDS_HELP ""
+END
+
+#endif // () resources
+/////////////////////////////////////////////////////////////////////////////
+
+
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources
@@ -390,7 +558,7 @@ END
STRINGTABLE
BEGIN
IDS_JUL "Jul"
- IDS_AUT "Aut"
+ IDS_AUG "Aug"
IDS_SEP "Sep"
IDS_OCT "Oct"
IDS_NOV "Nov"
diff --git a/DateTime/DateTimeFormatHelper.cpp b/DateTime/DateTimeFormatHelper.cpp
index e4b08cb4..ed59379c 100644
--- a/DateTime/DateTimeFormatHelper.cpp
+++ b/DateTime/DateTimeFormatHelper.cpp
@@ -185,7 +185,7 @@ CString CDataTimeFormatHelper::GetMonthStringShort(DWORD month)
case 5: return g_data.StringRes(IDS_MAY);
case 6: return g_data.StringRes(IDS_JUN);
case 7: return g_data.StringRes(IDS_JUL);
- case 8: return g_data.StringRes(IDS_AUT);
+ case 8: return g_data.StringRes(IDS_AUG);
case 9: return g_data.StringRes(IDS_SEP);
case 10: return g_data.StringRes(IDS_OCT);
case 11: return g_data.StringRes(IDS_NOV);
diff --git a/DateTime/resource.h b/DateTime/resource.h
index 75c10376..01fcf1bd 100644
--- a/DateTime/resource.h
+++ b/DateTime/resource.h
@@ -32,7 +32,7 @@
#define IDS_MAY 126
#define IDS_JUN 127
#define IDS_JUL 128
-#define IDS_AUT 129
+#define IDS_AUG 129
#define IDS_SEP 130
#define IDS_OCT 131
#define IDS_NOV 132
diff --git a/GP/DataManager.cpp b/GP/DataManager.cpp
index 9b457248..1c826d81 100644
--- a/GP/DataManager.cpp
+++ b/GP/DataManager.cpp
@@ -117,11 +117,11 @@ HICON CDataManager::GetIcon(UINT id)
}
}
-std::wstring GupiaoInfo::ToString() const
+CString GupiaoInfo::ToString() const
{
- std::wstringstream wss;
- wss << p << ' ' << pc;
- return wss.str();
+ if (g_data.m_setting_data.show_space)
+ return p + L" ¥ " + pc + L" %";
+ return p + L"¥ " + pc + L"%";
}
GupiaoInfo& CDataManager::GetGPInfo(CString key)
diff --git a/GP/DataManager.h b/GP/DataManager.h
index 419a73ae..b7052efc 100644
--- a/GP/DataManager.h
+++ b/GP/DataManager.h
@@ -11,6 +11,7 @@ struct SettingData
CString m_all_gp_code_str{};
vector m_gp_codes; // 代码
bool m_full_day{}; // 全天更新
+ bool show_space{};
void setupByCodeStr(CString codeStr);
void updateAllCodeStr();
@@ -19,10 +20,10 @@ struct SettingData
// GP显示数据
struct GupiaoInfo
{
- std::wstring pc = L"--%";
- std::wstring p = L"--";
- std::wstring name = L"";
- std::wstring ToString() const;
+ CString pc = L"--";
+ CString p = L"--";
+ CString name = L"";
+ CString ToString() const;
};
class CDataManager
diff --git a/GP/GP.cpp b/GP/GP.cpp
index c9aa0914..1edb2019 100644
--- a/GP/GP.cpp
+++ b/GP/GP.cpp
@@ -46,11 +46,17 @@ UINT GP::ThreadCallback(LPVOID dwUser)
m_instance.m_last_request_time = cur_time;
if (g_data.m_setting_data.m_full_day != 1) {
- SYSTEMTIME now_time;
- GetLocalTime(&now_time);
- //CCommon::WriteLog(now_time.wHour, g_data.m_log_path.c_str());
- //CCommon::WriteLog(now_time.wMinute, g_data.m_log_path.c_str());
- if (now_time.wHour < 9 || now_time.wHour > 15 || (now_time.wHour == 15 && now_time.wMinute > 30)) {
+ TIME_ZONE_INFORMATION tz_china{};
+ tz_china.Bias = -8 * 60; // China Standard Time UTC+08:00
+
+ SYSTEMTIME utc_time{}, china_time{};
+ GetSystemTime(&utc_time);
+ SystemTimeToTzSpecificLocalTime(&tz_china, &utc_time, &china_time);
+ //CString log_time;
+ //log_time.Format(_T("UTC: %d:%02d, China: %d:%02d"), utc_time.wHour, utc_time.wMinute, china_time.wHour, china_time.wMinute);
+ //CCommon::WriteLog(log_time, g_data.m_log_path.c_str());
+
+ if (china_time.wHour < 9 || (china_time.wHour == 15 && china_time.wMinute > 30) || china_time.wHour > 15) { // 9:00-15:30
CCommon::WriteLog(L"Not currently in trading time!", g_data.m_log_path.c_str());
g_data.ResetText();
return 0;
@@ -164,12 +170,8 @@ void GP::ParseJsonData(std::string json_data)
yesterday = { convert(data_arr[2]) };
}
- char buff[32];
- sprintf_s(buff, "%.2f", now);
- gpInfo.p = CCommon::StrToUnicode(buff);
-
- sprintf_s(buff, "%.2f%%", ((now - yesterday) / yesterday * 100));
- gpInfo.pc = CCommon::StrToUnicode(buff);
+ gpInfo.p.Format(_T("%.2f"), now);
+ gpInfo.pc.Format(_T("%.2f"), ((now - yesterday) / yesterday * 100));
gpInfo.name = name;
}
@@ -207,7 +209,7 @@ void GP::DataRequired()
time_t cur_time = time(nullptr);
if (cur_time - m_instance.m_last_request_time > 3) {
last_req_time = cur_time;
- SendGPInfoQequest();
+ SendGPInfoRequest();
}
}
@@ -257,6 +259,9 @@ void GP::OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data)
g_data.LoadConfig(std::wstring(data));
updateItems();
break;
+ case ITMPlugin::EI_TASKBAR_WND_SPERATE_WITH_SPACE:
+ g_data.m_setting_data.show_space = _wtoi(data);
+ break;
default:
break;
}
@@ -280,7 +285,7 @@ void GP::updateItems()
}
}
-void GP::SendGPInfoQequest()
+void GP::SendGPInfoRequest()
{
if (!m_is_thread_runing) //确保线程已退出
AfxBeginThread(ThreadCallback, nullptr);
@@ -312,7 +317,7 @@ void GP::ShowContextMenu(CWnd* pWnd)
//点击了“更新”
else if (id == ID_UPDATE)
{
- SendGPInfoQequest();
+ SendGPInfoRequest();
}
}
}
diff --git a/GP/GP.h b/GP/GP.h
index bd81cd8d..869a9b4d 100644
--- a/GP/GP.h
+++ b/GP/GP.h
@@ -31,7 +31,7 @@ class GP : public ITMPlugin
virtual OptionReturn ShowOptionsDialog(void* hParent) override;
virtual const wchar_t* GetInfo(PluginInfoIndex index) override;
virtual void OnExtenedInfo(ExtendedInfoIndex index, const wchar_t* data) override;
- void SendGPInfoQequest();
+ void SendGPInfoRequest();
void ShowContextMenu(CWnd* pWnd);
void DisableUpdateCommand();
void EnableUpdateCommand();
diff --git a/GP/GP.rc b/GP/GP.rc
index 5a760bac..258f8795 100644
--- a/GP/GP.rc
+++ b/GP/GP.rc
@@ -209,12 +209,148 @@ BEGIN
IDS_PLUGIN_NAME "Ʊ"
IDS_PLUGIN_DESCRIPTION "TrafficMonitorĹƱ"
IDS_PLUGIN_ITEM_NAME "GP"
+ IDS_PLUGIN_INFO_DYNAMIC_CREATE "TrafficMonitor̬ItemѴﵽ趨"
+ IDS_PLUGIN_INFO_RESTART "δˢTrafficMonitor"
END
#endif // (壬й) resources
/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// () resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_MANAGER_DIALOG DIALOGEX 0, 0, 142, 145
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION " "
+FONT 9, "Segoe UI", 400, 0, 0xCC
+BEGIN
+ DEFPUSHBUTTON "",IDOK,31,126,50,12
+ PUSHBUTTON "",IDCANCEL,85,126,50,12
+ LISTBOX IDC_MGR_LIST,7,7,128,82,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "",IDC_MGR_ADD_BTN,21,93,50,12
+ PUSHBUTTON "",IDC_MGR_DEL_BTN,75,93,50,12
+ CONTROL " ",IDC_FULL_DAY_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,113,10
+END
+
+IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 138, 138
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION ""
+FONT 9, "Segoe UI", 400, 0, 0xCC
+BEGIN
+ DEFPUSHBUTTON "",IDOK,24,119,50,12
+ PUSHBUTTON "",IDCANCEL,81,119,50,12
+ LTEXT ":",IDC_CODE_LABEL,7,8,21,8
+ EDITTEXT IDC_CODE_EDIT,31,7,100,12,ES_AUTOHSCROLL
+ GROUPBOX " ",IDC_STATIC,7,22,124,88
+ CONTROL "",IDC_RADIO_SZ,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,33,53,10
+ CONTROL "",IDC_RADIO_HK,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,45,42,10
+ CONTROL "",IDC_RADIO_BJ,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,57,36,10
+ CONTROL "",IDC_RADIO_SH,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,69,41,10
+ CONTROL " ",IDC_RADIO_GB,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,81,53,10
+ CONTROL " ( )",IDC_RADIO_OTHER,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,93,99,10
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_MANAGER_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 135
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 138
+ END
+
+ IDD_OPTIONS_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 131
+ VERTGUIDE, 14
+ VERTGUIDE, 24
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 131
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_MANAGER_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
+IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 100, 100, 0, 0,
+ 100, 100, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU1 MENU
+BEGIN
+ POPUP "1"
+ BEGIN
+ MENUITEM "& ...", ID_OPTIONS
+ MENUITEM "& ", ID_UPDATE
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_PLUGIN_NAME " "
+ IDS_PLUGIN_DESCRIPTION " TrafficMonitor"
+ IDS_PLUGIN_ITEM_NAME " "
+ IDS_PLUGIN_INFO_DYNAMIC_CREATE
+ "TrafficMonitor .\n "
+ IDS_PLUGIN_INFO_RESTART " ,\n TrafficMonitor"
+END
+
+#endif // () resources
+/////////////////////////////////////////////////////////////////////////////
+
+
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources
@@ -232,6 +368,9 @@ BEGIN
IDS_PLUGIN_NAME "Stock Plugin"
IDS_PLUGIN_DESCRIPTION "Stock plugin for TrafficMonitor."
IDS_PLUGIN_ITEM_NAME "Stock"
+ IDS_PLUGIN_INFO_DYNAMIC_CREATE
+ "Since TrafficMonitor cannot dynamically create items, the set limit has been reached"
+ IDS_PLUGIN_INFO_RESTART "If the interface is not refreshed, please restart TrafficMonitor"
END
#endif // Ӣ() resources
diff --git a/GP/GPItem.cpp b/GP/GPItem.cpp
index 795ad11b..dffc7e45 100644
--- a/GP/GPItem.cpp
+++ b/GP/GPItem.cpp
@@ -53,7 +53,10 @@ int GPItem::GetItemWidthEx(void * hDC) const
{
//绘图句柄
CDC* pDC = CDC::FromHandle((HDC)hDC);
- return pDC->GetTextExtent(L"000000000000").cx;
+ if (g_data.GetGPInfo(gp_id).p != L"--")
+ return pDC->GetTextExtent(g_data.GetGPInfo(gp_id).ToString()).cx;
+ else
+ return pDC->GetTextExtent(L"999.99¥ 99.99%").cx;
}
return 0;
}
diff --git a/GP/ManagerDialog.cpp b/GP/ManagerDialog.cpp
index 6f71bcc3..fe7692c6 100644
--- a/GP/ManagerDialog.cpp
+++ b/GP/ManagerDialog.cpp
@@ -92,7 +92,7 @@ void CManagerDialog::OnAddBtnClick()
{
if (m_data.m_gp_codes.size() >= GP_ITEM_MAX)
{
- MessageBox(TEXT("由于TrafficMonitor无法动态创建Item,已达到设定上限"), TEXT(""), MB_ICONWARNING | MB_OK);
+ MessageBox(g_data.StringRes(IDS_PLUGIN_INFO_DYNAMIC_CREATE), TEXT(""), MB_ICONWARNING | MB_OK);
return;
}
COptionsDlg dlg;
@@ -127,8 +127,8 @@ void CManagerDialog::OnBnClickedOk()
{
g_data.m_setting_data = m_data;
g_data.SaveConfig();
- GP::Instance().SendGPInfoQequest();
- MessageBox(TEXT("如果界面未刷新请重启TrafficMonitor"), TEXT(""), MB_ICONWARNING | MB_OK);
+ GP::Instance().SendGPInfoRequest();
+ MessageBox(g_data.StringRes(IDS_PLUGIN_INFO_RESTART), TEXT(""), MB_ICONWARNING | MB_OK);
}
CDialog::OnOK();
}
diff --git a/GP/resource.h b/GP/resource.h
index 95166fba..6fed4640 100644
--- a/GP/resource.h
+++ b/GP/resource.h
@@ -7,6 +7,8 @@
#define IDS_PLUGIN_DESCRIPTION 104
#define IDR_MENU1 104
#define IDS_PLUGIN_ITEM_NAME 105
+#define IDS_PLUGIN_INFO_DYNAMIC_CREATE 106
+#define IDS_PLUGIN_INFO_RESTART 107
#define IDD_MANAGER_DIALOG 108
#define IDC_CODE_EDIT 1003
#define IDC_UPDATE_BUTTON 1004
diff --git a/PluginTemplate/PluginTemplate.rc b/PluginTemplate/PluginTemplate.rc
index 7e8538af..6c11ea59 100644
--- a/PluginTemplate/PluginTemplate.rc
+++ b/PluginTemplate/PluginTemplate.rc
@@ -156,6 +156,74 @@ END
/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// () resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 194, 135
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION ""
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "",IDOK,80,114,50,14
+ PUSHBUTTON "",IDCANCEL,137,114,50,14
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_OPTIONS_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 187
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 128
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_PLUGIN_NAME ""
+ IDS_PLUGIN_DESCRIPTION ""
+ IDS_PLUGIN_ITEM_NAME ""
+END
+
+#endif // () resources
+/////////////////////////////////////////////////////////////////////////////
+
+
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources
diff --git a/PluginTester/CommonData.h b/PluginTester/CommonData.h
index f308b8e3..80afd276 100644
--- a/PluginTester/CommonData.h
+++ b/PluginTester/CommonData.h
@@ -25,5 +25,6 @@ enum class Language
{
FOLLOWING_SYSTEM, //ϵͳ
ENGLISH, //Ӣ
- SIMPLIFIED_CHINESE //
+ SIMPLIFIED_CHINESE, //
+ RUSSIAN
};
diff --git a/PluginTester/PluginTester.cpp b/PluginTester/PluginTester.cpp
index c01f93e2..f9ff17c8 100644
--- a/PluginTester/PluginTester.cpp
+++ b/PluginTester/PluginTester.cpp
@@ -92,6 +92,9 @@ BOOL CPluginTesterApp::InitInstance()
case Language::SIMPLIFIED_CHINESE:
SetThreadUILanguage(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED));
break;
+ case Language::RUSSIAN:
+ SetThreadUILanguage(MAKELANGID(LANG_RUSSIAN, SUBLANG_RUSSIAN_RUSSIA));
+ break;
default:
break;
}
diff --git a/PluginTester/PluginTester.rc b/PluginTester/PluginTester.rc
index 2150c064..69e69b17 100644
Binary files a/PluginTester/PluginTester.rc and b/PluginTester/PluginTester.rc differ
diff --git a/PluginTester/PluginTesterDlg.cpp b/PluginTester/PluginTesterDlg.cpp
index 5e742d83..88fb57c2 100644
--- a/PluginTester/PluginTesterDlg.cpp
+++ b/PluginTester/PluginTesterDlg.cpp
@@ -190,6 +190,7 @@ BEGIN_MESSAGE_MAP(CPluginTesterDlg, CDialog)
ON_BN_CLICKED(IDC_SPECIFY_WIDTH_CHECK, &CPluginTesterDlg::OnBnClickedSpecifyWidthCheck)
ON_COMMAND(ID_LANGUAGE_CHINESE, &CPluginTesterDlg::OnLanguageChinese)
ON_COMMAND(ID_LANGUAGE_ENGLISH, &CPluginTesterDlg::OnLanguageEnglish)
+ ON_COMMAND(ID_LANGUAGE_RUSSIAN, &CPluginTesterDlg::OnLanguageRussian)
ON_COMMAND(ID_LANGUAGE_FOLLOWING_SYSTEM, &CPluginTesterDlg::OnLanguageFollowingSystem)
ON_WM_INITMENU()
ON_BN_CLICKED(IDC_PLUGIN_COMMANDS_BUTTON, &CPluginTesterDlg::OnBnClickedPluginCommandsButton)
@@ -680,6 +681,17 @@ void CPluginTesterDlg::OnLanguageEnglish()
}
+void CPluginTesterDlg::OnLanguageRussian()
+{
+ if (theApp.m_language != Language::RUSSIAN)
+ {
+ theApp.m_language = Language::RUSSIAN;
+ SaveConfig();
+ MessageBox(theApp.LoadText(IDS_LANGUAGE_CHANGE), NULL, MB_ICONINFORMATION);
+ }
+}
+
+
void CPluginTesterDlg::OnLanguageFollowingSystem()
{
if (theApp.m_language != Language::FOLLOWING_SYSTEM)
@@ -699,6 +711,7 @@ void CPluginTesterDlg::OnInitMenu(CMenu* pMenu)
{
case Language::ENGLISH: pMenu->CheckMenuRadioItem(ID_LANGUAGE_FOLLOWING_SYSTEM, ID_LANGUAGE_ENGLISH, ID_LANGUAGE_ENGLISH, MF_BYCOMMAND | MF_CHECKED); break;
case Language::SIMPLIFIED_CHINESE: pMenu->CheckMenuRadioItem(ID_LANGUAGE_FOLLOWING_SYSTEM, ID_LANGUAGE_ENGLISH, ID_LANGUAGE_CHINESE, MF_BYCOMMAND | MF_CHECKED); break;
+ case Language::RUSSIAN: pMenu->CheckMenuRadioItem(ID_LANGUAGE_FOLLOWING_SYSTEM, ID_LANGUAGE_ENGLISH, ID_LANGUAGE_RUSSIAN, MF_BYCOMMAND | MF_CHECKED); break;
default: pMenu->CheckMenuRadioItem(ID_LANGUAGE_FOLLOWING_SYSTEM, ID_LANGUAGE_ENGLISH, ID_LANGUAGE_FOLLOWING_SYSTEM, MF_BYCOMMAND | MF_CHECKED); break;
}
diff --git a/PluginTester/PluginTesterDlg.h b/PluginTester/PluginTesterDlg.h
index cff3661d..abd03a40 100644
--- a/PluginTester/PluginTesterDlg.h
+++ b/PluginTester/PluginTesterDlg.h
@@ -78,6 +78,7 @@ class CPluginTesterDlg : public CDialog
afx_msg void OnBnClickedSpecifyWidthCheck();
afx_msg void OnLanguageChinese();
afx_msg void OnLanguageEnglish();
+ afx_msg void OnLanguageRussian();
afx_msg void OnLanguageFollowingSystem();
afx_msg void OnInitMenu(CMenu* pMenu);
afx_msg void OnBnClickedPluginCommandsButton();
diff --git a/PluginTester/resource.h b/PluginTester/resource.h
index 3944fa8b..69415b98 100644
Binary files a/PluginTester/resource.h and b/PluginTester/resource.h differ
diff --git a/TextReader/ChapterParser.cpp b/TextReader/ChapterParser.cpp
index 65867aaa..07cb9e76 100644
--- a/TextReader/ChapterParser.cpp
+++ b/TextReader/ChapterParser.cpp
@@ -37,7 +37,7 @@ void CChapterParser::Parse()
}
}
-
+
if (m_chapter.empty())
{
index = -1;
@@ -54,7 +54,24 @@ void CChapterParser::Parse()
index = index2 + 1;
}
}
+ }
+ if (m_chapter.empty())
+ {
+ index = -1;
+ while (true)
+ {
+ index = m_contents.find(L"Глава", index + 1);
+ if (index == std::wstring::npos)
+ break;
+ size_t index2 = m_contents.find_first_of(L"\r\n", index + 1);
+ if (index2 - index < 60)
+ {
+ std::wstring title = m_contents.substr(index, index2 - index);
+ m_chapter[index] = title;
+ index = index2 + 1;
+ }
+ }
}
}
diff --git a/TextReader/TextReader.rc b/TextReader/TextReader.rc
index a706bb59..6b42960b 100644
--- a/TextReader/TextReader.rc
+++ b/TextReader/TextReader.rc
@@ -334,6 +334,209 @@ END
/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// () resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_CHAPTER_DIALOG DIALOGEX 0, 0, 191, 125
+STYLE DS_SETFONT | WS_CHILD | WS_SYSMENU
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ LISTBOX IDC_LIST1,7,7,177,95,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
+ LTEXT " :",IDC_STATIC,7,106,59,8
+ LTEXT "",IDC_CHRRENT_CHAPTER_STATIC,68,106,116,8
+END
+
+IDD_OPTIONS_CONTAINER_DLG DIALOGEX 0, 0, 284, 182
+STYLE DS_SETFONT | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION " "
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "",IDOK,171,161,50,14
+ PUSHBUTTON "",IDCANCEL,227,161,50,14
+ CONTROL "",IDC_TAB1,"SysTabControl32",0x0,7,7,270,150
+ CONTROL "",IDC_HELP_SYSLINK1,"SysLink",WS_TABSTOP,7,166,30,9
+END
+
+IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 266, 151
+STYLE DS_SETFONT | WS_CHILD | WS_SYSMENU
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ LTEXT " :",IDC_STATIC,7,8,43,9
+ EDITTEXT IDC_FILE_PATH_EDIT,7,21,198,12,ES_AUTOHSCROLL | ES_READONLY
+ PUSHBUTTON "&...",IDC_BROWSE_BUTTON,209,19,50,15
+ CONTROL " Base64 ",IDC_AUTO_DECODE_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,38,252,9
+ LTEXT ":",IDC_STATIC,7,52,56,9
+ EDITTEXT IDC_READ_POSITION_EDIT,61,51,37,12,ES_AUTOHSCROLL
+ LTEXT ", ",IDC_STATIC,100,52,55,9
+ RTEXT "",IDC_TOTAL_CHAR_STATIC,154,52,33,9
+ LTEXT ".",IDC_STATIC,191,52,38,9
+ LTEXT "",IDC_PERCENT_STATIC,227,53,32,9
+ LTEXT " :",IDC_STATIC,7,68,52,9
+ EDITTEXT IDC_WINDOW_WIDTH_EDIT,61,67,37,12,ES_AUTOHSCROLL
+ CONTROL " ",IDC_SHOT_TOOLTIP_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,101,11
+ CONTROL " ",IDC_ENABLE_MULTI_LINE_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,115,80,117,11
+ CONTROL " ",IDC_HIDE_WHEN_LOSE_FOCUS_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,94,129,10
+ CONTROL " ",IDC_AUTO_READ_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,107,111,10
+ LTEXT "",IDC_STATIC,124,108,19,8
+ EDITTEXT IDC_AUTO_READ_INTERVAL_EDIT,146,106,40,12,ES_AUTOHSCROLL
+ LTEXT "",IDC_STATIC,190,108,10,8
+ CONTROL " ",IDC_USE_OWN_CONTEXT_MENU_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,121,162,9
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_CHAPTER_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 184
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 118
+ END
+
+ IDD_OPTIONS_CONTAINER_DLG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 277
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 175
+ END
+
+ IDD_OPTIONS_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 259
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 144
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_CHAPTER_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 0, 0, 100, 100,
+ 0, 100, 0, 0,
+ 0, 100, 100, 0
+END
+
+IDD_OPTIONS_CONTAINER_DLG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 100, 100, 0, 0,
+ 100, 100, 0, 0,
+ 0, 0, 100, 100,
+ 0, 100, 0, 0
+END
+
+IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 0, 0, 0, 0,
+ 0, 0, 100, 0,
+ 100, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU1 MENU
+BEGIN
+ POPUP "1"
+ BEGIN
+ MENUITEM "&\tUp", 40001
+ MENUITEM "&\tDown", ID_NEXT
+ MENUITEM SEPARATOR
+ MENUITEM "", ID_START_AUTO_READ
+ MENUITEM "&\tSpace", ID_HIDE
+ MENUITEM SEPARATOR
+ MENUITEM "&...", 40004
+ MENUITEM "&...", 40005
+ MENUITEM "&...", 40006
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_PLUGIN_NAME " "
+ IDS_PLUGIN_DESCRIPTION " TrafficMonitor"
+ IDS_PLUGIN_ITEM_NAME " "
+ IDS_FILTER " (*.txt)|*.txt| (*.*)|*.*||"
+ IDS_SETTINGS ""
+ IDS_CHAPTERS ""
+ IDS_BOOKMARK ""
+ IDS_BOOKMARK_POSITION ""
+ IDS_BOOKMARK_CONTENTS ""
+END
+
+STRINGTABLE
+BEGIN
+ IDS_CHAPTER ""
+ IDS_OPEN_FILE " "
+ IDS_READ_POSITION ""
+ IDS_MENU_PREVIOUS "&\tUp"
+ IDS_MENU_NEXT "&\tDown"
+ IDS_MENU_ADD_BOOKMARK " &"
+ IDS_MENU_AUTO_PAGE "&"
+ IDS_MENU_HIDE "&\tSpace"
+ IDS_MENU_CHAPTER "&..."
+ IDS_MENU_BOOKMARK "&..."
+END
+
+#endif // () resources
+/////////////////////////////////////////////////////////////////////////////
+
+
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources
@@ -357,13 +560,13 @@ BEGIN
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,38,252,9
LTEXT "Read position:",IDC_STATIC,7,52,56,9
EDITTEXT IDC_READ_POSITION_EDIT,61,51,37,12,ES_AUTOHSCROLL
- LTEXT "charactors, total",IDC_STATIC,100,52,55,9
+ LTEXT "characters, total",IDC_STATIC,100,52,55,9
RTEXT "",IDC_TOTAL_CHAR_STATIC,154,52,33,9
- LTEXT "charactors.",IDC_STATIC,191,52,38,9
+ LTEXT "characters.",IDC_STATIC,191,52,38,9
LTEXT "",IDC_PERCENT_STATIC,227,53,32,9
LTEXT "Window width:",IDC_STATIC,7,68,52,9
EDITTEXT IDC_WINDOW_WIDTH_EDIT,61,67,37,12,ES_AUTOHSCROLL
- CONTROL "Show in tooltops",IDC_SHOT_TOOLTIP_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,101,11
+ CONTROL "Show in tooltips",IDC_SHOT_TOOLTIP_CHECK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,81,101,11
CONTROL "Enable multi line display",IDC_ENABLE_MULTI_LINE_CHECK,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,115,80,117,11
CONTROL "Auto hide when lose focus",IDC_HIDE_WHEN_LOSE_FOCUS_CHECK,
diff --git a/Weather/Weather.rc b/Weather/Weather.rc
index 51390ba2..b3be02f3 100644
--- a/Weather/Weather.rc
+++ b/Weather/Weather.rc
@@ -298,6 +298,160 @@ END
/////////////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////////////////
+// () resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
+LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
+#pragma code_page(1251)
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_OPTIONS_DIALOG DIALOGEX 0, 0, 170, 135
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION " "
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "",IDOK,59,114,50,14
+ PUSHBUTTON "",IDCANCEL,113,114,50,14
+ LTEXT ":",IDC_STATIC,7,9,25,8
+ EDITTEXT IDC_CITY_EDIT,34,7,66,12,ES_AUTOHSCROLL | ES_READONLY
+ PUSHBUTTON " ...",IDC_SELECT_CITY_BUTTON,104,7,59,13
+ LTEXT " :",IDC_STATIC,7,48,71,8
+ COMBOBOX IDC_WEATHER_TYPE_COMBO,80,46,83,30,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
+ CONTROL " ",IDC_SHOW_TOOLTIPS_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,80,156,10
+ CONTROL " ",IDC_USE_WEATHER_ICON_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,92,156,10
+ PUSHBUTTON "& ",IDC_UPDATE_WEATHER_BUTTON,7,62,106,14
+ CONTROL " ",IDC_AUTO_LOCATE_CHECK,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,22,156,9
+ LTEXT "",IDC_AUTO_LOCATE_RESULT_STATIC,7,33,156,10
+ CONTROL "",IDC_HELP_SYSLINK,"SysLink",WS_TABSTOP,7,119,26,9
+END
+
+IDD_SELECT_CITY_DIALOG DIALOGEX 0, 0, 170, 135
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION " "
+FONT 9, "Segoe UI", 400, 0, 0x0
+BEGIN
+ DEFPUSHBUTTON "",IDOK,57,114,50,14
+ PUSHBUTTON "",IDCANCEL,113,114,50,14
+ CONTROL "",IDC_CITY_LIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,22,156,88
+ EDITTEXT IDC_SEARCH_EDIT,7,7,156,12,ES_AUTOHSCROLL
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_OPTIONS_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 163
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 128
+ END
+
+ IDD_SELECT_CITY_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 163
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 128
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// AFX_DIALOG_LAYOUT
+//
+
+IDD_OPTIONS_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 100, 100, 0, 0,
+ 100, 100, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0,
+ 0, 0, 0, 0
+END
+
+IDD_SELECT_CITY_DIALOG AFX_DIALOG_LAYOUT
+BEGIN
+ 0,
+ 100, 100, 0, 0,
+ 100, 100, 0, 0,
+ 0, 0, 100, 100,
+ 0, 0, 0, 0
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Menu
+//
+
+IDR_MENU1 MENU
+BEGIN
+ POPUP "1"
+ BEGIN
+ MENUITEM "&...", 40001
+ MENUITEM "& ", ID_UPDATE_WEATHER
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_WEATHER ""
+ IDS_PLUGIN_NAME " "
+ IDS_PLUGIN_DESCRIPTION " TrafficMonitor"
+ IDS_CITY ""
+ IDS_CITY_CODE " "
+ IDS_CLEAR_SEARCH_RESULT " "
+ IDS_INPUT_KEY_WORD " "
+ IDS_TODAY_WEATHER ""
+ IDS_TOMMORROW_WEATHER ""
+ IDS_UPDATE_TIME " "
+ IDS_THE_DAY_AFTER_TOMMORROW_WEATHER ""
+END
+
+STRINGTABLE
+BEGIN
+ IDS_CURRENT_WEATHER " "
+ IDS_CUR_POSITION ": "
+ IDS_LOCATION_FAILED " !"
+ IDS_UPDATE_WEATHER " "
+END
+
+#endif // () resources
+/////////////////////////////////////////////////////////////////////////////
+
+
/////////////////////////////////////////////////////////////////////////////
// Ӣ() resources