Windows notify
All checks were successful
Run ReCI Build Test / Explore-Gitea-Actions (push) Successful in 56s

This commit is contained in:
2025-07-16 20:21:07 -04:00
parent 2291ee6215
commit f979e5738f
2 changed files with 37 additions and 0 deletions

View File

@@ -376,6 +376,7 @@ public:
/// @param title The notification title.
/// @param content The actual text of the notification.
/// @param icon The path to the icon to be displayed on the notification, Empty for none.
/// @note On Windows, icon must be a .ico
bool Notify(const std::string& title, const std::string& content, const std::filesystem::path& icon = "");
/// @returns True if we are definitely running on a software renderer.

View File

@@ -16,6 +16,42 @@ public:
using namespace ReWindow;
// TODO destroy n_data after it's no longer shown. Destroying it early causes the notification to come from explorer.
bool RWindow::Notify(const std::string& title, const std::string& content, const std::filesystem::path& icon) {
NOTIFYICONDATA n_data = {};
HICON n_icon = nullptr;
if (!icon.empty()) {
n_icon = (HICON) LoadImageW(
nullptr,
icon.c_str(),
IMAGE_ICON,
0, 0,
LR_LOADFROMFILE | LR_DEFAULTSIZE
);
if (!n_icon)
return false;
}
n_data.cbSize = sizeof(NOTIFYICONDATA);
n_data.hWnd = platform->hwnd;
n_data.uID = 1;
n_data.uFlags = NIF_INFO | NIF_ICON | NIF_MESSAGE | NIF_TIP;
n_data.uCallbackMessage = WM_USER + 1;
n_data.hIcon = n_icon;
lstrcpy(n_data.szTip, title.c_str());
lstrcpy(n_data.szInfo, content.c_str());
lstrcpy(n_data.szInfoTitle, title.c_str());
n_data.dwInfoFlags = NIIF_USER;
Shell_NotifyIcon(NIM_ADD, &n_data);
Shell_NotifyIcon(NIM_MODIFY, &n_data);
//Shell_NotifyIcon(NIM_DELETE, &n_data);
return true;
}
void RWindow::SetSize(int newWidth, int newHeight) {
if (!resizable)
return;