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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? icontact.cpp

?? windows mobile 下的聯(lián)系人管理工具。類是iphone的滑動(dòng)聯(lián)系人功能
?? CPP
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
            SelectObject(hdc, PrimaryListFont);
            SetTextAlign(hdc, TA_CENTER);

            ExtTextOut(hdc, (rRow.right - rRow.left) / 2 + rRow.left,
                (rRow.bottom - rRow.top - ITEM_FONT_SIZE) / 2 + rRow.top,
                ETO_CLIPPED, &rClip, dd.text,
                _tcslen(dd.text), 0);

        }

        else if (dd.type == diEmail
                || dd.type == diUrl) {
            SelectObject(hdc, PrimaryListFont);
            SetTextAlign(hdc, TA_CENTER);

            ExtTextOut(hdc, (rRow.right - rRow.left) / 2 + rRow.left,
                (rRow.bottom - rRow.top - ITEM_FONT_SIZE) / 2 + rRow.top,
                ETO_CLIPPED, &rClip, dd.text, _tcslen(dd.text), 0);
        }

        else {
		    SelectObject(hdc, ItemDetailsFont);
            SetTextAlign(hdc, TA_RIGHT | TA_BOTTOM);
            int y = (rRow.bottom - rRow.top) / 2 + rRow.top;

            rClip.right = rRow.left + 49;
            ExtTextOut(hdc, rRow.left + 49, 
                y + (ITEM_DETAILS_FONT_SIZE / 2),
                ETO_CLIPPED, &rClip, dd.label, _tcslen(dd.label), NULL);

            rClip.left = rClip.right + 3;
            rClip.right = rRow.right - padding;

            if (dd.type == diPhone) {
                rClip.right -= 28;
                ExtTextOut(hdc, rRow.right - 12, 
                    y + (ITEM_DETAILS_FONT_SIZE / 2),
                    NULL, NULL, pSettings->sms_string, 
                    _tcslen(pSettings->sms_string), NULL);
            }

            SetTextAlign(hdc, TA_LEFT | TA_BOTTOM);
            SelectObject(hdc, PrimaryListFont);

		    ExtTextOut(hdc, rRow.left + 52, y + (ITEM_FONT_SIZE / 2),
                ETO_CLIPPED, &rClip, dd.text, _tcslen(dd.text), NULL);
        }
	}
}

void DrawKeyboardOn(HDC hdc, RECT rKeyboard) {
	SelectObject(hdc, KeyboardFont);
	SelectObject(hdc, pSettings->hpenKeyboardGrid);
    SetTextColor(hdc, pSettings->rgbKeyboardText);
	SetBkMode(hdc, TRANSPARENT);
    int x, y, g, h;

    FillRect(hdc, &rKeyboard, pSettings->hbrKeyboardBackground);

    SetTextAlign(hdc, TA_CENTER);

    // Draw the horizontal lines
    for (h = 0; h < nKeyboardRows; h++) {
        y = rKeyboard.top + h 
            * (rKeyboard.bottom - rKeyboard.top) / nKeyboardRows;
        MoveToEx(hdc, rKeyboard.left, y, (LPPOINT) NULL);
        LineTo(hdc, rKeyboard.right, y);
    }
    MoveToEx(hdc, rKeyboard.left, rKeyboard.bottom - 1, (LPPOINT) NULL);
    LineTo(hdc, rKeyboard.right, rKeyboard.bottom - 1);

    // Draw the vertical lines
    for (g = 0; g < nKeyboardCols; g++) {
        x = rKeyboard.left + g 
            * (rKeyboard.right - rKeyboard.left) / nKeyboardCols;
        MoveToEx(hdc, x, rKeyboard.top, (LPPOINT) NULL);
        LineTo(hdc, x, rKeyboard.bottom);
    }
    MoveToEx(hdc, rKeyboard.right - 1, rKeyboard.top, (LPPOINT) NULL);
    LineTo(hdc, rKeyboard.right - 1, rKeyboard.bottom);

    // Draw the letters
    int i = 0;
	for (h = 0; h <= nKeyboardRows; h++) {
        y = rKeyboard.top 
            + ((GroupHeight - KEYBOARD_FONT_SIZE) / 2) 
            + (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, HEADER_Y_OFFSET, 1, HEADER_HEIGHT, SRCCOPY);

    if (!bTransitioning) {
        // The "back" button
        if (st == stDetails) {
            BitBlt(hdc, rHeader.left, rHeader.top, rHeader.left + 26, 
                rHeader.bottom - rHeader.top,
                hdcSkin, 0, HEADER_Y_OFFSET, SRCCOPY);
        }

        // The "+" to add a contact
        if (st == stList && pListData != NULL && pListData->CanAdd()) {
            BitBlt(hdc, rHeader.right - 40, rHeader.top, 40, 
                rHeader.bottom - rHeader.top,
                hdcSkin, 192, HEADER_Y_OFFSET, SRCCOPY);
        }

        // The "favorite YES" icon
        if (st == stDetails && pListData->CanFavorite()) {
            Data dItem = pListData->GetCurrentItem();
            if (dItem.isFavorite) {
                BitBlt(hdc, rHeader.right - 40, rHeader.top, 40, 
                    rHeader.bottom - rHeader.top,
                    hdcSkin, 144, HEADER_Y_OFFSET, SRCCOPY);
            }

            // The "favorite NO" icon
            else {
                BitBlt(hdc, rHeader.right - 40, rHeader.top, 40, 
                    rHeader.bottom - rHeader.top,
                    hdcSkin, 96, HEADER_Y_OFFSET, SRCCOPY);
            }
        }
    }

    // The title
    SelectObject(hdc, PrimaryListFont);
    SetBkMode(hdc, TRANSPARENT);
    SetTextAlign(hdc, TA_LEFT);
    if (NULL == pListData)
        SetTextColor(hdc, RGB(127, 127, 127));
    else
        SetTextColor(hdc, RGB(255, 255, 255));
    DrawText(hdc, 
        ( nCurrentTab == 0 ? pSettings->favorite_category
        : nCurrentTab == 1 ? pSettings->recents_string
        : st == stList ?     pSettings->allcontacts_string
        :                    pSettings->details_string
        ),
        -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 + TITLE_BAR_HEIGHT;

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

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

    // 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) * DEFAULT_ITEM_HEIGHT;
        }
    }
    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 = DEFAULT_ITEM_HEIGHT;
            return;
        }

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

            int h = DEFAULT_ITEM_HEIGHT;

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

                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 DEFAULT_ITEM_HEIGHT
    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();

    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);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区久久| 亚洲国产精华液网站w| 国产成人一级电影| 一区二区三区四区不卡在线| 日韩欧美高清dvd碟片| 99久久综合精品| 精品伊人久久久久7777人| 亚洲同性gay激情无套| 日韩欧美国产一二三区| 日本二三区不卡| 国产成人在线电影| 久久精品国产网站| 亚洲成av人片www| 综合激情网...| 国产午夜精品一区二区三区嫩草 | 亚洲欧美另类久久久精品2019 | 国产精品天美传媒| 日韩欧美国产小视频| 在线观看国产一区二区| 成人av网站大全| 一区二区三区电影在线播| 欧美国产日韩亚洲一区| 欧美大黄免费观看| 91精品国产综合久久久蜜臀粉嫩| 99综合影院在线| 高清shemale亚洲人妖| 精品一区二区三区免费观看| 亚洲aaa精品| 亚洲国产精品久久一线不卡| 国产精品成人一区二区三区夜夜夜| 精品美女一区二区| 91精品国产综合久久福利软件| 色婷婷综合久久久中文字幕| 成人黄色免费短视频| 国产精品69毛片高清亚洲| 国内一区二区在线| 久久av资源站| 国内精品伊人久久久久av影院 | 国内精品久久久久影院薰衣草| 日本免费在线视频不卡一不卡二| 午夜一区二区三区视频| 亚洲国产精品欧美一二99| 亚洲国产精品一区二区www| 亚洲午夜激情网站| 亚洲h动漫在线| 日本视频一区二区| 久久国产精品72免费观看| 久久不见久久见免费视频1| 精品制服美女丁香| 国产精品77777| 99久久国产综合精品女不卡| 99精品久久久久久| 欧美亚洲动漫精品| 91精品中文字幕一区二区三区| 欧美猛男gaygay网站| 制服丝袜激情欧洲亚洲| 日韩丝袜情趣美女图片| 精品国产一区二区三区不卡| 久久综合九色欧美综合狠狠| 国产偷v国产偷v亚洲高清| 亚洲视频一二区| 亚洲成人tv网| 久草精品在线观看| 风流少妇一区二区| 色综合av在线| 欧美一级在线视频| 国产日韩欧美精品电影三级在线| 1024精品合集| 午夜精品爽啪视频| 国产精品亚洲综合一区在线观看| 国产老肥熟一区二区三区| 99久久精品免费看| 日韩视频在线永久播放| 国产精品久久毛片av大全日韩| 亚洲视频一区二区免费在线观看| 五月婷婷综合激情| 国产成人在线视频网址| 一本久道久久综合中文字幕| 欧美日韩一区二区三区免费看| 精品国产一区二区三区不卡| 亚洲婷婷综合色高清在线| 日本成人在线一区| 99久久精品免费看| 精品少妇一区二区三区免费观看| 国产精品麻豆一区二区| 日韩精品色哟哟| 成人app网站| 欧美精品tushy高清| 国产三级精品三级| 日韩国产精品大片| av资源网一区| 欧美成人一区二区| 亚洲国产日韩在线一区模特| 国产成人在线观看免费网站| 欧美高清dvd| 中文字幕一区二区三区乱码在线| 日本免费新一区视频| 91麻豆文化传媒在线观看| 精品噜噜噜噜久久久久久久久试看 | 亚洲日本护士毛茸茸| 美女脱光内衣内裤视频久久网站| 99re这里都是精品| 久久久久久综合| 日日夜夜免费精品视频| 91在线视频播放| 久久久久国产免费免费| 日日夜夜精品免费视频| 色综合天天综合网国产成人综合天| 精品黑人一区二区三区久久| 亚洲国产精品自拍| 在线一区二区观看| 国产精品毛片无遮挡高清| 精品一区二区在线视频| 欧美日韩国产高清一区二区三区 | 国产欧美一区二区精品性 | 国产成人精品影视| 欧美xxxxxxxx| 秋霞影院一区二区| 欧美日韩国产大片| 国产午夜精品一区二区三区四区| 日韩avvvv在线播放| 欧美网站一区二区| 一区二区三区四区在线播放 | 日韩一级二级三级精品视频| 亚洲成人综合网站| 色欧美日韩亚洲| 最好看的中文字幕久久| 成人深夜视频在线观看| 亚洲国产激情av| 国产福利91精品一区二区三区| 精品理论电影在线| 久久国产精品色| 久久午夜老司机| 欧美体内she精高潮| 亚洲欧美日韩国产综合| 成人avav影音| 亚洲人成人一区二区在线观看| 成人蜜臀av电影| 国产精品久久久久久久久免费桃花 | 久久久国际精品| 国产精品自拍三区| 国产亚洲精品bt天堂精选| 国产盗摄视频一区二区三区| 国产欧美一区二区精品秋霞影院| 国精品**一区二区三区在线蜜桃| 日韩一级免费一区| 国内外成人在线| 久久精品欧美日韩精品| 成人国产精品免费网站| 亚洲人成小说网站色在线| 欧洲激情一区二区| 日韩精品一二三四| 26uuu欧美| 成人免费视频网站在线观看| 日韩美女精品在线| 欧美日韩一区视频| 日韩av在线发布| 久久夜色精品一区| 99久久久久久99| 香蕉久久夜色精品国产使用方法| 欧美一级片在线观看| 国产麻豆精品一区二区| 国产精品视频一区二区三区不卡| 99久久综合国产精品| 亚洲成人激情综合网| 精品国产伦理网| av在线不卡观看免费观看| 亚洲一区二区在线免费观看视频| 欧美日韩国产bt| 国产综合色视频| 中文字幕一区不卡| 91精品在线免费观看| 国产乱子伦视频一区二区三区 | 亚洲天堂a在线| 51久久夜色精品国产麻豆| 日韩av电影天堂| 国产精品一二三在| 伊人性伊人情综合网| 51午夜精品国产| 99久久免费精品高清特色大片| 亚欧色一区w666天堂| 久久久九九九九| 在线精品视频免费播放| 韩国女主播成人在线| 亚洲激情在线激情| 精品国产免费一区二区三区四区 | 一本色道久久综合狠狠躁的推荐| 麻豆精品国产传媒mv男同| 国产精品卡一卡二| 欧美一区欧美二区| 成人理论电影网| 久久精品国产亚洲一区二区三区 | 亚洲色图制服诱惑 | 视频一区国产视频| 亚洲欧洲美洲综合色网| 精品日韩一区二区三区| 91国偷自产一区二区使用方法| 久久av资源网| 日韩中文字幕区一区有砖一区| 国产精品区一区二区三区|