Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions TrafficMonitor/CommonData.h
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ struct TaskBarSettingData : public PublicSettingData
bool disable_d2d{ false };//是否禁用d2d绘图
DWORD update_layered_window_error_code{0}; // 使用D2D1渲染时,UpdateLayeredWindowIndirect失败的错误代码,会在关闭任务栏窗口时被重置为0
bool enable_colorful_emoji{ true }; //是否显示彩色emoji
bool m_mouse_penetrate{ false }; //任务栏窗口鼠标穿透

bool is_windows_web_experience_detected{ false }; //是否检测到Windows Web Experience小组件安装信息
};
Expand Down
18 changes: 14 additions & 4 deletions TrafficMonitor/TaskBarDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ BEGIN_MESSAGE_MAP(CTaskBarDlg, CDialogEx)
ON_WM_PAINT()
ON_WM_CLOSE()
ON_WM_LBUTTONUP()
ON_WM_NCHITTEST()
ON_MESSAGE(WM_EXITMENULOOP, &CTaskBarDlg::OnExitmenuloop)
ON_MESSAGE(WM_TABLET_QUERYSYSTEMGESTURESTATUS, &CTaskBarDlg::OnTabletQuerysystemgesturestatus)
ON_WM_MOUSEWHEEL()
Expand Down Expand Up @@ -138,8 +139,9 @@ void CTaskBarDlg::ShowInfo(CDC* pDC)
this->m_taskbar_draw_common_window_support.Get(),
this->m_d2d1_device_context_support.Get(),
d2d_size);
// 仅透明时,且UpdateLayeredWindowIndirect失败时,启用此渲染器,默认初始化为全黑,alpha=1
p_draw_common->FillRect(draw_rect, 0x00000000, 1);
// 仅透明时,且UpdateLayeredWindowIndirect失败时,启用此渲染器,默认初始化为全黑
BYTE bg_alpha = theApp.m_taskbar_data.m_mouse_penetrate ? 0 : 1;
p_draw_common->FillRect(draw_rect, 0x00000000, bg_alpha);
p_draw_common->SetFont(&m_font);
p_draw_common->SetBackColor(theApp.m_taskbar_data.back_color);
// 构造buffer
Expand All @@ -163,8 +165,9 @@ void CTaskBarDlg::ShowInfo(CDC* pDC)
this->m_taskbar_draw_common_window_support.Get(),
this->m_d2d1_device_context_support.Get(),
d2d_size);
// 仅透明时启用此渲染器,默认初始化为全黑,alpha=1
p_draw_common->FillRect(draw_rect, 0x00000000, 1);
// 仅透明时启用此渲染器,默认初始化为全黑
BYTE bg_alpha = theApp.m_taskbar_data.m_mouse_penetrate ? 0 : 1;
p_draw_common->FillRect(draw_rect, 0x00000000, bg_alpha);
p_draw_common->SetFont(&m_font);
p_draw_common->SetBackColor(theApp.m_taskbar_data.back_color);
// 构造buffer
Expand Down Expand Up @@ -1450,6 +1453,13 @@ void CTaskBarDlg::OnLButtonUp(UINT nFlags, CPoint point)
CDialogEx::OnLButtonUp(nFlags, point);
}

LRESULT CTaskBarDlg::OnNcHitTest(CPoint point)
{
if (theApp.m_taskbar_data.m_mouse_penetrate)
return HTTRANSPARENT;
return CDialogEx::OnNcHitTest(point);
}

