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

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

?? titlebar.cpp

?? This code is Address book code for Windows Mobile. This source code support windows mobile 5.0 over.
?? CPP
字號:
#include "StdAfx.h"
#include "windows.h"
#include "regext.h"
#include "snapi.h"

#include "Titlebar.h"

int nBattery; //0-14
int nBars; //0-5
TCHAR szCarrier[50];
TCHAR szTime[12];

bool bCharging;
bool bBluetooth;
bool bSpeakerOn;
bool bVibrate;
bool bWifi;
bool bLocked;
bool bAlarm;
bool bA2dp;
bool bConnection;

void InitTitlebar(HWND hWnd) {
    HREGNOTIFY hNotify = NULL;

    // Signal Strength
    HRESULT hr = RegistryNotifyWindow(
        SN_PHONESIGNALSTRENGTH_ROOT,
        SN_PHONESIGNALSTRENGTH_PATH,
        SN_PHONESIGNALSTRENGTH_VALUE, 
        hWnd, WM_TITLEBAR, TB_SIGNAL_MASK,
        NULL, &hNotify);

    // Time
    hr = RegistryNotifyWindow(
        SN_TIME_ROOT,
        SN_TIME_PATH,
        SN_TIME_VALUE,
        hWnd, WM_TITLEBAR, TB_TIME_MASK,
        NULL, &hNotify);

    // Battery
    hr = RegistryNotifyWindow(
        SN_POWERBATTERYSTRENGTH_ROOT, 
        SN_POWERBATTERYSTRENGTH_PATH, 
        SN_POWERBATTERYSTRENGTH_VALUE,
        hWnd, WM_TITLEBAR, TB_BATTERY_MASK,
		NULL, &hNotify);

    // Bluetooth
    hr = RegistryNotifyWindow(
        SN_BLUETOOTHSTATEPOWERON_ROOT,
        SN_BLUETOOTHSTATEPOWERON_PATH,
        SN_BLUETOOTHSTATEPOWERON_VALUE,
        hWnd, WM_TITLEBAR, TB_BLUETOOTH_MASK,
		NULL, &hNotify);

    // Speaker / Volume
    hr = RegistryNotifyWindow(
	    SN_RINGMODE_ROOT,
	    SN_RINGMODE_PATH,	
	    SN_RINGMODE_VALUE,
        hWnd, WM_TITLEBAR, TB_VOLUME_MASK,
		NULL, &hNotify);

    // WiFi
    hr = RegistryNotifyWindow(
        SN_WIFISTATEPOWERON_ROOT,
        SN_WIFISTATEPOWERON_PATH,
        SN_WIFISTATEPOWERON_VALUE,
        hWnd, WM_TITLEBAR, TB_CONNECTIONS_MASK,
		NULL, &hNotify);

    // Connections
    hr = RegistryNotifyWindow(
        SN_CONNECTIONSCOUNT_ROOT,
        SN_CONNECTIONSCOUNT_PATH,
        SN_CONNECTIONSCOUNT_VALUE,
        hWnd, WM_TITLEBAR, TB_CONNECTIONS_MASK,
		NULL, &hNotify);

    RefreshTitlebar(0xFF);   
}

