Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;在后台创建程序运行_C++_Winapi_System Tray_Background Process - Fatal编程技术网

C++ c++;在后台创建程序运行

C++ c++;在后台创建程序运行,c++,winapi,system-tray,background-process,C++,Winapi,System Tray,Background Process,我想让一个程序在后台运行,并在任务栏的通知区域显示一个图标。我正在使用win32。我应该使用什么api?你知道什么好的教程吗?有助于学习winapi和Windows应用程序的基本工作原理。对于托盘图标,请使用Shell\u NotifyIcon。您需要一个窗口和一个消息循环来完成此操作。有助于学习winapi和Windows应用程序的基本工作原理。对于托盘图标,请使用Shell\u NotifyIcon。为此,您需要一个窗口和一个消息循环。。 它是一个包裹物。。 它是一个包装器。要使程序在后台运

我想让一个程序在后台运行,并在任务栏的通知区域显示一个图标。我正在使用win32。我应该使用什么api?你知道什么好的教程吗?

有助于学习winapi和Windows应用程序的基本工作原理。对于托盘图标,请使用
Shell\u NotifyIcon
。您需要一个窗口和一个消息循环来完成此操作。

有助于学习winapi和Windows应用程序的基本工作原理。对于托盘图标,请使用
Shell\u NotifyIcon
。为此,您需要一个窗口和一个消息循环。

。 它是一个包裹物。


它是一个包装器。

要使程序在后台运行,您可以将其添加为服务或使其“不可用”以关闭(例如,隐藏程序的窗口)。要在工具栏中添加图标,请使用winapi。结构中的调用和传递

这应该在某个地方定义

enum TrayIcon {
    ID = 13, CALLBACKID = WM_APP+1
};
此外,在下面的代码中,
hWnd
是一个
hWnd
,这是要与通知图标关联的窗口。此
HWND的
wndProc
将接收图标的消息

笔记:
  • NIF_图标
    标志使
    hIcon
    notificationiconda
    结构中有效。因此,如果你不想有一个图标,不要指定它
  • NIF_MESSAGE
    标志使
    uCallbackMessage
    有效。如果不想处理任何消息,请不要指定此标志
  • 您必须在关闭程序之前删除该图标,否则它将卡在那里,直到您将鼠标悬停在其上
  • 启动计算机时,Shell_NotifyIcon可能会遇到一些困难。我找不到它的参考资料,但我知道我在什么地方读过。。所以,当不成功时,不要认为它根本不起作用——再试一次
如上所述,这就是如何添加、删除和处理托盘图标的消息

添加图标 要删除图标 处理图标的消息
要使程序在后台运行,可以将其添加为服务或使其“不可用”以关闭(例如,隐藏程序的窗口)。要在工具栏中添加图标,请使用winapi。结构中的调用和传递

这应该在某个地方定义

enum TrayIcon {
    ID = 13, CALLBACKID = WM_APP+1
};
此外,在下面的代码中,
hWnd
是一个
hWnd
,这是要与通知图标关联的窗口。此
HWND的
wndProc
将接收图标的消息

笔记:
  • NIF_图标
    标志使
    hIcon
    notificationiconda
    结构中有效。因此,如果你不想有一个图标,不要指定它
  • NIF_MESSAGE
    标志使
    uCallbackMessage
    有效。如果不想处理任何消息,请不要指定此标志
  • 您必须在关闭程序之前删除该图标,否则它将卡在那里,直到您将鼠标悬停在其上
  • 启动计算机时,Shell_NotifyIcon可能会遇到一些困难。我找不到它的参考资料,但我知道我在什么地方读过。。所以,当不成功时,不要认为它根本不起作用——再试一次
如上所述,这就是如何添加、删除和处理托盘图标的消息

添加图标 要删除图标 处理图标的消息
正式来说,您指的是“任务栏的通知区域”。这些术语可能会帮助您找到比“任务栏”更好的搜索结果。有人将问题编辑为“任务栏的通知区域”。正式而言,您指的是“任务栏的通知区域”。这些术语可能会帮助你找到比“任务栏”更好的搜索结果。
NOTIFYICONDATA nid;
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hWnd;
nid.uID = /*TrayIcon::*/ID;
Shell_NotifyIcon(NIM_DELETE, &nid);
LRESULT wndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam){
    switch (msg){
        // ...
        case /*TrayIcon::*/CALLBACKID:
        {
            // here, you handle the messages for your tray icon
        }
        break;
        // ...
    }
}