亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? systemtray.cpp

?? Client 和Server 配套的網絡連接程序。
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/////////////////////////////////////////////////////////////////////////////
// SystemTray.cpp : implementation file
//
// MFC VERSION
//
// This is a conglomeration of ideas from the MSJ "Webster" application,
// sniffing round the online docs, and from other implementations such
// as PJ Naughter's "CTrayNotifyIcon" (http://indigo.ie/~pjn/ntray.html)
// especially the "CSystemTray::OnTrayNotification" member function.
// Joerg Koenig suggested the icon animation stuff
//
// This class is a light wrapper around the windows system tray stuff. It
// adds an icon to the system tray with the specified ToolTip text and 
// callback notification value, which is sent back to the Parent window.
//
// The tray icon can be instantiated using either the constructor or by
// declaring the object and creating (and displaying) it later on in the
// program. eg.
//
//        CSystemTray m_SystemTray;    // Member variable of some class
//        
//        ... 
//        // in some member function maybe...
//        m_SystemTray.Create(pParentWnd, WM_MY_NOTIFY, "Click here", 
//                          hIcon, nSystemTrayID);
//
// Written by Chris Maunder (cmaunder@mail.com)
// Copyright (c) 1998.
//
// Updated: 25 Jul 1998 - Added icon animation, and derived class
//                        from CWnd in order to handle messages. (CJM)
//                        (icon animation suggested by Joerg Koenig.
//                        Added API to set default menu item. Code provided
//                        by Enrico Lelina.
//
// Updated: 6 June 1999 - SetIcon can now load non-standard sized icons (Chip Calvert)
//                        Added "bHidden" parameter when creating icon
//                        (Thanks to Michael Gombar for these suggestions)
//                        Restricted tooltip text to 64 characters.
//
// Updated: 9 Nov 1999  - Now works in WindowsCE.
//                        Fix for use in NT services (Thomas Mooney, TeleProc, Inc)
//                        Added W2K stuff by Michael Dunn
//
// Updated: 1 Jan 2000  - Added tray minimisation stuff.
// 
// Updated: 21 Sep 2000 - Added GetDoWndAnimation - animation only occurs if the system
//                        settings allow it (Matthew Ellis). Updated the GetTrayWndRect
//                        function to include more fallback logic (Matthew Ellis)
//                        NOTE: Signature of GetTrayWndRect has changed!
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is 
// not sold for profit without the authors written consent, and 
// providing that this notice and the authors name is included. If 
// the source code in  this file is used in any commercial application 
// then acknowledgement must be made to the author of this file 
// (in whatever form you wish).
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability for any damage caused through use.
//
// Expect bugs.
// 
// Please use and enjoy. Please let me know of any bugs/mods/improvements 
// that you have found/implemented and I will fix/incorporate them into this
// file. 
//
/////////////////////////////////////////////////////////////////////////////
    
#include "stdafx.h"
#include "SystemTray.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#ifndef _WIN32_WCE  // Use C++ exception handling instead of structured.
#undef TRY
#undef CATCH
#undef END_CATCH
#define TRY try
#define CATCH(ex_class, ex_object) catch(ex_class* ex_object)
#define END_CATCH
#endif  // _WIN32_WCE

#ifndef _countof
#define _countof(x) ( sizeof(x) / sizeof(x[0]) )
#endif

IMPLEMENT_DYNAMIC(CSystemTray, CWnd)

const UINT CSystemTray::m_nTimerID    = 4567;
UINT CSystemTray::m_nMaxTooltipLength  = 64;     // This may change...
const UINT CSystemTray::m_nTaskbarCreatedMsg = ::RegisterWindowMessage(_T("TaskbarCreated"));
CWnd  CSystemTray::m_wndInvisible;

/////////////////////////////////////////////////////////////////////////////
// CSystemTray construction/creation/destruction

CSystemTray::CSystemTray()
{
    Initialise();
}

