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

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

?? memwatcher.cpp

?? 一個簡單WM5 今日插件源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//


// ****************************************************************************
// FILE: memwatcher.cpp
// ABTRACT: Main implementation file for the today item
// ****************************************************************************
//

#include "stdafx.h"


#define INVALID_HEIGHT            0xFFFFFFFF

// flags bits for options - we use negative logic to make the default (0)
// show both
#define FLAGS_HIDE_STORAGE    0x1
#define FLAGS_HIDE_PROGRAM    0x2


//global variables    
HICON               g_hIcon;
UINT                g_plugInHeight;
HINSTANCE           g_hInst;
HWND                g_hWnd;
BOOL                g_bFirstDisplay         = TRUE;
HWND                g_hStorageProgressBar;
HWND                g_hProgramProgressBar;
UINT                g_StorageMemUsed;
UINT                g_ProgramMemUsed;
BOOL                g_fShowStorage          = TRUE;
BOOL                g_fShowProgram          = TRUE;


// forward function declarations
static INT InitializeClasses();

/*************************************************************************/
/* Entry point for the dll                                                 */
/*************************************************************************/
BOOL APIENTRY DllMain( HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:            
        
        // The DLL is being loaded for the first time by a given process.
        // Perform per-process initialization here.  If the initialization
        // is successful, return TRUE; if unsuccessful, return FALSE.
        g_hInst = (HINSTANCE)hModule;
        
        //load the icon
        g_hIcon = (HICON)LoadImage(g_hInst, MAKEINTRESOURCE(IDI_DISPLAYICON), IMAGE_ICON, DRA::SCALEX(16), DRA::SCALEY(16) ,LR_DEFAULTCOLOR);
        
        //initilize the application class, and set the global window handle
        UnregisterClass((LPCTSTR)LoadString(g_hInst, IDS_TODAY_STORAGE_APPNAME,0,0), g_hInst);
        InitializeClasses();
        g_hWnd = 0;
        
        break;
        
    case DLL_PROCESS_DETACH:
        // The DLL is being unloaded by a given process.  Do any
        // per-process clean up here, such as undoing what was done in
        // DLL_PROCESS_ATTACH.    The return value is ignored.
        
        DestroyIcon(g_hIcon);
        
        UnregisterClass((LPCTSTR)LoadString(g_hInst, IDS_TODAY_STORAGE_APPNAME,0,0), g_hInst);
        g_hInst = NULL;
        break;           
    }
    
    return TRUE;
}

