在Win32 NotifyIcon中使用现代的Windows 10上下文菜单,可以通过以下步骤实现:
下面是一个示例代码,演示如何在Win32 NotifyIcon中使用现代的Windows 10上下文菜单:
#include <Windows.h>
// 上下文菜单命令ID
#define IDM_MENU_ITEM1 1001
#define IDM_MENU_ITEM2 1002
#define IDM_MENU_ITEM3 1003
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// 创建窗口
HWND hwnd;
WNDCLASS wc = {};
wc.lpfnWndProc = WindowProc;
wc.hInstance = hInstance;
wc.lpszClassName = L"WindowClass";
RegisterClass(&wc);
hwnd = CreateWindowEx(
0,
L"WindowClass",
L"Win32 NotifyIcon",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 500, 500,
NULL,
NULL,
hInstance,
NULL
);
// 创建NotifyIcon
NOTIFYICONDATA nid = {};
nid.cbSize = sizeof(NOTIFYICONDATA);
nid.hWnd = hwnd;
nid.uID = 1;
nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
nid.uCallbackMessage = WM_USER + 1;
nid.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcscpy_s(nid.szTip, L"NotifyIcon Demo");
Shell_NotifyIcon(NIM_ADD, &nid);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 移除NotifyIcon
Shell_NotifyIcon(NIM_DELETE, &nid);
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_CONTEXTMENU:
{
// 创建上下文菜单
HMENU hMenu = CreatePopupMenu();
AppendMenu(hMenu, MF_STRING, IDM_MENU_ITEM1, L"菜单项1");
AppendMenu(hMenu, MF_STRING, IDM_MENU_ITEM2, L"菜单项2");
AppendMenu(hMenu, MF_STRING, IDM_MENU_ITEM3, L"菜单项3");
// 显示上下文菜单
POINT pt;
GetCursorPos(&pt);
SetForegroundWindow(hwnd);
TrackPopupMenu(hMenu, TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, hwnd, NULL);
// 销毁上下文菜单
DestroyMenu(hMenu);
}
break;
case WM_COMMAND:
{
// 处理菜单项点击事件
switch (LOWORD(wParam))
{
case IDM_MENU_ITEM1:
// 执行菜单项1的操作
MessageBox(hwnd, L"点击了菜单项1", L"提示", MB_OK);
break;
case IDM_MENU_ITEM2:
// 执行菜单项2的操作
MessageBox(hwnd, L"点击了菜单项2", L"提示", MB_OK);
break;
case IDM_MENU_ITEM3:
// 执行菜单项3的操作
MessageBox(hwnd, L"点击了菜单项3", L"提示", MB_OK);
break;
}
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
return 0;
}
这个示例代码演示了如何在Win32 NotifyIcon中使用现代的Windows 10上下文菜单。在上下文菜单中,我们创建了三个菜单项,并为每个菜单项添加了点击事件处理。当用户右键单击NotifyIcon时,上下文菜单将显示,并根据用户的选择执行相应的操作。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的菜单和功能。腾讯云提供了丰富的云计算产品和服务,可以根据具体需求选择适合的产品和服务。具体的产品和服务推荐,请参考腾讯云官方网站:https://cloud.tencent.com/
领取专属 10元无门槛券
手把手带您无忧上云