毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

托盘中气球提示的实现显示不了气球

更新时间:2012-7-1:  来源:毕业论文

由于VC 6中的shellapi.h中的NOTIFYICONDATA结构体定义的变量比较少,不支持托盘气球,因此改用了VS08进行的编译。

程序可以正常编译运行,就是没出现气球提示,先贴出一下全部代码吧,方便大家交流。

C/C++ code#include<windows.h>
#include<tchar.h>
#define WM_SHELLNOTIFY WM_USER+5
#define IDI_TRAY 0
#define IDM_RESTORE 100
#define IDM_EXIT  101
//#define   _WIN32_IE   0x0600
TCHAR ClassName[]=_T("TrayIconWinClass");
TCHAR AppName[]=_T("TrayIcon Demo");
TCHAR RestoreString[]=_T("&Restore");
TCHAR ExitString[]=_T("&Exit Program");
HINSTANCE g_hInstance;
NOTIFYICONDATA note;
HMENU hPopupMenu;
INT_PTR CALLBACK ProcWinMain(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam)
{
    POINT pt;
    switch(Msg)
    {
    case WM_CREATE:
        hPopupMenu=CreatePopupMenu();
        AppendMenu(hPopupMenu,MF_STRING,IDM_RESTORE,RestoreString);
        AppendMenu(hPopupMenu,MF_STRING,IDM_EXIT,ExitString);
        //note.cbSize=sizeof(NOTIFYICONDATA);
        //note.uFlags=NIM_ICON|NIM_
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    case WM_SIZE:
        {
            if(wParam==SIZE_MINIMIZED)
            {
                note.cbSize=sizeof(NOTIFYICONDATA);
                note.hWnd=hWnd;
                note.uFlags=NIF_ICON|NIF_MESSAGE|NIF_INFO|NIF_TIP;
                note.uID=IDI_TRAY;
                note.uCallbackMessage=WM_SHELLNOTIFY;
                lstrcpy(note.szTip,AppName);
                note.dwInfoFlags=NIIF_INFO;
                note.uTimeout=3000;
                lstrcpy(note.szInfo,AppName);
                lstrcpy(note.szInfoTitle,AppName);
                note.hIcon=LoadIcon(NULL,IDI_WINLOGO);
                ShowWindow(hWnd,SW_HIDE);
                Shell_NotifyIcon(NIM_ADD,&note);

            }
        }
        break;
    case WM_COMMAND:
        if(lParam==0)
        {
            Shell_NotifyIcon(NIM_DELETE,&note);
            if(LOWORD(wParam)==IDM_RESTORE)
            {
                ShowWindow(hWnd,SW_RESTORE);

            }
            else
                DestroyWindow(hWnd);
        }
        break;
    case WM_SHELLNOTIFY:
        if(wParam==IDI_TRAY)
        {
            if(lParam==WM_RBUTTONDOWN)
            {
                GetCursorPos(&pt);
                TrackPopupMenu(hPopupMenu,TPM_LEFTALIGN,pt.x,pt.y,0,hWnd,NULL);
            }
            else if(lParam==WM_LBUTTONDBLCLK)
            {
                SendMessage(hWnd,WM_COMMAND,IDM_RESTORE,0);
            }

        }
        break;
    default:
        return DefWindowProc(hWnd,Msg,wParam,lParam);
    }
    return 0;
}

int WINAPI WinMain(     HINSTANCE hInstance,
                        HINSTANCE hPrevInstance,
                        LPSTR lpCmdLine,
                        int nCmdShow
)
{
    WNDCLASSEX wc;
    MSG msg;
    HWND hWnd;
    g_hInstance = hInstance;
    wc.cbSize = sizeof(WNDCLASSEX);
    wc.style = CS_HREDRAW | CS_VREDRAW |CS_DBLCLKS;
    wc.lpfnWndProc = (WNDPROC)ProcWinMain;
    wc.cbClsExtra = NULL;
    wc.cbWndExtra = NULL;
    wc.hInstance = hInstance;
    wc.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE);
    wc.lpszMenuName = NULL;
    wc.lpszClassName = ClassName;
    wc.hIcon = wc.hIconSm = LoadIcon(NULL,IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL,IDC_ARROW);
    RegisterClassEx(&wc);

    hWnd = CreateWindowEx(WS_EX_CLIENTEDGE,ClassName,AppName,WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT,CW_USEDEFAULT,350,200,NULL,NULL,hInstance,NULL);
    ShowWindow(hWnd,SW_SHOWNORMAL);
    UpdateWindow(hWnd);

    while(GetMessage(&msg,NULL,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }


    return msg.wParam;
}

 

其中托盘气球的那部分代码:
///////////////////////////////////////////////////////////////////////////////////////////////////////
case WM_SIZE:
{
if(wParam==SIZE_MINIMIZED)
{
note.cbSize=sizeof(NOTIFYICONDATA);
note.hWnd=hWnd;
note.uFlags=NIF_ICON|NIF_MESSAGE|NIF_INFO|NIF_TIP;//NIF_INFO必须包含
note.uID=IDI_TRAY;
note.uCallbackMessage=WM_SHELLNOTIFY;
lstrcpy(note.szTip,AppName);
note.dwInfoFlags=NIIF_INFO;
note.uTimeout=3000;
lstrcpy(note.szInfo,AppName);
lstrcpy(note.szInfoTitle,AppName);
note.hIcon=LoadIcon(NULL,IDI_WINLOGO);
ShowWindow(hWnd,SW_HIDE);
Shell_NotifyIcon(NIM_ADD,&note);}}
break;

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。