/*************************************************************************/
/* Handle any messages that may be needed for the plugin                 */
/* Handled messages:                                                     */
/*        WM_TODAYCUSTOM_QUERYREFRESHCACHE                                 */
/*        WM_CREATE                                                         */
/*        WM_LBUTTONUP                                                     */
/*        WM_PAINT                                                         */
/*        WM_DESTROY                                                         */
/*************************************************************************/
LRESULT CALLBACK WndProc (HWND hwnd, UINT uimessage, WPARAM wParam, LPARAM lParam) 
{
    switch (uimessage)
    {          
        //check to see if a refresh is required
    case WM_TODAYCUSTOM_QUERYREFRESHCACHE: 
        {
            TODAYLISTITEM *ptliItem;
            MEMORYSTATUS MemStatus;
            STORE_INFORMATION StoreInfo;
            INT iItemHeight;
            
            UINT iCurrentStore;
            DOUBLE dCurrentStore;
            BOOL    bReturn = FALSE;
            
            // get the pointer to the item from the Today screen
            ptliItem = (TODAYLISTITEM*)wParam;

            if ((NULL == ptliItem) || (WaitForSingleObject(SHELL_API_READY_EVENT, 0) == WAIT_TIMEOUT))
            {
                return FALSE;
            }
            
            g_fShowStorage = !(ptliItem->grfFlags & FLAGS_HIDE_STORAGE);
            g_fShowProgram = !(ptliItem->grfFlags & FLAGS_HIDE_PROGRAM);

            // adjust the height of the today item based on showing one or two bars
            if (g_fShowProgram && g_fShowStorage)
            {
                iItemHeight = DRA::SCALEY(40);
            }
            else
            {
                iItemHeight = DRA::SCALEY(20);
            }
            
            // determine % memory space and see if it has changed
            GlobalMemoryStatus(&MemStatus);
            if(g_ProgramMemUsed != MemStatus.dwMemoryLoad)
            {
                g_ProgramMemUsed = MemStatus.dwMemoryLoad;
                bReturn = TRUE;
            }
            
            // determine % storage space and see if it has changed
            GetStoreInformation(&StoreInfo);
            dCurrentStore = ((((DOUBLE)StoreInfo.dwStoreSize - (DOUBLE)StoreInfo.dwFreeSize) / (DOUBLE)StoreInfo.dwStoreSize) * 100);
            iCurrentStore = (INT)dCurrentStore;
            
            if(g_StorageMemUsed != iCurrentStore)
            {
                g_StorageMemUsed = iCurrentStore;
                bReturn = TRUE;
            }
            
            if (0 == ptliItem->cyp)
            {
                ptliItem->cyp = iItemHeight;
                bReturn = TRUE;
            }
            
            return bReturn;
            
            
        }        
        
    case WM_CREATE:         
        break;
        
    case WM_LBUTTONUP: 
        MessageBox(NULL, TEXT("Detected Screen Tap!"), TEXT("StorageCheck Today Item:"), MB_OK);
        break;          
        
    case WM_PAINT: 
        PAINTSTRUCT     ps;
        RECT            rcWindBounds; 
        RECT            rcMyBounds;
        HDC             hDC;
        HFONT            hFontOld;
        TCHAR            szTextBuffer[10];
        COLORREF        crText;

        GetWindowRect( hwnd, &rcWindBounds); 
        
        hDC = BeginPaint(hwnd, &ps);
        
        // create a custom rectangle relative to the client area
        rcMyBounds.left = 0;
        rcMyBounds.top = DRA::SCALEY(2);
        rcMyBounds.right = rcWindBounds.right - rcWindBounds.left;
        rcMyBounds.bottom = rcWindBounds.bottom - rcWindBounds.top;          
        
        // draw the icon on the screen
        SetBkMode(hDC, TRANSPARENT);
        DrawIcon(hDC, 2, 0, g_hIcon);
        
        BOOL bIsFarEast;
        LOGFONT lf;
        HFONT hSysFont;
        HFONT hFont;

        //determine if this is a Far East platform
        switch (PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())))
        {
        case LANG_CHINESE:
        case LANG_KOREAN:
        case LANG_JAPANESE:
            bIsFarEast = TRUE;
            break;
            
        default:
            bIsFarEast = FALSE;
            break;
        }

        hSysFont = (HFONT) GetStockObject(SYSTEM_FONT);
        GetObject(hSysFont, sizeof(LOGFONT), &lf);
        // If it is far east, use a normal font at 9 points,
        //  otherwise use a bold font as 8 points
        if (bIsFarEast)
        {
            lf.lfWeight = FW_NORMAL;
            // Calculate the font size, making sure to round the result to the nearest integer
            lf.lfHeight = (long) -((9.0 * (double)GetDeviceCaps(hDC, LOGPIXELSY) / 72.0)+.5);
        }
        else
        {
            lf.lfWeight = FW_BOLD;
            // Calculate the font size, making sure to round the result to the nearest integer
            lf.lfHeight = (long) -((8.0 * (double)GetDeviceCaps(hDC, LOGPIXELSY) / 72.0)+.5);
        }

        // create the font
        hFont = CreateFontIndirect(&lf);
    
        // Select the system font into the device context
        hFontOld = (HFONT) SelectObject(hDC, hFont);

        // determine the theme's current text color
        //  this color will change when the user picks a new theme,
        //  so get it each time the display needs to be painted
        crText = SendMessage(GetParent(hwnd), TODAYM_GETCOLOR, (WPARAM) TODAYCOLOR_TEXT, NULL);

        // set that color
        SetTextColor(hDC, crText);

        // determine if there is one or two bars to paint
        if(g_fShowProgram && g_fShowStorage)
        {
            // update and paint storage status bar
            SendMessage(g_hStorageProgressBar, PBM_SETPOS, g_StorageMemUsed, NULL);
            SetWindowPos(g_hStorageProgressBar, g_hWnd, DRA::SCALEX(85), DRA::SCALEY(4), DRA::SCALEX(120), DRA::SCALEY(10), SWP_SHOWWINDOW);
            
            // update and paint program status bar

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品免费视频| 亚洲一二三四在线| 国产一区二区三区四| 精品999在线播放| 国产91在线看| 国产精品欧美久久久久无广告| 国产不卡在线播放| 中文字幕制服丝袜成人av | 日韩二区三区四区| 制服丝袜一区二区三区| 久草热8精品视频在线观看| 亚洲精品一区二区三区香蕉| 风间由美一区二区三区在线观看| 国产精品成人一区二区艾草| 欧美三级乱人伦电影| 久久精品国产亚洲aⅴ| 国产性做久久久久久| 91网站黄www| 石原莉奈一区二区三区在线观看| 亚洲精品在线观| 91免费国产在线观看| 日韩—二三区免费观看av| 国产午夜精品在线观看| 91麻豆精品在线观看| 日本视频一区二区| 国产精品国产三级国产普通话蜜臀| 欧美中文字幕久久 | 精品一区二区在线观看| 国产精品女主播av| 欧美乱熟臀69xxxxxx| 国产一区二区不卡在线| 一区二区高清免费观看影视大全| 欧美一级理论性理论a| kk眼镜猥琐国模调教系列一区二区| 亚洲国产精品久久艾草纯爱| www欧美成人18+| 在线日韩国产精品| 国产精品夜夜嗨| 日本不卡1234视频| 亚洲色大成网站www久久九九| 日韩一区二区电影网| 99re热这里只有精品视频| 麻豆精品视频在线观看免费| 亚洲日本电影在线| 2欧美一区二区三区在线观看视频| 一本久道久久综合中文字幕| 国产在线一区观看| 午夜精品免费在线| 亚洲日本一区二区| 国产午夜精品久久久久久久 | 欧美群妇大交群中文字幕| 日韩一区二区三| 在线成人免费视频| 国产精选一区二区三区| 亚洲福利一区二区| 亚洲欧美偷拍卡通变态| 国产喷白浆一区二区三区| 日韩亚洲欧美综合| 欧美日韩一区在线观看| 一本久久综合亚洲鲁鲁五月天 | 国产在线精品免费| 日韩制服丝袜先锋影音| 一区二区三区在线视频观看58 | 国产精品国产三级国产普通话蜜臀 | 亚洲黄色av一区| 精品精品欲导航| 欧美乱熟臀69xxxxxx| 欧美亚洲综合在线| 色8久久精品久久久久久蜜| 成人激情开心网| 国产成人精品综合在线观看| 麻豆精品国产91久久久久久| 日韩国产精品91| 视频一区欧美精品| 日韩黄色免费网站| 石原莉奈在线亚洲二区| 丝袜诱惑亚洲看片| 午夜精品福利在线| 日韩综合小视频| 日韩精品亚洲专区| 免费成人av资源网| 毛片不卡一区二区| 国内久久精品视频| 激情成人午夜视频| 国产成人精品免费| 成人av午夜电影| 94-欧美-setu| 日本精品视频一区二区三区| 欧美性大战久久久久久久| 欧美日韩精品一二三区| 91精品久久久久久蜜臀| 日韩视频在线你懂得| 精品国产青草久久久久福利| 久久综合久久综合久久综合| 国产欧美一区二区精品仙草咪| 日本一区二区视频在线观看| 国产精品白丝在线| 亚洲va欧美va人人爽| 蜜臀av一级做a爰片久久| 国产激情91久久精品导航| 成人高清免费在线播放| 色94色欧美sute亚洲线路一久| 欧美日韩三级在线| 欧美成人aa大片| 国产精品久久影院| 亚洲国产日韩精品| 国内外成人在线视频| 99久久婷婷国产综合精品| 欧美三区免费完整视频在线观看| 日韩一区二区三区电影在线观看 | 欧美日韩久久久一区| 欧美成人综合网站| 欧美国产精品v| 亚洲国产综合人成综合网站| 久久精品久久精品| 99久久精品国产网站| 91精品国产综合久久精品| 国产亚洲欧美日韩日本| 亚洲精品高清视频在线观看| 久久精品国产亚洲aⅴ| 一本大道综合伊人精品热热| 欧美一卡2卡3卡4卡| 国产精品日韩成人| 青椒成人免费视频| 91丨九色丨尤物| 欧美大片在线观看一区| 一区二区三区在线播| 国产尤物一区二区| 欧美日韩精品一区二区三区四区 | 日韩精品福利网| 97久久超碰国产精品电影| 欧美一区二区三区不卡| 亚洲摸摸操操av| 成人一级视频在线观看| 91麻豆精品国产自产在线观看一区 | 成人av午夜电影| 欧美xxxxx牲另类人与| 亚洲一区二区精品3399| 成人亚洲一区二区一| 日韩一区二区免费在线观看| 亚洲人成影院在线观看| 国产一区二区在线看| 538在线一区二区精品国产| 成人欧美一区二区三区在线播放| 精品在线视频一区| 欧美猛男超大videosgay| 亚洲欧美日韩中文播放| 国产激情一区二区三区| 精品国精品自拍自在线| 五月综合激情网| 在线免费观看一区| 亚洲色图欧美激情| 91网站最新地址| 中文字幕日韩av资源站| 成人综合婷婷国产精品久久| 精品对白一区国产伦| 麻豆精品久久精品色综合| 欧美乱熟臀69xxxxxx| 亚洲影院久久精品| 色综合天天天天做夜夜夜夜做| 欧美韩日一区二区三区四区| 国产一区二区三区免费看| 日韩精品一区二区三区三区免费 | 精品日韩99亚洲| 婷婷综合久久一区二区三区| 色呦呦一区二区三区| 亚洲人成伊人成综合网小说| 91麻豆swag| 亚洲综合在线五月| 欧美日韩亚洲综合在线| 亚洲成av人片www| 4438x亚洲最大成人网| 男男视频亚洲欧美| 精品处破学生在线二十三| 狠狠色狠狠色综合系列| 久久久精品国产99久久精品芒果 | 成人少妇影院yyyy| 中文字幕国产一区| 99re热这里只有精品免费视频| 中文字幕一区二区三区在线播放| 成人动漫中文字幕| 亚洲精品国产一区二区精华液 | 色噜噜偷拍精品综合在线| 玉足女爽爽91| 69久久夜色精品国产69蝌蚪网| 免费观看一级特黄欧美大片| 精品免费99久久| 成人激情图片网| 亚洲第一成人在线| 日韩精品一区二区三区四区视频| 国产精品资源在线看| 成人欧美一区二区三区| 欧美日韩免费观看一区三区| 男人操女人的视频在线观看欧美| 久久精品网站免费观看| 91小视频在线免费看| 男人操女人的视频在线观看欧美| 国产视频一区二区在线观看| 色婷婷亚洲精品| 美女视频黄久久|