NOTIFYICONDATA ntd;
ntd.cbSize = sizeof(NOTIFYICONDATA);
ntd.hIcon = ::LoadIcon(AfxGetInstanceHandle(),
MAKEINTRESOURCE(IDR_MAINFRAME));
ntd.hWnd = this->m_hWnd;
strcpy(ntd.szTip,"forenotice");
ntd.uCallbackMessage = WM_LIBEN;
ntd.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
ntd.uID = IDR_MAINFRAME; Shell_NotifyIcon(NIM_ADD,&ntd);

解决方案 »

  1.   

    如上,對 WM_LIBEN 作消息映射ON_MESSAGE(WM_LIBEN,OnLiben)
    void CForenoticenewDlg::OnLiben(WPARAM wParam, LPARAM lParam)
    {
    UINT uID = (UINT)wParam;
    UINT uMouseMsg = (UINT)lParam;
    POINT point;
    if(uID = IDR_MAINFRAME)
    {
    ::GetCursorPos(&point);
    CMenu menu,*subMenu;
    switch(uMouseMsg)
    {
    case WM_LBUTTONDBLCLK:
    case WM_LBUTTONDOWN:
                if(m_windowIsOpen)
    {
    m_windowIsOpen = FALSE;
    WINDOWPLACEMENT wp;
    wp.length=sizeof(WINDOWPLACEMENT);
    wp.flags=WPF_RESTORETOMAXIMIZED;
    wp.showCmd=SW_SHOW;
    wp.ptMaxPosition.x = -1;
    wp.ptMaxPosition.y = -1;
    wp.ptMinPosition.x = -1;
    wp.ptMinPosition.y = -1;
    wp.rcNormalPosition.left = 0;
    wp.rcNormalPosition.top = 0;
    wp.rcNormalPosition.right = 486;
    wp.rcNormalPosition.bottom = 325;
    SetWindowPlacement(&wp);    
    AfxGetApp()->m_pMainWnd->ShowWindow(SW_HIDE);
    //theApp.m_pMainWnd->ShowWindow(SW_HIDE);     
    }
    else
    {
    m_windowIsOpen = TRUE;
    AfxGetApp()->m_pMainWnd->ShowWindow(SW_SHOW);
    }
    break;
    case WM_RBUTTONDOWN:
    menu.LoadMenu(IDR_MENU_POPUP);
    subMenu = menu.GetSubMenu(0);
    subMenu->TrackPopupMenu(TPM_CENTERALIGN,point.x,point.y,this);
    break;
    default:
    break;
    }
    }
    }