亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩欧美激情一区| 亚洲国产精品久久久久婷婷884| 亚洲777理论| 亚洲va欧美va天堂v国产综合| 全部av―极品视觉盛宴亚洲| 成人午夜av影视| 欧美日韩高清在线| 国产亚洲一区二区在线观看| 亚洲成av人片| 成人综合婷婷国产精品久久蜜臀 | 日韩视频一区二区三区| 亚洲国产精品激情在线观看| 日韩电影在线看| www.日韩av| 国产日韩欧美综合在线| 蜜桃传媒麻豆第一区在线观看| 99热99精品| 国产欧美日韩激情| 久久精品国产99国产精品| 欧美综合在线视频| 国产日韩欧美激情| 九九精品一区二区| 欧美日韩情趣电影| 一区二区在线看| 99久久久精品免费观看国产蜜| 精品久久久久香蕉网| 日韩中文字幕av电影| 91国内精品野花午夜精品| 国产精品网站在线观看| 久久99精品久久久| 欧美一区二区三区四区五区| 亚洲高清在线视频| 精品视频资源站| 一区二区三区欧美日韩| 91麻豆福利精品推荐| 最近中文字幕一区二区三区| 成人美女在线观看| 中文字幕精品一区二区精品绿巨人| 国产在线一区观看| 亚洲激情图片qvod| 国产成人在线视频播放| 日韩无一区二区| 免费在线视频一区| 日韩精品一区二区三区视频在线观看| 视频在线观看一区二区三区| 欧美揉bbbbb揉bbbbb| 日韩激情一区二区| 91精品国产综合久久久蜜臀粉嫩 | 亚洲成av人片观看| 欧美性xxxxxxxx| 婷婷夜色潮精品综合在线| 欧美日韩不卡视频| 久久精品国内一区二区三区| 精品国产乱码久久久久久久| 狠狠色丁香九九婷婷综合五月 | 91在线国产观看| 亚洲精品欧美激情| 欧美理论电影在线| 久久99久久久欧美国产| 欧美国产日本韩| 在线观看免费一区| 日本女人一区二区三区| 日韩视频不卡中文| 国产成人在线网站| 一区二区三区不卡视频| 欧美精品1区2区3区| 国产精品一区二区三区四区| 国产精品理论片在线观看| 91久久线看在观草草青青| 午夜欧美电影在线观看| 日韩欧美一区二区视频| 精品一区二区三区久久| 中文字幕在线免费不卡| 欧美蜜桃一区二区三区| 黄色日韩三级电影| 亚洲人一二三区| 日韩一区二区精品在线观看| 丁香激情综合国产| 亚洲国产精品久久久久秋霞影院 | 美女视频第一区二区三区免费观看网站| 欧美一区二区高清| av在线不卡电影| 日韩精品亚洲一区| 中文字幕一区二区三区色视频| 在线视频国内自拍亚洲视频| 美腿丝袜亚洲三区| 亚洲人成精品久久久久| 欧美大片国产精品| 91在线视频18| 久久成人免费电影| 国产福利一区二区三区视频| 亚洲少妇中出一区| 久久亚洲影视婷婷| 在线观看亚洲一区| 国产成人欧美日韩在线电影| 午夜精品一区二区三区电影天堂 | 国模少妇一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 成人激情校园春色| 另类综合日韩欧美亚洲| 亚洲一区二区在线播放相泽| 国产欧美一区二区精品久导航 | 久久成人麻豆午夜电影| 亚洲国产日日夜夜| 亚洲人成影院在线观看| 国产日韩欧美精品在线| 欧美一级高清片在线观看| 99精品视频一区| 国产精品亚洲午夜一区二区三区| 天天综合日日夜夜精品| 亚洲黄色片在线观看| 中文字幕一区二区在线观看| 久久精品欧美一区二区三区不卡 | 欧美制服丝袜第一页| 粉嫩一区二区三区性色av| 精品一区二区三区香蕉蜜桃| 天天色图综合网| 日韩精品亚洲专区| 奇米四色…亚洲| 免费成人小视频| 美美哒免费高清在线观看视频一区二区 | 国产精品美女www爽爽爽| 欧美一区二区精品| 欧美日韩国产另类不卡| 欧美日本韩国一区二区三区视频| 色婷婷亚洲精品| 色噜噜狠狠一区二区三区果冻| 国产一区视频导航| 高清av一区二区| 成人免费va视频| 一本大道久久精品懂色aⅴ| 91一区二区三区在线播放| 91网站视频在线观看| 91一区二区三区在线观看| 91福利视频网站| 欧美日韩不卡在线| 欧美成人三级电影在线| 久久精品一区四区| 中文字幕一区二区三中文字幕| 自拍偷拍亚洲激情| 亚洲国产精品久久人人爱| 蜜臀av性久久久久av蜜臀妖精| 捆绑调教美女网站视频一区| 国产在线视频一区二区| 成人三级伦理片| 91麻豆免费观看| 欧美一区二区视频观看视频| 精品国产免费视频| 亚洲欧洲日产国码二区| 亚洲国产精品一区二区尤物区| 爽好久久久欧美精品| 蜜桃一区二区三区在线| 国产综合成人久久大片91| 成人午夜免费av| 91美女在线观看| 5858s免费视频成人| 国产欧美日韩亚州综合| 日韩一区欧美一区| 首页欧美精品中文字幕| 五月天亚洲婷婷| 国产一区福利在线| 欧洲一区二区三区免费视频| 欧美剧情电影在线观看完整版免费励志电影| 3d成人动漫网站| 国产精品白丝在线| 亚洲一区在线电影| 久久国产夜色精品鲁鲁99| jvid福利写真一区二区三区| 欧美日韩亚洲综合在线| 国产丝袜在线精品| 亚洲成人在线网站| 国内欧美视频一区二区| 欧美日韩在线播放| 中文字幕精品一区二区精品绿巨人 | 久久99精品国产.久久久久久 | 99这里只有久久精品视频| 337p亚洲精品色噜噜噜| 中文字幕日韩av资源站| 毛片av一区二区| 欧美日韩一级视频| 中文字幕一区二区三区不卡在线| aa级大片欧美| 欧美不卡123| 日韩黄色小视频| 色呦呦日韩精品| 国产精品久久久久久久久免费相片 | 日韩精品一区二区三区视频播放 | 欧美一区二区三区小说| 亚洲黄色尤物视频| 成人h版在线观看| 久久青草国产手机看片福利盒子| 亚洲v中文字幕| 91免费看视频| 国产精品久久久久久久久免费樱桃 | 久久综合久久综合九色| 日韩高清在线不卡| 欧美日韩成人综合| 性感美女极品91精品| 欧美中文字幕一二三区视频| 日韩一区有码在线|