afx_msg LRESULT CTaskBarDlg::OnExitmenuloop(WPARAM wParam, LPARAM lParam)
{
m_menu_popuped = false;
Expand Down
1 change: 1 addition & 0 deletions TrafficMonitor/TaskBarDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,7 @@ class CTaskBarDlg : public CDialogEx
afx_msg void OnPaint();
afx_msg void OnClose();
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
afx_msg LRESULT OnNcHitTest(CPoint point);
protected:
afx_msg LRESULT OnExitmenuloop(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnTabletQuerysystemgesturestatus(WPARAM wParam, LPARAM lParam);
Expand Down
8 changes: 8 additions & 0 deletions TrafficMonitor/TaskBarSettingsDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,7 @@ BEGIN_MESSAGE_MAP(CTaskBarSettingsDlg, CTabDlg)
ON_CBN_SELCHANGE(IDC_DISPLAY_TO_SHOW_TASKBAR_WND_COMBO, &CTaskBarSettingsDlg::OnCbnSelchangeDisplayToShowTaskbarWndCombo)
ON_BN_CLICKED(IDC_USAGE_GRAPH_FOLLOW_SYSTEM_CHECK, &CTaskBarSettingsDlg::OnBnClickedUsageGraphFollowSystemCheck)
ON_EN_CHANGE(IDC_FONT_SIZE_EDIT1, &CTaskBarSettingsDlg::OnEnChangeFontSizeEdit1)
ON_BN_CLICKED(IDC_TASKBAR_MOUSE_PENETRATE_CHECK, &CTaskBarSettingsDlg::OnBnClickedTaskbarMousePenetrateCheck)
END_MESSAGE_MAP()


Expand Down Expand Up @@ -307,6 +308,7 @@ BOOL CTaskBarSettingsDlg::OnInitDialog()
((CButton*)GetDlgItem(IDC_SHOW_STATUS_BAR_CHECK))->SetCheck(m_data.show_status_bar);
((CButton*)GetDlgItem(IDC_SEPARATE_VALUE_UNIT_CHECK))->SetCheck(m_data.separate_value_unit_with_space);
((CButton*)GetDlgItem(IDC_SHOW_TOOL_TIP_CHK))->SetCheck(m_data.show_tool_tip);
CheckDlgButton(IDC_TASKBAR_MOUSE_PENETRATE_CHECK, m_data.m_mouse_penetrate);

CheckDlgButton(IDC_TASKBAR_WND_IN_SECONDARY_DISPLAY_CHECK, m_data.show_taskbar_wnd_in_secondary_display);

Expand Down Expand Up @@ -990,3 +992,9 @@ void CTaskBarSettingsDlg::OnEnChangeFontSizeEdit1()
{
m_data.font.size = m_font_size_edit.GetValue();
}


void CTaskBarSettingsDlg::OnBnClickedTaskbarMousePenetrateCheck()
{
m_data.m_mouse_penetrate = (IsDlgButtonChecked(IDC_TASKBAR_MOUSE_PENETRATE_CHECK) != FALSE);
}
1 change: 1 addition & 0 deletions TrafficMonitor/TaskBarSettingsDlg.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,4 +124,5 @@ class CTaskBarSettingsDlg : public CTabDlg
afx_msg void OnCbnSelchangeDisplayToShowTaskbarWndCombo();
afx_msg void OnBnClickedUsageGraphFollowSystemCheck();
afx_msg void OnEnChangeFontSizeEdit1();
afx_msg void OnBnClickedTaskbarMousePenetrateCheck();
};
9 changes: 7 additions & 2 deletions TrafficMonitor/TrafficMonitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,8 @@ void CTrafficMonitorApp::LoadConfig()
else
m_taskbar_data.disable_d2d = true;
m_taskbar_data.enable_colorful_emoji = ini.GetBool(L"task_bar", L"enable_colorful_emoji", true);
// 迁移:如果 mouse_penetrate 键不存在,则继承主窗口的鼠标穿透设置
m_taskbar_data.m_mouse_penetrate = ini.GetBool(L"task_bar", L"mouse_penetrate", m_main_wnd_data.m_mouse_penetrate);

//其他设置
//m_cfg_data.m_show_internet_ip = ini.GetBool(L"connection_details", L"show_internet_ip", false);
Expand Down Expand Up @@ -431,6 +433,7 @@ void CTrafficMonitorApp::SaveConfig()

ini.WriteBool(L"task_bar", L"disable_d2d", m_taskbar_data.disable_d2d);
ini.WriteBool(L"task_bar", L"enable_colorful_emoji", m_taskbar_data.enable_colorful_emoji);
ini.WriteBool(L"task_bar", L"mouse_penetrate", m_taskbar_data.m_mouse_penetrate);

//其他设置
//ini.WriteBool(L"connection_details", L"show_internet_ip", m_cfg_data.m_show_internet_ip);
Expand Down Expand Up @@ -1202,8 +1205,10 @@ void CTrafficMonitorApp::UpdateOpenHardwareMonitorEnableState()

bool CTrafficMonitorApp::IsForceShowNotifyIcon()
{
return ((!m_cfg_data.m_show_task_bar_wnd /*|| m_win_version.IsWindows11OrLater()*/)
&& (m_cfg_data.m_hide_main_window || m_main_wnd_data.m_mouse_penetrate)); //如果没有显示任务栏窗口,且隐藏了主窗口或设置了鼠标穿透,则禁用“显示通知区图标”菜单项
// 任务栏窗口可交互 = 已显示 且 未设置鼠标穿透
bool taskbar_interactive = m_cfg_data.m_show_task_bar_wnd && !m_taskbar_data.m_mouse_penetrate;
return (!taskbar_interactive
&& (m_cfg_data.m_hide_main_window || m_main_wnd_data.m_mouse_penetrate));
}

std::wstring CTrafficMonitorApp::GetPlauginTooltipInfo() const
Expand Down
Binary file modified TrafficMonitor/TrafficMonitor.rc
Binary file not shown.
11 changes: 11 additions & 0 deletions TrafficMonitor/TrafficMonitorDlg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,7 @@ void CTrafficMonitorDlg::ApplySettings(COptionsDlg& optionsDlg)
bool is_hardware_monitor_item_changed = (optionsDlg.m_tab3_dlg.m_data.hardware_monitor_item != theApp.m_general_data.hardware_monitor_item);
bool is_always_on_top_changed = (optionsDlg.m_tab1_dlg.m_data.m_always_on_top != theApp.m_main_wnd_data.m_always_on_top);
bool is_mouse_penerate_changed = (optionsDlg.m_tab1_dlg.m_data.m_mouse_penetrate != theApp.m_main_wnd_data.m_mouse_penetrate);
bool is_taskbar_mouse_penetrate_changed = (optionsDlg.m_tab2_dlg.m_data.m_mouse_penetrate != theApp.m_taskbar_data.m_mouse_penetrate);
bool is_alow_out_of_border_changed = (optionsDlg.m_tab1_dlg.m_data.m_alow_out_of_border != theApp.m_main_wnd_data.m_alow_out_of_border);
bool is_show_notify_icon_changed = (optionsDlg.m_tab3_dlg.m_data.show_notify_icon != theApp.m_general_data.show_notify_icon);
bool is_connections_hide_changed = (optionsDlg.m_tab3_dlg.m_data.connections_hide.data() != theApp.m_general_data.connections_hide.data());
Expand Down Expand Up @@ -840,6 +841,16 @@ void CTrafficMonitorDlg::ApplySettings(COptionsDlg& optionsDlg)
}
}