CSystemTray::CSystemTray(CWnd* pParent,             // The window that will recieve tray notifications
                         UINT uCallbackMessage,     // the callback message to send to parent
                         LPCTSTR szToolTip,         // tray icon tooltip
                         HICON icon,                // Handle to icon
                         UINT uID,                  // Identifier of tray icon
                         BOOL bHidden /*=FALSE*/,   // Hidden on creation?                  
                         LPCTSTR szBalloonTip /*=NULL*/,    // Ballon tip (w2k only)
                         LPCTSTR szBalloonTitle /*=NULL*/,  // Balloon tip title (w2k)
                         DWORD dwBalloonIcon /*=NIIF_NONE*/,// Ballon tip icon (w2k)
                         UINT uBalloonTimeout /*=10*/)      // Balloon timeout (w2k)
{
    Initialise();
    Create(pParent, uCallbackMessage, szToolTip, icon, uID, bHidden,
           szBalloonTip, szBalloonTitle, dwBalloonIcon, uBalloonTimeout);
}

void CSystemTray::Initialise()
{
    memset(&m_tnd, 0, sizeof(m_tnd));

    m_bEnabled = FALSE;
    m_bHidden  = TRUE;
    m_bRemoved = TRUE;

    m_DefaultMenuItemID    = 0;
    m_DefaultMenuItemByPos = TRUE;

    m_bShowIconPending = FALSE;

    m_uIDTimer   = 0;
    m_hSavedIcon = NULL;

	m_pTargetWnd = NULL;
	m_uCreationFlags = 0;

#ifdef SYSTEMTRAY_USEW2K
    OSVERSIONINFO os = { sizeof(os) };
    GetVersionEx(&os);
    m_bWin2K = ( VER_PLATFORM_WIN32_NT == os.dwPlatformId && os.dwMajorVersion >= 5 );
#else
    m_bWin2K = FALSE;
#endif
}

// update by Michael Dunn, November 1999
//
//  New version of Create() that handles new features in Win 2K.
//
// Changes:
//  szTip: Same as old, but can be 128 characters instead of 64.
//  szBalloonTip: Text for a balloon tooltip that is shown when the icon
//                is first added to the tray.  Pass "" if you don't want
//                a balloon.
//  szBalloonTitle: Title text for the balloon tooltip.  This text is shown
//                  in bold above the szBalloonTip text.  Pass "" if you
//                  don't want a title.
//  dwBalloonIcon: Specifies which icon will appear in the balloon.  Legal
//                 values are:
//                     NIIF_NONE: No icon
//                     NIIF_INFO: Information
//                     NIIF_WARNING: Exclamation
//                     NIIF_ERROR: Critical error (red circle with X)
//  uBalloonTimeout: Number of seconds for the balloon to remain visible.
//                   Must be between 10 and 30 inclusive.

BOOL CSystemTray::Create(CWnd* pParent, UINT uCallbackMessage, LPCTSTR szToolTip, 
                         HICON icon, UINT uID, BOOL bHidden /*=FALSE*/,
                         LPCTSTR szBalloonTip /*=NULL*/, 
                         LPCTSTR szBalloonTitle /*=NULL*/,  
                         DWORD dwBalloonIcon /*=NIIF_NONE*/,
                         UINT uBalloonTimeout /*=10*/)
{
#ifdef _WIN32_WCE
    m_bEnabled = TRUE;
#else
    // this is only for Windows 95 (or higher)
    m_bEnabled = (GetVersion() & 0xff) >= 4;
    if (!m_bEnabled) 
    {
        ASSERT(FALSE);
        return FALSE;
    }
#endif

    m_nMaxTooltipLength = _countof(m_tnd.szTip);
    
    // Make sure we avoid conflict with other messages
    ASSERT(uCallbackMessage >= WM_APP);

    // Tray only supports tooltip text up to m_nMaxTooltipLength) characters
    ASSERT(AfxIsValidString(szToolTip));
    ASSERT(_tcslen(szToolTip) <= m_nMaxTooltipLength);

    // Create an invisible window
    CWnd::CreateEx(0, AfxRegisterWndClass(0), _T(""), WS_POPUP, 0,0,0,0, NULL, 0);

    // load up the NOTIFYICONDATA structure
    m_tnd.cbSize = sizeof(NOTIFYICONDATA);
    m_tnd.hWnd   = pParent->GetSafeHwnd()? pParent->GetSafeHwnd() : m_hWnd;
    m_tnd.uID    = uID;
    m_tnd.hIcon  = icon;
    m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
    m_tnd.uCallbackMessage = uCallbackMessage;
    _tcsncpy(m_tnd.szTip, szToolTip, m_nMaxTooltipLength-1);

#ifdef SYSTEMTRAY_USEW2K
    if (m_bWin2K && szBalloonTip)
    {
        // The balloon tooltip text can be up to 255 chars long.
        ASSERT(AfxIsValidString(szBalloonTip));
        ASSERT(lstrlen(szBalloonTip) < 256);

        // The balloon title text can be up to 63 chars long.
        if (szBalloonTitle)
        {
            ASSERT(AfxIsValidString(szBalloonTitle));
            ASSERT(lstrlen(szBalloonTitle) < 64);
        }

        // dwBalloonIcon must be valid.
        ASSERT(NIIF_NONE == dwBalloonIcon    || NIIF_INFO == dwBalloonIcon ||
               NIIF_WARNING == dwBalloonIcon || NIIF_ERROR == dwBalloonIcon);

        // The timeout must be between 10 and 30 seconds.
        ASSERT(uBalloonTimeout >= 10 && uBalloonTimeout <= 30);

        m_tnd.uFlags |= NIF_INFO;

        _tcsncpy(m_tnd.szInfo, szBalloonTip, 255);
        if (szBalloonTitle)
            _tcsncpy(m_tnd.szInfoTitle, szBalloonTitle, 63);
        else
            m_tnd.szInfoTitle[0] = _T('\0');
        m_tnd.uTimeout    = uBalloonTimeout * 1000; // convert time to ms
        m_tnd.dwInfoFlags = dwBalloonIcon;
    }
#endif

    m_bHidden = bHidden;

#ifdef SYSTEMTRAY_USEW2K    
    if (m_bWin2K && m_bHidden)
    {
        m_tnd.uFlags = NIF_STATE;
        m_tnd.dwState = NIS_HIDDEN;
        m_tnd.dwStateMask = NIS_HIDDEN;
    }
#endif

	m_uCreationFlags = m_tnd.uFlags;	// Store in case we need to recreate in OnTaskBarCreate

    BOOL bResult = TRUE;
    if (!m_bHidden || m_bWin2K)
    {
        bResult = Shell_NotifyIcon(NIM_ADD, &m_tnd);
        m_bShowIconPending = m_bHidden = m_bRemoved = !bResult;
    }
    
#ifdef SYSTEMTRAY_USEW2K    
    if (m_bWin2K && szBalloonTip)
    {
        // Zero out the balloon text string so that later operations won't redisplay
        // the balloon.
        m_tnd.szInfo[0] = _T('\0');
    }
#endif

    return bResult;
}

CSystemTray::~CSystemTray()
{
    RemoveIcon();
    m_IconList.RemoveAll();
    DestroyWindow();
}

/////////////////////////////////////////////////////////////////////////////
// CSystemTray icon manipulation

//////////////////////////////////////////////////////////////////////////
//
// Function:    SetFocus()
//
// Description:
//  Sets the focus to the tray icon.  Microsoft's Win 2K UI guidelines
//  say you should do this after the user dismisses the icon's context
//  menu.
//
// Input:
//  Nothing.
//
// Returns:
//  Nothing.
//
//////////////////////////////////////////////////////////////////////////
// Added by Michael Dunn, November, 1999
//////////////////////////////////////////////////////////////////////////

void CSystemTray::SetFocus()
{
#ifdef SYSTEMTRAY_USEW2K
    Shell_NotifyIcon ( NIM_SETFOCUS, &m_tnd );
#endif
}