void RefreshTitlebar(UINT uWhich) {
    DWORD dw;
    HRESULT hr;

#ifdef DEBUG_SCREENSHOTS
    StringCchPrintf(szTime, 12, TEXT("12:38 PM"));
    StringCchPrintf(szCarrier, 50, TEXT("AT&T"));
    nBars = 3;
    nBattery = 13;
    bVibrate = false;
    bSpeakerOn = true;
    bBluetooth = true;
    bA2dp = false;
    bWifi = false;
    bConnection = true;
    return;
#endif

    // Signal Strength
    if (uWhich & TB_SIGNAL_MASK) {
        hr = RegistryGetDWORD(
            SN_PHONESIGNALSTRENGTH_ROOT, 
            SN_PHONESIGNALSTRENGTH_PATH, 
            SN_PHONESIGNALSTRENGTH_VALUE,
            &dw);
        if (SUCCEEDED(hr))
            nBars = (int)((double)dw / 20.0);
    }

    // Operator name
    if (uWhich & TB_OPERATOR_MASK) {
        hr = RegistryGetString(
            SN_PHONEOPERATORNAME_ROOT, 
            SN_PHONEOPERATORNAME_PATH, 
            SN_PHONEOPERATORNAME_VALUE, 
            szCarrier, sizeof(szCarrier));
    }

    // Time
    if (uWhich & TB_TIME_MASK) {
        ::GetTimeFormat(LOCALE_USER_DEFAULT, 
            TIME_NOSECONDS, NULL, NULL, szTime, 12);
    }

    // Battery level & charging state
    // http://msdn.microsoft.com/en-us/library/aa456240.aspx
    if (uWhich & TB_BATTERY_MASK) {
        hr = RegistryGetDWORD(
            SN_POWERBATTERYSTRENGTH_ROOT, 
            SN_POWERBATTERYSTRENGTH_PATH, 
            SN_POWERBATTERYSTRENGTH_VALUE,
            &dw);
        if (SUCCEEDED(hr)) {
            nBattery = (dw & SN_POWERBATTERYSTRENGTH_BITMASK) >> 16;
            nBattery = (int)(nBattery * 0.172834 + 0.5);
            bCharging = (dw & BATTERY_STATE_CHARGING) != 0;
        }
    }

    // Bluetooth on/off
    if (uWhich & TB_BLUETOOTH_MASK) {
        hr = RegistryGetDWORD(
            SN_BLUETOOTHSTATEPOWERON_ROOT,
            SN_BLUETOOTHSTATEPOWERON_PATH,
            SN_BLUETOOTHSTATEPOWERON_VALUE,
            &dw);
        if (SUCCEEDED(hr)) {
            bBluetooth = (dw & SN_BLUETOOTHSTATEPOWERON_BITMASK) != 0;

            // this is not needed, since this is the same RegKey as SN_BLUETOOTH*
            //RegistryGetDWORD(
            //    SN_BLUETOOTHSTATEA2DPCONNECTED_ROOT,
            //    SN_BLUETOOTHSTATEA2DPCONNECTED_PATH,
            //    SN_BLUETOOTHSTATEA2DPCONNECTED_VALUE,
            //    &dw);
            bA2dp = (dw & SN_BLUETOOTHSTATEA2DPCONNECTED_BITMASK) != 0;
        }
    }

    // Speaker / volume
    if (uWhich & TB_VOLUME_MASK) {
        hr = RegistryGetDWORD(
	    SN_RINGMODE_ROOT,
	    SN_RINGMODE_PATH,	
	    SN_RINGMODE_VALUE,
            &dw);

        if (SUCCEEDED(hr)) {
            bSpeakerOn = dw == SN_RINGMODE_SOUND;
            bVibrate = dw == SN_RINGMODE_VIBRATE;
        }
    }

    // Connections & Wifi
    if (uWhich & TB_CONNECTIONS_MASK) {
        hr = RegistryGetDWORD(
            SN_WIFISTATEPOWERON_ROOT,
            SN_WIFISTATEPOWERON_PATH,
            SN_WIFISTATEPOWERON_VALUE,
            &dw);

        if (SUCCEEDED(hr))
            bWifi = (dw & SN_WIFISTATEPOWERON_BITMASK) != 0;

        hr = RegistryGetDWORD(
            SN_CONNECTIONSCOUNT_ROOT,
            SN_CONNECTIONSCOUNT_PATH,
            SN_CONNECTIONSCOUNT_VALUE,
            &dw);

        if (SUCCEEDED(hr))
            bConnection = dw != 0;
    }

    if (uWhich & TB_OTHER_MASK) {
        bLocked = false; // TODO?
        bAlarm = false; // TODO?
    }
}