if (is_taskbar_mouse_penetrate_changed)
{
//任务栏鼠标穿透变化后,检查是否需要强制显示通知区图标
if (!theApp.m_general_data.show_notify_icon && theApp.IsForceShowNotifyIcon())
{
AddNotifyIcon();
theApp.m_general_data.show_notify_icon = true;
}
}

if (is_alow_out_of_border_changed)
{
CheckWindowPos();
Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/English.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "en-US"
DISPLAY_NAME = "English"
TRANSLATOR = ""
Expand Down Expand Up @@ -352,6 +352,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Display &Text settings..."
TXT_MEMORY_DISPLAY_MODE = "Memory display mode:"
TXT_ALWAYS_ON_TOP_CHECK = "Always on top"
TXT_MOUSE_PENETRATE_CHECK = "Mouse penetrate"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Taskbar window mouse penetrate"
TXT_LOCK_WINDOW_POS_CHECK = "Lock window position"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Allow out of screen boundaries"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/German.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "de-DE"
DISPLAY_NAME = "Deutsch"
TRANSLATOR = "bege10"
Expand Down Expand Up @@ -354,6 +354,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Anzeige&text-Einstellungen..."
TXT_MEMORY_DISPLAY_MODE = "Speicheranzeigemodus:"
TXT_ALWAYS_ON_TOP_CHECK = "Immer im Vordergrund"
TXT_MOUSE_PENETRATE_CHECK = "Durchklickbar"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Taskleistenfenster durchklickbar"
TXT_LOCK_WINDOW_POS_CHECK = "Fensterposition sperren"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Erlaube über Bildschirmrand hinaus"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Hebrew.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "he-IL"
DISPLAY_NAME = "עברית"
TRANSLATOR = "Y-PLONI"
Expand Down Expand Up @@ -350,6 +350,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "הגדרות תצוגת טקסט..."
TXT_MEMORY_DISPLAY_MODE = "מצב תצוגת זיכרון:"
TXT_ALWAYS_ON_TOP_CHECK = "תמיד עליון"
TXT_MOUSE_PENETRATE_CHECK = "אפשר חדירת עכבר"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "אפשר חדירת עכבר בחלון שורת המשימות"
TXT_LOCK_WINDOW_POS_CHECK = "נעל מיקום חלון"
TXT_ALOW_OUT_OF_BORDER_CHECK = "אפשר חריגה מגבולות המסך"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Hungarian.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "hu-HU"
DISPLAY_NAME = "Magyar"
TRANSLATOR = "John Fowler"
Expand Down Expand Up @@ -351,6 +351,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Megjelenő szöveg beállításai..."
TXT_MEMORY_DISPLAY_MODE = "Memória megjelenítési mód:"
TXT_ALWAYS_ON_TOP_CHECK = "Mindig előtérben"
TXT_MOUSE_PENETRATE_CHECK = "Rámutatás egérrel"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Tálca ablak rámutatás egérrel"
TXT_LOCK_WINDOW_POS_CHECK = "Ablak pozíciójának zárolása"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Képernyőhatáron kívüli megjelenítés engedélyezése"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Italian.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "it-IT"
DISPLAY_NAME = "Italiano"
TRANSLATOR = "bovirus"
Expand Down Expand Up @@ -351,6 +351,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Impostazioni visualizzazione &testo..."
TXT_MEMORY_DISPLAY_MODE = "Modo visualizzazione memoria:"
TXT_ALWAYS_ON_TOP_CHECK = "Sempre in primo piano"
TXT_MOUSE_PENETRATE_CHECK = "Mouse penetrate"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Penetra mouse finestra barra applicazioni"
TXT_LOCK_WINDOW_POS_CHECK = "Blocca posizione finestra"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Consenti oltre i confini dello schermo"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Polish.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "pl-PL"
DISPLAY_NAME = "Polish"
TRANSLATOR = "JakubDriver"
Expand Down Expand Up @@ -347,6 +347,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Ustawienia wyświetlania &tekstu..."
TXT_MEMORY_DISPLAY_MODE = "Tryb wyświetlania pamięci:"
TXT_ALWAYS_ON_TOP_CHECK = "Zawsze na szczycie"
TXT_MOUSE_PENETRATE_CHECK = "Mysz penetruje"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Mysz penetruje okno paska zadań"
TXT_LOCK_WINDOW_POS_CHECK = "Zablokuj pozycję okna"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Zezwalaj na wyjście poza granice ekranu"

Expand Down
1 change: 1 addition & 0 deletions TrafficMonitor/language/Portuguese_Brazilian.ini
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Configurações de &Texto..."
TXT_MEMORY_DISPLAY_MODE = "Modo de exibição de memória:"
TXT_ALWAYS_ON_TOP_CHECK = "Sempre no topo"
TXT_MOUSE_PENETRATE_CHECK = "Penetração do mouse"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Penetração do mouse na janela da barra de tarefas"
TXT_LOCK_WINDOW_POS_CHECK = "Travar posição da janela"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Permitir sair dos limites da tela"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Russian.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "ru-RU"
DISPLAY_NAME = "Russian"
TRANSLATOR = "Dmitry Yerokhin"
Expand Down Expand Up @@ -352,6 +352,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Настройки &текста..."
TXT_MEMORY_DISPLAY_MODE = "Память:"
TXT_ALWAYS_ON_TOP_CHECK = "Всегда поверх всех окон"
TXT_MOUSE_PENETRATE_CHECK = "Сквозное нажатие мышью"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Сквозное нажатие мышью в окне панели задач"
TXT_LOCK_WINDOW_POS_CHECK = "Заблокировать место окна"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Выходить за границы экрана"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Simplified_Chinese.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "zh-CN"
DISPLAY_NAME = "简体中文"
TRANSLATOR = ""
Expand Down Expand Up @@ -352,6 +352,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "显示文本设置(&T)..."
TXT_MEMORY_DISPLAY_MODE = "内存显示方式:"
TXT_ALWAYS_ON_TOP_CHECK = "总是置顶"
TXT_MOUSE_PENETRATE_CHECK = "鼠标穿透"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "任务栏窗口鼠标穿透"
TXT_LOCK_WINDOW_POS_CHECK = "锁定窗口位置"
TXT_ALOW_OUT_OF_BORDER_CHECK = "允许超出屏幕边界"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Traditional_Chinese.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "zh-TW"
DISPLAY_NAME = "繁體中文"
TRANSLATOR = "GT Wang"
Expand Down Expand Up @@ -352,6 +352,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "顯示文字設定(&T)..."
TXT_MEMORY_DISPLAY_MODE = "記憶體顯示方式:"
TXT_ALWAYS_ON_TOP_CHECK = "最上層顯示"
TXT_MOUSE_PENETRATE_CHECK = "游標穿透"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "工作列視窗游標穿透"
TXT_LOCK_WINDOW_POS_CHECK = "鎖定視窗位置"
TXT_ALOW_OUT_OF_BORDER_CHECK = "允許超出螢幕邊界"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/language/Turkish.ini
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[general]
[general]
BCP_47 = "tr-TR"
DISPLAY_NAME = "Turkish"
TRANSLATOR = "hberkayaktas"
Expand Down Expand Up @@ -345,6 +345,7 @@ TXT_DISPLAY_TEXT_SETTING_BUTTON = "Metin Görüntüleme Ayarları..."
TXT_MEMORY_DISPLAY_MODE = "Bellek görüntüleme modu:"
TXT_ALWAYS_ON_TOP_CHECK = "Her zaman üstte"
TXT_MOUSE_PENETRATE_CHECK = "Fare delme"
TXT_TASKBAR_MOUSE_PENETRATE_CHECK = "Görev çubuğu penceresi fare delme"
TXT_LOCK_WINDOW_POS_CHECK = "Pencere konumunu kilitle"
TXT_ALOW_OUT_OF_BORDER_CHECK = "Ekran sınırlarının dışına çıkmaya izin ver"

Expand Down
3 changes: 2 additions & 1 deletion TrafficMonitor/resource.h
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@
#define IDC_DISPLAY_TO_SHOW_TASKBAR_WND_COMBO 1213
#define IDC_DISPLAY_TO_SHOW_TASKBAR_WND_STATIC 1214
#define IDC_USAGE_GRAPH_FOLLOW_SYSTEM_CHECK 1215
#define IDC_TASKBAR_MOUSE_PENETRATE_CHECK 1220
#define IDC_CPU_TEMP_TIP_EDIT 1216
#define IDC_GPU_TEMP_TIP_EDIT 1217
#define IDC_HDD_TIP_EDIT 1218
Expand Down Expand Up @@ -469,7 +470,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 349
#define _APS_NEXT_COMMAND_VALUE 33666
#define _APS_NEXT_CONTROL_VALUE 1220
#define _APS_NEXT_CONTROL_VALUE 1221
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif