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

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

?? icontact.cpp

?? This code is Address book code for Windows Mobile. This source code support windows mobile 5.0 over.
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
            + (GroupHeight * h);

        for (g = 0; g < nKeyboardCols; g++) {
            x = rKeyboard.left + (GroupWidth / 2) + (GroupWidth * g);

            if (i < nKeyboardLetters) {
                ExtTextOut(hdc, x, y, NULL, NULL, &alphabet[i++], 1, 0);
            }
		}
	}
}

void DrawHeaderOn(HDC hdc, ScreenType st, RECT rHeader, HDC hdcSkin) {

    // The background of the header bar
    StretchBlt(hdc, rHeader.left, rHeader.top, 
        rHeader.right - rHeader.left, rHeader.bottom - rHeader.top,
        hdcSkin, 0, SKIN_HEADER_Y_OFFSET, 1, SKIN_HEADER_HEIGHT, SRCCOPY);

    if (!bTransitioning) {
        // The "back" button
        if (st == stDetails) {
            StretchBlt(hdc, rHeader.left, rHeader.top, 
                MenuBarIconWidth, HeaderHeight,
                hdcSkin, 0, SKIN_HEADER_Y_OFFSET, 
                SKIN_MENU_BAR_ICON_WIDTH, SKIN_HEADER_HEIGHT,
                SRCCOPY);
        }

        // The "+" to add a contact
        if (st == stList && pListData != NULL && pListData->CanAdd()) {
            StretchBlt(hdc, 
                rHeader.right - MenuBarIconWidth, rHeader.top,
                MenuBarIconWidth, HeaderHeight,
                hdcSkin, 
                SKIN_MENU_BAR_ICON_WIDTH * 4, SKIN_HEADER_Y_OFFSET, 
                SKIN_MENU_BAR_ICON_WIDTH, SKIN_HEADER_HEIGHT,
                SRCCOPY);
        }

        // The "favorite YES" icon
        if (st == stDetails && pListData->CanFavorite()) {
            Data dItem = pListData->GetCurrentItem();
            if (dItem.isFavorite) {
                StretchBlt(hdc, 
                    rHeader.right - MenuBarIconWidth, rHeader.top, 
                    MenuBarIconWidth, HeaderHeight,
                    hdcSkin, 
                    SKIN_MENU_BAR_ICON_WIDTH * 3, SKIN_HEADER_Y_OFFSET, 
                    SKIN_MENU_BAR_ICON_WIDTH, SKIN_HEADER_HEIGHT,
                    SRCCOPY);
            }

            // The "favorite NO" icon
            else {
                StretchBlt(hdc, 
                    rHeader.right - MenuBarIconWidth, rHeader.top, 
                    MenuBarIconWidth, HeaderHeight,
                    hdcSkin, 
                    SKIN_MENU_BAR_ICON_WIDTH * 2, SKIN_HEADER_Y_OFFSET, 
                    SKIN_MENU_BAR_ICON_WIDTH, SKIN_HEADER_HEIGHT,
                    SRCCOPY);
            }
        }
    }

    // The title
    SelectObject(hdc, PrimaryListFont);
    SetBkMode(hdc, TRANSPARENT);
    SetTextAlign(hdc, TA_LEFT);

    SetTextColor(hdc, 
        NULL == pListData
        ? pSettings->rgbHeaderLoading
        : pSettings->rgbHeader
    );

    if (st == stList) {
        DrawText(hdc, 
            ( nCurrentTab == 0 ? pSettings->favorite_category
            : nCurrentTab == 1 ? pSettings->recents_string
            : pSettings->allcontacts_string),
            -1, &rHeader, DT_CENTER | DT_VCENTER
        );
    }
    else if (st == stDetails) {
        DrawText(hdc, pListData->GetCurrentDetailTitle(),
        -1, &rHeader, DT_CENTER | DT_VCENTER);
    }
}

//-----------------------------------------------------------------------------
// Utility functions
//

void InitSurface(HWND hWnd) {
    HRESULT hr = S_OK;
	HDC hdc;
	hdc = GetDC(hWnd);

    // Update the RECTs for the individual sections
	GetClientRect(hWnd, &rScreen);
    nScreenHeight = rScreen.bottom - rScreen.top;
    int nScreenWidth = rScreen.right - rScreen.left;

    // Title bar, with date, carrier, battery, signal strength, etc.
	rTitlebar = rScreen;
	rTitlebar.bottom = rTitlebar.top + TitlebarHeight;

    // Header, with the "back" button, the "favorite" button, etc.
    rHeader = rScreen;
    rHeader.top = rTitlebar.bottom;
    rHeader.bottom = rHeader.top + HeaderHeight;

    // Menu at the bottom of the screen
	rMenubar = rScreen;
	rMenubar.top = rMenubar.bottom - MenuBarHeight;

    // From the header to the bottom of the screen
    rContent = rScreen;
    rContent.top = rHeader.bottom;

    // Between the header and the menu bar
	rList = rContent;
	rList.bottom = rMenubar.top;
    rListHeight = rList.bottom - rList.top;

    // Calculate how many rows / cols for the keyboard
    double screenRatio = (double)nScreenWidth / nScreenHeight;
    nKeyboardRows = 1;
    nKeyboardCols = 1;
    while (nKeyboardRows * nKeyboardCols < nKeyboardLetters) {
        if (nScreenWidth < nScreenHeight) {
            nKeyboardRows = (int)(++nKeyboardCols / screenRatio);
        }
        else {
            nKeyboardCols = (int)(++nKeyboardRows * screenRatio);
        }
    }
    if (nScreenWidth < nScreenHeight) {
        while ((nKeyboardRows - 1) * nKeyboardCols >= nKeyboardLetters) {
            nKeyboardRows--;
        }
    }
    else {
        while (nKeyboardRows * (nKeyboardCols - 1) >= nKeyboardLetters) {
            nKeyboardCols--;
        }
    }
    GroupWidth = nScreenWidth / nKeyboardCols;
    GroupHeight = nScreenHeight / nKeyboardRows;


    // Initialize the DCs and Bitmaps
    if (hdcMem)
        CBR(DeleteDC(hdcMem));
    hdcMem = CreateCompatibleDC(hdc);
    if (hbmMem)
        CBR(DeleteObject(hbmMem));
	hbmMem = CreateCompatibleBitmap(hdc, nScreenWidth, nScreenHeight);
    SelectObject(hdcMem, hbmMem);

    if (hdcTmp)
        CBR(DeleteDC(hdcTmp));
    hdcTmp = CreateCompatibleDC(hdc);
	if (hbmTmp)
        CBR(DeleteObject(hbmTmp));
	hbmTmp = CreateCompatibleBitmap(hdc, nScreenWidth, nScreenHeight);
    SelectObject(hdcTmp, hbmTmp);

    if (hdcPage1)
        CBR(DeleteDC(hdcPage1));
    hdcPage1 = CreateCompatibleDC(hdc);
    if (hbmPage1)
        CBR(DeleteObject(hbmPage1));
    hbmPage1 = CreateCompatibleBitmap(hdc, nScreenWidth, nScreenHeight);
    SelectObject(hdcPage1, hbmPage1);

    if (hdcPage2)
        CBR(DeleteDC(hdcPage2));
    hdcPage2 = CreateCompatibleDC(hdc);
    if (hbmPage2)
        CBR(DeleteObject(hbmPage2));
    hbmPage2 = CreateCompatibleBitmap(hdc, nScreenWidth, nScreenHeight);
    SelectObject(hdcPage2, hbmPage2);

    // Calculate skin filename
    if (!hbmSkin) {
	    TCHAR szSkinFileName[MAX_PATH];
	    GetModuleFileName(NULL, szSkinFileName, MAX_PATH);
	    TCHAR * pstr = _tcsrchr(szSkinFileName, '\\');
	    if (pstr) *(++pstr) = '\0';
	    StringCchCat(szSkinFileName, MAX_PATH, pSettings->skin_name);
        StringCchCat(szSkinFileName, MAX_PATH, TEXT(".png"));

        hbmSkin = SHLoadImageFile(szSkinFileName);

	    // Load skin
	    hdcSkin = CreateCompatibleDC(hdc);
        SelectObject(hdcSkin, hbmSkin);
    }

    CBR(ReleaseDC(hWnd, hdc));

Error:
    ASSERT(SUCCEEDED(hr));
}

void CalculateHeights() {
	int c = 0;

    TCHAR letter[2];
    TCHAR * pdest;
    int index;

    letter[1] = 0;
    int count = 0;

    if (stScreenType == stDetails) {
        if (NULL != pListData) {
            count = pListData->GetItemDetailCount();
            c = (count - 1) * DefaultItemHeight;
        }
    }
    else {
        if (NULL != pListData)
            count = pListData->GetItemCount();

        nKeyboardLetters = _tcslen(pSettings->alphabet);
        bool bAutoAlphabet = nKeyboardLetters == 0;

        StringCchCopy(alphabet, ALPHABET_MAX_SIZE, pSettings->alphabet);

        for (int i = 0; i < ALPHABET_MAX_SIZE; i++) {
            GroupPosition[i] = -1;
            StartPosition[i] = 0;
        }

        if (count == 0) {
            ListHeight = 0;
            AverageItemHeight = DefaultItemHeight;
            return;
        }

	    for (int i = 0; i < count; i++) {
            StartPosition[i] = c;

            int h = DefaultItemHeight;

            if (pListData->IsItemNewGroup(i) && pListData->GetItem(i).wcGroup) {
                h += DefaultGroupHeight;

                letter[0] = pListData->GetItem(i).wcGroup;

                pdest = wcsstr(pSettings->alphabet, letter);
                index = (int)(pdest - pSettings->alphabet);
                if (index >= 0 && index < ALPHABET_MAX_SIZE) {
                    GroupPosition[index] = c;
                }
                else if (bAutoAlphabet && nKeyboardLetters < ALPHABET_MAX_SIZE) {
                    GroupPosition[nKeyboardLetters] = c;
                    alphabet[nKeyboardLetters] = letter[0];
                    nKeyboardLetters++;
                }
            }

            c += h;
	    }

        if (GroupPosition[0] == -1)
            GroupPosition[0] = 0;

        for (int i = 1; i < ALPHABET_MAX_SIZE; i++) {
            if (GroupPosition[i] == -1)
                GroupPosition[i] = GroupPosition[i-1];
        }

        StartPosition[count] = c;
    }

	ListHeight = c;
    AverageItemHeight = ListHeight / count;
}

int GetPixelToItem(int y) {
    y = min(ListHeight - 1, y);
    y = max(0, y);

    // estimate based on DefaultItemHeight
    int guess = y / AverageItemHeight;
    int max = NULL == pListData ? 0 : pListData->GetItemCount();
    if (guess > max)
        guess = max;

    while (y < StartPosition[guess] && guess > 0) {guess--;}

    while (y >= StartPosition[guess+1] && guess < max) {guess++;}

    return guess;
}

void ScrollBar(int y) {
	bScrolling = true;
	Velocity = 20;
    int maxScrolled = ListHeight <= rListHeight ? 0 : ListHeight - rListHeight;

    // if "Contacts", scroll by chunks of A,B,C,etc.
    if (nCurrentTab == 2) {
        int index = (y - rList.top) * nKeyboardLetters / rListHeight;
        Scrolled = index < 0 ? 0
            : index >= nKeyboardLetters ? maxScrolled
            : GroupPosition[index];
    }

    // otherwise, just do a normal scroll
    else {
        double pct = (double)(y - rList.top) 
            / (double)rListHeight;
	    Scrolled = (int)(maxScrolled * pct);
    }

    Scrolled = min(Scrolled, maxScrolled);
    Scrolled = max(Scrolled, 0);
}

void ScrollTo(HWND hWnd, int position, int duration) {
    int minScrolled = 0;
    int maxScrolled = ListHeight <= rListHeight ? 0 : ListHeight - rListHeight;
    if (position < minScrolled)
        position = minScrolled;
    if (position > maxScrolled)
        position = maxScrolled;

    Scroll_StartPosition = Scrolled;
	Scroll_Change = position - Scroll_StartPosition;
	Scroll_Duration = duration;
	Scroll_StartTime = ::GetTickCount();
	Scroll_TimeCounter = 0;
	SetTimer(hWnd, IDT_TIMER_SCROLL_TO, REFRESH_RATE, NULL);
}

void StartTransition(HWND hWnd, TransitionType tr, int duration) {
    if (tr == ttSlideLeft)
        if (FAILED(pListData->PopulateDetails()))
            return;

    bTransitioning = true;
    nTransitionDuration = duration;
    dTransitionPct = 0.0;
    trTransitionType = tr;
    dwTransitionStart = ::GetTickCount();

    InvalidateRect(hWnd, &rScreen, FALSE);

    if (tr == ttSlideLeft || tr == ttSlideRight) {
        if (tr == ttSlideLeft) {
            ListScrolled = Scrolled;
            Scrolled = 0;
        }
        DrawScreenOn(hdcPage1, stList, hdcTmp, rScreen, ListScrolled);
        DrawScreenOn(hdcPage2, stDetails, hdcTmp, rScreen, Scrolled);
    }
    else if (tr == ttKeyboardExpand || tr == ttKeyboardShrink) {
        DrawScreenOn(hdcPage1, stList, hdcTmp, rScreen, Scrolled);
        DrawKeyboardOn(hdcPage2, rScreen);
    }

	SetTimer(hWnd, IDT_TIMER_TRANSITION, REFRESH_RATE, NULL);
}

void SwitchTab(HWND hWnd, int which) {
    if (pListData) {
        pListData->Release();
        delete pListData;
    }
    stScreenType = stList;
    nCurrentTab = which;
    Scrolled = 0;
    bScrolling = false;
    bDragging = false;
    InvalidateRect(hWnd, &rMenubar, false);
    InvalidateRect(hWnd, &rHeader, false);
    InvalidateRect(hWnd, &rList, false);

    pListData = NULL;
    SetTimer(hWnd, IDT_TIMER_LOADLIST, REFRESH_RATE, NULL);
}

void ParseCommandLine(HWND hWnd, LPTSTR lpCmdLine) {
    const struct CmdLineArg cmdLineArgs[] = {
        TEX

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费版在线| 国产99久久久国产精品潘金| 国产99久久久国产精品免费看 | 成人av网在线| 欧美成人性战久久| 国产美女一区二区三区| 中文字幕日韩精品一区| 欧美日韩一二三| 久久中文娱乐网| 国产精品羞羞答答xxdd| 日韩三级免费观看| 毛片一区二区三区| 国产日韩三级在线| 一本大道久久a久久精二百| 中文字幕亚洲成人| 欧美高清视频不卡网| 免费看日韩精品| 国产精品成人免费在线| 欧美日本一区二区| 国产成人日日夜夜| 日韩 欧美一区二区三区| 欧美日韩一区二区三区视频| 国产黄色成人av| 性欧美疯狂xxxxbbbb| 国产女人aaa级久久久级| 在线中文字幕不卡| 黄色精品一二区| 日韩福利视频导航| 久久久久久夜精品精品免费| 国产精品自拍三区| 精品写真视频在线观看| 麻豆成人综合网| 亚洲地区一二三色| 一区二区三区在线播| 国产精品拍天天在线| 欧美区一区二区三区| 欧美日韩一区国产| 91麻豆精品国产91久久久久久久久 | 日韩精品国产精品| 亚洲美女免费视频| 亚洲自拍欧美精品| 亚洲视频你懂的| 一区二区视频免费在线观看| 国产区在线观看成人精品| 亚洲精品在线免费播放| 久久色.com| 亚洲美女免费在线| 天堂成人免费av电影一区| 奇米色777欧美一区二区| 国产伦精品一区二区三区在线观看| 精品在线免费视频| 99国产精品久| 日韩精品一区国产麻豆| 国产亚洲综合色| 国产精品传媒视频| 日本不卡视频在线观看| 黄页视频在线91| 成人综合婷婷国产精品久久免费| 91丨porny丨最新| 欧美一二区视频| 亚洲日本va在线观看| 国产在线看一区| 久久久综合九色合综国产精品| 99视频精品在线| 不卡的av在线播放| 欧美日韩中文字幕一区二区| 99久久国产免费看| 日韩欧美中文字幕制服| 国产精品女同互慰在线看| 男人操女人的视频在线观看欧美| 成人动漫一区二区在线| 国产亚洲制服色| 日本sm残虐另类| 欧美这里有精品| 国产精品久久久一本精品| 日本不卡视频在线| 日韩一卡二卡三卡国产欧美| 亚洲一区在线视频| 欧美中文字幕一区二区三区亚洲| 国产精品久久久久一区二区三区 | 亚洲成a人v欧美综合天堂下载 | 欧美mv和日韩mv的网站| 久久超碰97人人做人人爱| 91精品国产日韩91久久久久久| 亚洲成人在线免费| 欧美人成免费网站| 免费成人在线观看| 国产午夜精品一区二区三区嫩草| 激情文学综合插| 国产情人综合久久777777| 免费欧美高清视频| 91视频.com| 亚洲福利视频三区| 亚洲国产精品传媒在线观看| 色婷婷综合久久久中文字幕| 日韩高清一级片| 椎名由奈av一区二区三区| 日韩欧美一级二级三级久久久| 成人黄色小视频| 久久99热99| 午夜影院久久久| 亚洲韩国精品一区| 亚洲黄色尤物视频| 国产亚洲人成网站| 精品国产一区二区在线观看| 欧美一区二区三区视频免费| 91香蕉国产在线观看软件| 不卡一区二区三区四区| 国产suv精品一区二区883| 国产剧情一区二区| 国产乱国产乱300精品| 国产一区二区视频在线| 精东粉嫩av免费一区二区三区| 蜜臀va亚洲va欧美va天堂| 久久成人av少妇免费| 精品夜夜嗨av一区二区三区| 国产一区激情在线| 成人三级伦理片| 91成人看片片| 精品成人一区二区| 亚洲精品一卡二卡| 久久国产夜色精品鲁鲁99| 国产一区二区免费看| 国产精品一区三区| 欧美亚洲国产一卡| 欧美白人最猛性xxxxx69交| 国产亚洲人成网站| 亚洲成人av一区二区| 九九九久久久精品| 精品视频免费看| 久久久久国产一区二区三区四区| 中文字幕一区二区在线观看| 亚洲午夜久久久久久久久电影院 | 亚洲精品免费播放| 国产酒店精品激情| 在线观看91av| 日韩国产高清在线| 91年精品国产| 欧美v日韩v国产v| 一区二区国产盗摄色噜噜| 国产麻豆日韩欧美久久| 欧美日韩卡一卡二| 136国产福利精品导航| 久久99久久99小草精品免视看| 97se亚洲国产综合自在线不卡| 欧美xxxx老人做受| 天堂影院一区二区| 欧美人妖巨大在线| 午夜精品一区二区三区免费视频 | 成人午夜在线免费| 久久午夜电影网| 国产一区在线观看视频| 日韩欧美123| 久久爱另类一区二区小说| 欧美一级日韩不卡播放免费| 午夜伦理一区二区| 欧美一区二区日韩| 国产在线国偷精品产拍免费yy| 欧美性三三影院| 五月天激情小说综合| 日韩欧美二区三区| 成人晚上爱看视频| 一区二区三区国产精品| 欧美精品在线一区二区三区| 日韩综合小视频| 久久久久高清精品| 97精品国产露脸对白| 日产欧产美韩系列久久99| 精品91自产拍在线观看一区| 国产一区二区在线影院| 亚洲丝袜制服诱惑| 日韩欧美亚洲一区二区| 成人免费看视频| 午夜激情一区二区三区| 亚洲国产精品激情在线观看| 在线日韩一区二区| 国产精品一二三四区| 亚洲国产日韩综合久久精品| 国产欧美日韩精品一区| 欧美精选午夜久久久乱码6080| 成人影视亚洲图片在线| 麻豆成人在线观看| 日韩av二区在线播放| 亚洲色图丝袜美腿| 国产精品素人视频| 久久先锋影音av鲁色资源| 欧美精品在线观看播放| 色哟哟一区二区在线观看 | 国产一区二区美女| 麻豆精品在线视频| 五月综合激情婷婷六月色窝| 777色狠狠一区二区三区| 欧美性感一区二区三区| 91丝袜国产在线播放| 一区二区三区日韩精品视频| 日韩欧美国产一区在线观看| 色婷婷国产精品| 欧美色爱综合网| 欧美浪妇xxxx高跟鞋交| 在线视频国内自拍亚洲视频|