c – 为什么Shell_NotifyIcon气球提示不起作用?
发布时间:2020-12-16 10:38:24 所属栏目:百科 来源:网络整理
导读:根据我所看到的一切,当我在应用程序窗口中单击鼠标左键时,以下C程序应该从托盘图标显示气球工具提示,但它不起作用.谁能告诉我我错过了什么? 这是在XP的Shell32.dll 6.0版本(使用DllGetVersion验证). 谢谢! #include "stdafx.h" #include "shellapi.h" LRES
根据我所看到的一切,当我在应用程序窗口中单击鼠标左键时,以下C程序应该从托盘图标显示气球工具提示,但它不起作用.谁能告诉我我错过了什么?
这是在XP的Shell32.dll 6.0版本(使用DllGetVersion验证). 谢谢! #include "stdafx.h" #include "shellapi.h" LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam); int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) { MSG msg; WNDCLASS wc; memset(&wc,sizeof(wc)); wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hCursor = LoadCursor(NULL,IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wc.lpszClassName = "sysTrayTest"; RegisterClass(&wc); HWND hWnd = CreateWindow("sysTrayTest","",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,500,NULL,hInstance,NULL); if (hWnd) { ShowWindow(hWnd,nCmdShow); while (GetMessage(&msg,0)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; } LRESULT CALLBACK WndProc(HWND hWnd,LPARAM lParam) { switch (message) { case WM_DESTROY: { NOTIFYICONDATA nid; memset(&nid,sizeof(NOTIFYICONDATA)); nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hWnd; nid.uID = 1; Shell_NotifyIcon(NIM_DELETE,&nid); PostQuitMessage(0); } break; case WM_CREATE: { NOTIFYICONDATA nid; memset(&nid,sizeof(NOTIFYICONDATA)); nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hWnd; nid.uID = 1; nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; nid.uCallbackMessage = WM_USER + 200; nid.hIcon = LoadIcon(NULL,IDI_INFORMATION); lstrcpy (nid.szTip,"Test Tip"); Shell_NotifyIcon(NIM_ADD,&nid); } break; case WM_LBUTTONDOWN: { NOTIFYICONDATA nid; memset(&nid,sizeof(NOTIFYICONDATA)); nid.cbSize = sizeof(NOTIFYICONDATA); nid.hWnd = hWnd; nid.uID = 1; nid.uFlags = NIF_INFO; lstrcpy(nid.szInfo,"Test balloon tip"); lstrcpy(nid.szInfoTitle,"Test Title"); nid.dwInfoFlags = NIIF_INFO; nid.uTimeout = 15000; Shell_NotifyIcon(NIM_MODIFY,&nid); } break; default: return DefWindowProc(hWnd,message,wParam,lParam); } return 0; } 解决方法
呸,我明白了.出于某种原因我有标题…
sizeof(NOTIFYICONDATA)== 508 而… NOTIFYICONDATA_V3_SIZE == 504 如果我指定V2或V3而不是sizeof(NOTIFYICONDATA),气球提示就会显示出来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |