怎样在任务栏显示图标,并处理自定义的消息,我知道用Shell_NotifyIcon函数,请问具体如何操作,我用WIN32 SDK编程的。

解决方案 »

  1.   

    BOOL Shell_NotifyIcon(
        DWORD dwMessage, 
        PNOTIFYICONDATA lpdata
    );dwMessage = NIM_ADD ;
    lpdata 是指向 NOTIFYICONDATA的指针typedef struct _NOTIFYICONDATA { 
        DWORD cbSize; 
        HWND hWnd; 
        UINT uID; 
        UINT uFlags; 
        UINT uCallbackMessage; 
        HICON hIcon; 
        #if (_WIN32_IE < 0x0500)
            TCHAR szTip[64];
        #else
            TCHAR szTip[128];
        #endif
        #if (_WIN32_IE >= 0x0500)
            DWORD dwState; 
            DWORD dwStateMask; 
            TCHAR szInfo[256]; 
            union {
                UINT  uTimeout; 
                UINT  uVersion; 
            } DUMMYUNIONNAME;
            TCHAR szInfoTitle[64]; 
            DWORD dwInfoFlags; 
        #endif
        #if (_WIN32_IE >= 0x600)
            GUID guidItem;
        #endif
    } NOTIFYICONDATA, *PNOTIFYICONDATA; 
     自己 去填充那个结构的数据
      

  2.   

    #define UM_SYS_NOTIFY WM_USER + 0x100LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
    TCHAR szHello[MAX_LOADSTRING];
    LoadString(hInst, IDS_HELLO, szHello, MAX_LOADSTRING); switch (message) 
    {
    case UM_SYS_NOTIFY:
    {
    switch (wParam){
    case 0x1234:
    {
    switch (lParam){
    case WM_MOUSEMOVE:
    break;
    case WM_RBUTTONUP:
    {
    POINT ptCursor;
    GetCursorPos(&ptCursor);
    HMENU menu = LoadMenu(hInst, MAKEINTRESOURCE(IDC_J2MK));
    HMENU showmenu = GetSubMenu(menu, 0);
    UINT MenuIDReturned = TrackPopupMenu(showmenu, 
    TPM_LEFTALIGN | TPM_BOTTOMALIGN, 
    ptCursor.x, ptCursor.y, 0, hWndMain, NULL);
    }
    break;
    }
    }
    break;
    }
    }
    break;
    default:
    return DefWindowProc(hWnd, message, wParam, lParam);
       }
       return 0;
    }VOID AddToSysTray(HWND hWnd)
    {
    NOTIFYICONDATA ncd;
    ncd.cbSize = sizeof(NOTIFYICONDATA);
    ncd.hWnd = hWnd;
    ncd.uID = 0x1234;
    ncd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
    strcpy(ncd.szTip, szTitle);
    ncd.uCallbackMessage = UM_SYS_NOTIFY;
    ncd.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_LOGO));
    Shell_NotifyIcon(NIM_ADD, &ncd);
    }VOID MoveFromSysTray(HWND hWnd)
    {
    NOTIFYICONDATA ncd;
    ncd.cbSize = sizeof(NOTIFYICONDATA);
    ncd.hWnd = hWnd;
    ncd.uID = 0x1234;
    Shell_NotifyIcon(NIM_DELETE, &ncd);
    }