void DrawTitlebarOn(HDC hdc, RECT rTitlebar, HDC hdcSkin, HFONT hfTitleFont,
    COLORREF rgbBackground, COLORREF rgbForeground, 
    COLORREF rgbSignal, COLORREF rgbBattery, 
    COLORREF rgbBatteryCharge) {

    RECT rc;
    HGDIOBJ hOld;

    HBRUSH hbrForeground = CreateSolidBrush(rgbForeground);
    HBRUSH hbrBackground = CreateSolidBrush(rgbBackground);
    HBRUSH hbrSignal = CreateSolidBrush(rgbSignal);
    HBRUSH hbrBattery = bCharging ? CreateSolidBrush(rgbBatteryCharge)
        : CreateSolidBrush(rgbBattery);

	SetTextColor(hdc, rgbForeground);
	SetBkColor(hdc, rgbBackground);
    SetBkMode(hdc, TRANSPARENT);

    hOld = SelectObject(hdc, hfTitleFont);

    // Fill in background
	FillRect(hdc, &rTitlebar, hbrBackground);
    int rTitlebarHeight = rTitlebar.bottom - rTitlebar.top;
    int scale = rTitlebarHeight / TITLE_BAR_HEIGHT;

    // LEFT SIDE
    // Bars
    rc.left = rTitlebar.left;
    rc.bottom = rTitlebar.bottom - 3 * scale;
    for (int i = 0; i < 5; i++) {
        rc.right = rc.left + 3 * scale;
        rc.top = nBars > i ? rc.bottom - (2 * i + 3) * scale : rc.bottom - 1 * scale;
        FillRect(hdc, &rc, hbrSignal);
        rc.left = rc.right + 1 * scale;
    }

    // Carrier
    rc.top = rTitlebar.top + 1 * scale;
    rc.left = rc.right + 2 * scale;
	SetTextAlign(hdc, TA_LEFT);
    
    DrawText(hdc, szCarrier, -1, &rc, 
        DT_LEFT | DT_TOP | DT_NOCLIP | DT_NOPREFIX);

    // Time
    rc.left = rTitlebar.left;
    rc.right = rTitlebar.right;
    DrawText(hdc, szTime, -1, &rc, DT_CENTER | DT_TOP | DT_NOCLIP);

    // Battery
    int x = rTitlebar.right - BATTERY_WIDTH * scale;
    int y = rTitlebar.top;
    StretchBlt(hdc, x, y, BATTERY_WIDTH * scale, rTitlebarHeight, 
        hdcSkin, BATTERY_X_OFFSET, 0, BATTERY_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);

    if (nBattery) {
        rc.top = 5 * scale;
        rc.bottom = rc.top + 6 * scale;
        rc.left = x + 3 * scale;
        rc.right = rc.left + nBattery * scale;
        FillRect(hdc, &rc, hbrBattery);
    }

    // Speaker
    if (bVibrate) {
        x -= (VIBRATE_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, VIBRATE_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, VIBRATE_X_OFFSET, 0, VIBRATE_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }
    else if (bSpeakerOn) {
        x -= (SPEAKER_ON_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, SPEAKER_ON_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, SPEAKER_ON_X_OFFSET, 0, SPEAKER_ON_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }
    else {
        x -= (SPEAKER_OFF_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, SPEAKER_OFF_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, SPEAKER_OFF_X_OFFSET, 0, SPEAKER_OFF_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }

    // Bluetooth
    if (bBluetooth) {
        x -= (BLUETOOTH_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, BLUETOOTH_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, BLUETOOTH_X_OFFSET, 0, BLUETOOTH_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }
    if (bA2dp) {
        x -= (A2DP_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, A2DP_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, A2DP_X_OFFSET, 0, A2DP_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }

    // WiFi Connection
    if (bWifi) {
        x -= (WIFI_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, WIFI_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, WIFI_X_OFFSET, 0, WIFI_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }

    // Data Connection
    if (bConnection) {
        x -= (CONNECTION_WIDTH + TITLE_BAR_ICON_SPACING) * scale;
        StretchBlt(hdc, x, y, CONNECTION_WIDTH * scale, rTitlebarHeight, 
            hdcSkin, CONNECTION_X_OFFSET, 0, CONNECTION_WIDTH, TITLE_BAR_HEIGHT, SRCCOPY);
    }

    //cleanup
    SelectObject(hdc, hOld);
    DeleteObject(hbrForeground);
    DeleteObject(hbrBackground);
    DeleteObject(hbrSignal);
    DeleteObject(hbrBattery);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品在线播放| 亚洲女同一区二区| 国产成人精品亚洲午夜麻豆| 久久99精品久久久久久国产越南| 欧美日韩国产中文| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美美女网站色| 日一区二区三区| 337p亚洲精品色噜噜噜| 久久久久久久久99精品| 亚洲欧美精品午睡沙发| 狠狠色综合播放一区二区| 久久综合九色综合久久久精品综合| 精品亚洲成a人在线观看| 色综合色综合色综合| 精品福利一二区| 国产69精品久久99不卡| 一区在线观看免费| 久久99久久久久| 欧美午夜在线观看| 久久av资源站| 91精品婷婷国产综合久久竹菊| 国产精品区一区二区三区| 色婷婷综合五月| 另类成人小视频在线| 国产亚洲一区二区三区四区| 91麻豆国产在线观看| 图片区小说区国产精品视频| 99久久婷婷国产| 欧美极品少妇xxxxⅹ高跟鞋| 色婷婷综合五月| 蜜臀av亚洲一区中文字幕| 欧美在线观看视频在线| 1区2区3区欧美| 成人免费视频播放| 日韩高清在线观看| 中文字幕中文乱码欧美一区二区| 7777女厕盗摄久久久| 国产福利91精品一区二区三区| 日韩欧美成人一区二区| 成人av电影在线网| 男男成人高潮片免费网站| 国产精品私房写真福利视频| 91精品国产乱码久久蜜臀| 从欧美一区二区三区| 日本一区二区三区国色天香| 懂色av一区二区三区免费看| 亚洲第一主播视频| 国产精品久久久久久久久搜平片 | 99re视频精品| 美国欧美日韩国产在线播放 | 婷婷开心激情综合| 国产精品美女久久久久aⅴ | 欧美精品三级日韩久久| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美一区二区三区小说| 99久久久国产精品| 国产精品影视在线| 麻豆91精品视频| 午夜影视日本亚洲欧洲精品| 亚洲同性同志一二三专区| 久久精品欧美一区二区三区不卡| 69久久夜色精品国产69蝌蚪网| 日韩中文字幕一区二区三区| 1区2区3区精品视频| 欧美三级三级三级爽爽爽| 奇米精品一区二区三区在线观看一| 亚洲天堂中文字幕| 亚洲国产精品成人综合| 26uuu国产一区二区三区| 欧美一区二区三区日韩视频| 国产乱码字幕精品高清av| 国产精品久线在线观看| 久久久久九九视频| 欧美精品一区二区三区四区| 日韩美女视频在线| 日韩午夜激情视频| 欧美一区二区三区在线电影| 91精品福利在线一区二区三区| 久久国产精品第一页| 日韩不卡一区二区三区| 国产精品丝袜一区| 在线播放中文字幕一区| 风间由美一区二区av101| 亚洲无线码一区二区三区| 一区二区三区色| 亚洲一区二区三区爽爽爽爽爽| 亚洲综合网站在线观看| 精品国产乱码久久久久久蜜臀| 99re热这里只有精品视频| 高清不卡一区二区| 午夜精品在线视频一区| 丝袜美腿一区二区三区| 国产精品美女久久福利网站| 4438x成人网最大色成网站| 国产99久久久精品| 91在线视频播放| 欧美在线制服丝袜| 丁香五精品蜜臀久久久久99网站| 亚洲国产成人av好男人在线观看| 久久婷婷国产综合国色天香| 国产欧美一区在线| 亚洲色图欧美在线| 天天av天天翘天天综合网| 青青草国产精品97视觉盛宴 | 性感美女极品91精品| 日韩电影免费在线看| 国产毛片精品视频| 91丨九色丨国产丨porny| 欧美日韩国产一级| 久久综合九色综合97_久久久| 中文字幕国产一区二区| 精品国产乱码91久久久久久网站| 91九色02白丝porn| 91美女片黄在线观看91美女| 337p亚洲精品色噜噜噜| 久久精品亚洲国产奇米99| 欧美一区三区四区| 国产喷白浆一区二区三区| 日韩精品一区二区在线| 国产精品国产精品国产专区不蜜| 亚洲午夜视频在线观看| 国产一区欧美二区| 久久99精品国产.久久久久久 | 激情五月婷婷综合| 日韩高清不卡一区二区| 成人性生交大片免费看视频在线 | 久国产精品韩国三级视频| 波多野结衣在线一区| 4hu四虎永久在线影院成人| 中文字幕av不卡| 久久精品一区二区三区不卡牛牛 | 日韩一区二区三区四区| 国产精品卡一卡二卡三| 国产精品三级av在线播放| 欧美激情一区二区三区不卡| 偷偷要91色婷婷| av不卡在线播放| 久久久久久久久久电影| 国产午夜精品一区二区| 日韩精品一二三四| 蜜桃91丨九色丨蝌蚪91桃色| 日本不卡一二三| 91美女蜜桃在线| 中文久久乱码一区二区| 亚洲欧洲成人自拍| 夜夜嗨av一区二区三区中文字幕| 狠狠网亚洲精品| 777a∨成人精品桃花网| 欧美本精品男人aⅴ天堂| 亚洲午夜免费福利视频| 日本强好片久久久久久aaa| 色婷婷av一区二区三区之一色屋| 久久久久久久精| 美女在线一区二区| 欧美一二三四区在线| 久久伊人蜜桃av一区二区| 日韩av在线发布| 欧美日本一区二区三区四区| 一区二区三区国产豹纹内裤在线| 波多野结衣中文字幕一区| 欧美极品少妇xxxxⅹ高跟鞋 | 成人免费在线视频观看| 国产精品一区二区在线观看网站 | 最新不卡av在线| 国产白丝网站精品污在线入口| 99久久亚洲一区二区三区青草| 久久婷婷成人综合色| 精品一区二区久久| 色综合天天综合在线视频| 国产精品久久久久影院| 99视频一区二区| ...av二区三区久久精品| 91毛片在线观看| 欧美成人精品二区三区99精品| 日本视频中文字幕一区二区三区| 成人午夜精品一区二区三区| 久久久精品天堂| 成人高清免费观看| 欧美一级理论性理论a| 国产精品久线观看视频| 97久久精品人人澡人人爽| 亚洲欧美激情插| 国内外成人在线| 欧美三区免费完整视频在线观看| 亚洲宅男天堂在线观看无病毒| 激情五月播播久久久精品| 国产色爱av资源综合区| 日本中文字幕一区| 精品少妇一区二区三区视频免付费| 亚洲欧洲精品成人久久奇米网| 看片网站欧美日韩| 久久九九99视频| 97精品视频在线观看自产线路二| 一区二区三区在线视频免费| 国产九色精品成人porny| 中文字幕 久热精品 视频在线| 91在线高清观看| 久久久久久久久久久电影| 91丨porny丨户外露出|