Win32 API实现系统托盘

Win32 API实现系统托盘
这篇博客主要是讲述使用Win32 API编写一个系统托盘。实现的功能有:显示提示框、气泡、上下文菜单。要实现系

统托盘,主要用到的函数是Shell_NotifyIcon,用到的结构体是NOTIFYICONDATA。

当我们运行后,可以在任务栏中看到我们的托盘了

当我们鼠标放在托盘图标上时,单击右键就会出现上下文菜单,我的这个有两个菜单项,Exit和Hide。点击Exit退出程

序,点击Hide将会把窗口隐藏,当单击托盘图标时就可以显示隐藏的窗口了。具体效果可以下载源文件下来自己运行

看看。主要代码如下:


[cpp] view plaincopyprint?
01.LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
02.{ 
03.    NOTIFYICONDATA  nid ; 
04.    static HMENU    hMenu ; 
05.    POINT           point ; 
06.    HINSTANCE       hInstance ; 
07. 
08.    switch (message) 
09.    { 
10.    case WM_CREATE: 
11.        hInstance = (HINSTANCE) GetWindowLong (hwnd, GWL_HINSTANCE) ; 
12. 
13.        hMenu = LoadMenu (hInstance, TEXT("TuoPan")) ; 
14.        hMenu = GetSubMenu (hMenu, 0) ; 
15. 
16.        nid.cbSize = sizeof (NOTIFYICONDATA) ; 
17.        nid.hWnd   = hwnd ; 
18.        nid.uID  = IDI_ICON1 ; 
19.        nid.uFlags  = NIF_MESSAGE | NIF_ICON | NIF_TIP | NIF_INFO; 
20.        nid.hIcon   = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICON1)) ; 
21.        nid.uCallbackMessage = WMU_NOTIFY ; 
22.        //提示框内容  
23.        wcscpy_s(nid.szTip, szAppName) ; 
24.        //气泡通知  
25.        wcscpy_s(nid.szInfo, szAppName);  //通知的内容  
26.        wcscpy_s(nid.szInfoTitle, L":)"); //气泡的标题  
27.        nid.uTimeout = 10000;             //通知滞留的时间,ms为单位  
28.        nid.dwInfoFlags = NIIF_NONE;      //图标  
29. 
30.        Shell_NotifyIcon (NIM_ADD, &nid) ; 
31. 
32.        return 0 ; 
33. 
34.    case WM_COMMAND: 
35.        switch (LOWORD(wParam)) 
36.        { 
37.        case IDM_EXIT: 
38.            SendMessage (hwnd, WM_DESTROY, wParam, lParam) ; 
39.            return 0 ; 
40. 
41.        case IDM_HIDE: 
42.            ShowWindow(hwnd, SW_HIDE); 
43.            return 0; 
44.        } 
45.        return 0 ; 
46. 
47.    case WMU_NOTIFY: 
48.        if(lParam == WM_RBUTTONDOWN)//托盘消息中lParam接受鼠标的行为  

[1] [2] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有