BOOL CSystemTray::MoveToRight()
{
    RemoveIcon();
    return AddIcon();
}

BOOL CSystemTray::AddIcon()
{
    if (!m_bRemoved)
        RemoveIcon();

    if (m_bEnabled)
    {
        m_tnd.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
        if (!Shell_NotifyIcon(NIM_ADD, &m_tnd))
            m_bShowIconPending = TRUE;
        else
            m_bRemoved = m_bHidden = FALSE;
    }
    return (m_bRemoved == FALSE);
}

BOOL CSystemTray::RemoveIcon()
{
    m_bShowIconPending = FALSE;

    if (!m_bEnabled || m_bRemoved)
        return TRUE;

    m_tnd.uFlags = 0;
    if (Shell_NotifyIcon(NIM_DELETE, &m_tnd))
        m_bRemoved = m_bHidden = TRUE;

    return (m_bRemoved == TRUE);
}

BOOL CSystemTray::HideIcon()
{
    if (!m_bEnabled || m_bRemoved || m_bHidden)
        return TRUE;

#ifdef SYSTEMTRAY_USEW2K
    if (m_bWin2K)
    {
        m_tnd.uFlags = NIF_STATE;
        m_tnd.dwState = NIS_HIDDEN;
        m_tnd.dwStateMask = NIS_HIDDEN;

        m_bHidden = Shell_NotifyIcon( NIM_MODIFY, &m_tnd);
    }
    else
#endif
        RemoveIcon();

    return (m_bHidden == TRUE);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区在线播放| 日韩视频永久免费| 91电影在线观看| 日韩视频在线你懂得| 久久99精品久久久久久国产越南 | 国产中文字幕精品| 不卡电影一区二区三区| 日韩亚洲电影在线| 一区二区视频在线| 成人性生交大片免费看视频在线| 在线不卡欧美精品一区二区三区| 国产精品美女久久久久久久| 久久99久久99小草精品免视看| 欧美性色黄大片| 亚洲男人天堂一区| 成人少妇影院yyyy| 久久嫩草精品久久久精品一| 午夜精品久久久久久久| 97久久精品人人做人人爽50路| 久久综合九色综合97_久久久| 丝瓜av网站精品一区二区| 日本乱人伦aⅴ精品| 亚洲欧洲日本在线| 国产成人av在线影院| 精品欧美乱码久久久久久| 日本亚洲最大的色成网站www| 在线区一区二视频| 亚洲精品一二三四区| 99vv1com这只有精品| 中文字幕成人网| 成人网在线播放| 日本一区二区免费在线| 国产成人免费视频| 欧美激情一区三区| 成人黄色av电影| 国产精品蜜臀在线观看| jvid福利写真一区二区三区| 国产欧美日本一区二区三区| 国产成人在线电影| 中文成人av在线| 成人av在线看| 亚洲乱码一区二区三区在线观看| 99久久国产综合精品女不卡| 亚洲视频一区在线| 在线免费亚洲电影| 天堂va蜜桃一区二区三区| 欧美卡1卡2卡| 久久99国产精品免费| 久久久久久亚洲综合| 成人黄色小视频| 一区二区三区不卡视频| 欧美日韩另类一区| 美女免费视频一区| 国产日韩欧美a| 91最新地址在线播放| 亚洲一区二区美女| 日韩欧美一区二区在线视频| 国产精品一品视频| 亚洲欧美日韩国产另类专区| 欧美日韩mp4| 精品一区免费av| 亚洲特黄一级片| 884aa四虎影成人精品一区| 久久91精品国产91久久小草| 中文字幕乱码日本亚洲一区二区| 91久久精品一区二区三| 日本sm残虐另类| 国产精品久久久99| 欧美另类高清zo欧美| 国产美女精品一区二区三区| 亚洲精品免费在线观看| 日韩欧美电影在线| 色噜噜狠狠成人中文综合| 日本成人中文字幕| 国产精品美女久久久久久2018| 欧美揉bbbbb揉bbbbb| 国产丶欧美丶日本不卡视频| 香蕉久久夜色精品国产使用方法| 久久九九全国免费| 精品视频123区在线观看| 国产精品99久久久| 日韩精品一区第一页| 国产精品久久久久久久久图文区| 3d动漫精品啪啪1区2区免费| www.在线欧美| 国产一区二区主播在线| 亚洲图片欧美色图| 国产精品美女视频| 欧美mv日韩mv国产网站app| 日本久久一区二区三区| 国产精品一区在线| 日韩va亚洲va欧美va久久| 亚洲欧洲另类国产综合| ww久久中文字幕| 欧美一卡在线观看| 欧美色图12p| 99精品视频在线观看| 狠狠色丁香婷婷综合| 天堂va蜜桃一区二区三区| 亚洲欧美aⅴ...| 中文字幕av资源一区| 欧美成人激情免费网| 欧美美女网站色| 欧美日韩一区三区四区| 色婷婷综合久久久| 成人h版在线观看| 国内精品第一页| 蜜桃视频免费观看一区| 性做久久久久久| 天堂午夜影视日韩欧美一区二区| 亚洲精品视频在线看| 亚洲欧美日韩国产综合在线 | 国产精品一区二区果冻传媒| 免费成人性网站| 日本三级亚洲精品| 五月天婷婷综合| 三级亚洲高清视频| 日韩国产高清在线| 麻豆精品一二三| 久久99热这里只有精品| 极品少妇一区二区| 国产精品99久久久久| 成人夜色视频网站在线观看| 国产成a人亚洲| 欧美一区二区视频观看视频| 欧美三级在线视频| 欧美一区三区二区| 精品欧美乱码久久久久久| 欧美精品一区二区三区在线| 久久久精品影视| 国产精品你懂的在线| 亚洲美女偷拍久久| 亚欧色一区w666天堂| 久久se精品一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品理论片| 亚洲精品国产一区二区精华液 | 99久久99久久综合| 在线亚洲一区二区| 日韩天堂在线观看| 国产精品美女久久久久久久久| 亚洲精品欧美综合四区| 欧美aⅴ一区二区三区视频| 国产九九视频一区二区三区| av电影在线观看不卡| 欧美日本免费一区二区三区| 精品国产伦一区二区三区免费| 国产精品午夜久久| 亚洲成人你懂的| 国产精品一区免费视频| 色婷婷av一区二区三区软件 | 日本二三区不卡| 欧美一级高清片| 国产精品久久精品日日| 亚洲成人免费观看| 欧美另类videos死尸| 国产亚洲短视频| 亚洲小说春色综合另类电影| 国产精品资源网站| 欧美日韩亚洲另类| 中日韩免费视频中文字幕| 日本伊人午夜精品| 色久优优欧美色久优优| 26uuu国产电影一区二区| 亚洲一区二区在线免费观看视频| 精品一区二区三区免费观看| 在线观看视频一区二区欧美日韩| 26uuu久久天堂性欧美| 亚洲电影一级片| caoporn国产精品| 欧美精品一区二区久久久| 一区二区三区中文字幕在线观看| 国产一区二区三区免费播放| 4438x成人网最大色成网站| 亚洲婷婷在线视频| 国产91露脸合集magnet| 日韩精品专区在线| 午夜精品爽啪视频| 一本色道久久综合精品竹菊| 国产性天天综合网| 精品一区免费av| 日韩一区二区三区高清免费看看| 亚洲午夜视频在线| 91麻豆国产福利在线观看| 国产亚洲精品aa午夜观看| 久久成人免费网站| 538在线一区二区精品国产| 亚洲一区二区三区四区五区中文| 99久久伊人精品| 国产精品美女久久久久久久 | 中文字幕一区二区三区在线播放 | 91精品国产入口| 亚洲人成在线播放网站岛国| 国产精品99久| 26uuu国产日韩综合| 欧美色手机在线观看| 亚洲视频综合在线| 99久久国产免费看| 亚洲人成网站精品片在线观看| 岛国av在线一区|