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

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

?? listdatapoom.cpp

?? windows mobile 下的聯系人管理工具。類是iphone的滑動聯系人功能
?? CPP
字號:
#include "stdafx.h"
#include <initguid.h>

#include "GraphicFunctions.h"
#include "ListDataPoom.h"


ListDataPoom::ListDataPoom(Settings * pSettings) {
    this->_construct(pSettings, false);
    this->_canFavorite = true;
    this->_canAdd = true;
}

ListDataPoom::ListDataPoom(Settings * pSettings, bool bOnlyFavorites) {
    this->_construct(pSettings, bOnlyFavorites);
    this->_canFavorite = false;
    this->_canAdd = false;
}

void ListDataPoom::_construct(Settings * pSettings, bool bOnlyFavorites) {
    HRESULT hr;

    this->polApp = NULL;
    this->pCurrFldr = NULL;
    this->pItemCol = NULL;

    this->_settings = pSettings;
	this->_bOnlyFavorites = bOnlyFavorites;

    TCHAR buffer[32];

    hr = this->_initPoom();
    CHR(hr);

    // Get the contacts folder.
    hr = this->polApp->GetDefaultFolder(olFolderContacts, &this->pCurrFldr);
    CHR(hr);

    // Get the contacts Items collection.
    hr = this->pCurrFldr->get_Items(&this->pItemCol);
    CHR(hr);

    if (this->_bOnlyFavorites) {
        // Restrict the collection to Contacts in our favorite category
        StringCchPrintf(buffer, 32, TEXT("[%s] = \"%s\""), 
            pSettings->categories_field,
            pSettings->favorite_category);
        hr = this->pItemCol->Restrict((BSTR)buffer, &this->pItemCol);
        CHR(hr);
    }

    this->Populate();

Error:
    if (FAILED(hr)) {
        RELEASE_OBJ(this->pCurrFldr);
        RELEASE_OBJ(this->pItemCol);
    }
}

void ListDataPoom::Release(void) {
    RELEASE_OBJ(this->pCurrFldr);
    RELEASE_OBJ(this->pItemCol);
    RELEASE_OBJ(this->polApp);
    if (this->_hBitmap)
        DeleteObject((HGDIOBJ)this->_hBitmap);
    this->_hBitmap = NULL;

}

HRESULT ListDataPoom::Populate() {
	BSTR bstrFileAs = NULL;
	LONG lOid;
	TCHAR wcContactInfo[PRIMARY_TEXT_LENGTH];
    TCHAR wcGroup;

	// grpBuf is the "Group" or first letter of the name 
	// that this contact belongs to
    TCHAR grpBuf[1] = {0};

	IContact * pContact = NULL;
	int cItems = 0;
	bool bOnlyFavorites = this->_bOnlyFavorites;

	this->pItemCol->get_Count(&cItems);

    this->_arrayLength = cItems;

    this->_items = new Data[this->_arrayLength];

	for (int i = 1; i <= cItems; i++) {
        if (FAILED(this->pItemCol->Item(i, (IDispatch**) &pContact)))
            continue;

	    // grab properties
	    pContact->get_FileAs(&bstrFileAs);
	    pContact->get_Oid(&lOid);

	    StringCchCopy(wcContactInfo, PRIMARY_TEXT_LENGTH, bstrFileAs);

	    // Don't display groups if showing favorites
		wcGroup = bOnlyFavorites ? 0 : _totupper(wcContactInfo[0]);

		this->_addListItem(i, wcContactInfo, TEXT(""), wcGroup, lOid);

		// clean up
	    SysFreeString(bstrFileAs);
		RELEASE_OBJ(pContact);
    }

    return S_OK;
}

HRESULT ListDataPoom::PopulateDetailsFor(int index) {
    HRESULT hr;
    
    if (NULL != this->_hBitmap)
        DeleteObject((HGDIOBJ)this->_hBitmap);

    this->_hBitmap = NULL;
    IContact * pContact = NULL;
    BSTR buffer = NULL;
    BSTR bstrCategories = NULL;
	this->_itemDetailCount = 0;
    this->_currentItemIndex = index;
    int id = this->_items[index].ID;
    CEOID oid = this->_items[index].oId;
    TCHAR * szName = this->_items[index].szPrimaryText;

    // GET CURRENT CONTACT
    hr = this->polApp->GetItemFromOid(oid, (IDispatch**)&pContact);
    CHR(hr);

    // Determine for reals if this is a favorite 
    // (it doesn't get initialized until here)
    hr = pContact->get_Categories(&bstrCategories);
    CHR(hr);

    this->_items[index].isFavorite = NULL != _tcsstr(bstrCategories, 
        this->_settings->favorite_category);
    SysFreeString(bstrCategories);

    // Load the bitmap for this contact
    this->_nBitmapWidth = this->_nBitmapHeight = 64;
    this->_loadBitmap();

    //***** GET CONTACT DETAILS *****//
    
    // NAME
    this->_addDetail(diName, szName);

    // COMPANY NAME
    pContact->get_CompanyName(&buffer);
    if (SysStringLen(buffer) > 0)
        this->_addDetail(diCompany, buffer);
    else if (NULL != this->_hBitmap)
        this->_addDetail(diNothing, NULL);
    SysFreeString(buffer);

    
    
    // Phone numbers

    // MOBILE TELEPHONE NUMBER
    pContact->get_MobileTelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->mobile_string);
    SysFreeString(buffer);

    // HOME TELEPHONE NUMBER 1
    pContact->get_HomeTelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->home_string);
    SysFreeString(buffer);

    // HOME TELEPHONE NUMBER 2
    pContact->get_Home2TelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->home_string);
    SysFreeString(buffer);

    // Home Fax Number
    pContact->get_HomeFaxNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->fax_string);
    SysFreeString(buffer);
	
    // BUSINESS TELEPHONE NUMBER 1
    pContact->get_BusinessTelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->work_string);
    SysFreeString(buffer);
	
    // BUSINESS TELEPHONE NUMBER 2
    pContact->get_Business2TelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->work_string);
    SysFreeString(buffer);

    // Business Fax Number
    pContact->get_BusinessFaxNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->fax_string);
    SysFreeString(buffer);

    // TODO: Company phone number... not a standard property!

    // Car Telephone Number
    pContact->get_CarTelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->car_string);
    SysFreeString(buffer);

    // Pager Number
    pContact->get_PagerNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->pager_string);
    SysFreeString(buffer);

    // Radio Telephone
    pContact->get_RadioTelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->radio_string);
    SysFreeString(buffer);

    // Assistant Telephone Number
    pContact->get_AssistantTelephoneNumber(&buffer);
    this->_addDetail(diPhone, buffer, this->_settings->assistant_string);
    SysFreeString(buffer);


    // "EMAIL" Category

    // EMAIL ADDRESS 1
    pContact->get_Email1Address(&buffer);
    this->_addDetail(diEmail, buffer);
    SysFreeString(buffer);
	
    // EMAIL ADDRESS 2
    pContact->get_Email2Address(&buffer);
    this->_addDetail(diEmail, buffer);
    SysFreeString(buffer);
	
    // EMAIL ADDRESS 3
    pContact->get_Email3Address(&buffer);
    this->_addDetail(diEmail, buffer);
    SysFreeString(buffer);


    // URL
    pContact->get_WebPage(&buffer);
    this->_addDetail(diUrl, buffer);
    SysFreeString(buffer);


    // Button to show details
    this->_addDetail(diDetailsButton, this->_settings->showsummary_string);

    // Button to edit contact
    this->_addDetail(diEditButton, this->_settings->editcontact_string);

    hr = S_OK;

Error:
    // cleanup
    if (NULL != bstrCategories)
        SysFreeString(bstrCategories);
    if (NULL != buffer)
        SysFreeString(buffer);
    RELEASE_OBJ(pContact);

    return hr;
}

void ListDataPoom::ToggleFavorite() {
    IDispatch * pDisp = NULL;
    IItem * pItem = NULL;
    HRESULT hr = S_OK;
    int index = this->_currentItemIndex;

    int oid = this->_items[index].oId;
    if (oid == -1)
        return;

    hr = this->_initPoom();
    CHR(hr);

    hr = this->polApp->GetItemFromOid(oid, &pDisp);
    CHR(hr);

    hr = pDisp->QueryInterface(IID_IItem, (LPVOID*)&pItem);
    CHR(hr);

    // update the categories in the POOM
    hr = (this->_items[index].isFavorite)
        ? pItem->RemoveCategory(this->_settings->favorite_category)
        : pItem->AddCategory(this->_settings->favorite_category);
    CHR(hr);

    // category update succeeded
    this->_items[index].isFavorite = !this->_items[index].isFavorite;
    pItem->Save();

Error:
    RELEASE_OBJ(pItem);
    RELEASE_OBJ(pDisp);
}

void ListDataPoom::AddItem() {
    HRESULT hr = S_OK;
    IContact * pContact = NULL;

    hr = this->polApp->CreateItem(olContactItem, (IDispatch**)&pContact);
    CHR(hr);

    hr = pContact->Display();

Error:
    // cleanup
    RELEASE_OBJ(pContact);

    return;
}

void ListDataPoom::DisplayItem() {
    IDispatch * pDisp = NULL;
    IItem * pItem = NULL;
    HRESULT hr = S_OK;
    int index = this->_currentItemIndex;

    int oid = this->_items[index].oId;
    if (oid == -1)
        return;

    hr = this->_initPoom();
    CHR(hr);

    hr = this->polApp->GetItemFromOid(oid, &pDisp);
    CHR(hr);

    hr = pDisp->QueryInterface(IID_IItem, (LPVOID*)&pItem);
    CHR(hr);

	hr = pItem->Display(NULL);

Error:
	RELEASE_OBJ(pItem);
    RELEASE_OBJ(pDisp);
}

void ListDataPoom::EditItem() {
    IDispatch * pDisp = NULL;
    IItem * pItem = NULL;
    HRESULT hr = S_OK;

    int oid = this->_items[this->_currentItemIndex].oId;
    if (oid == -1)
        return;

    hr = this->_initPoom();
    CHR(hr);

    hr = this->polApp->GetItemFromOid(oid, &pDisp);
    CHR(hr);

    hr = pDisp->QueryInterface(IID_IItem, (LPVOID*)&pItem);
    CHR(hr);

	hr = pItem->Edit(NULL);

Error:
	RELEASE_OBJ(pItem);
    RELEASE_OBJ(pDisp);
}

HRESULT ListDataPoom::_initPoom() {
    HRESULT hr;

    if (this->polApp == NULL) {
        hr = CoCreateInstance(__uuidof(Application), NULL, CLSCTX_INPROC_SERVER,
                              __uuidof(IPOutlookApp2), (LPVOID*) &this->polApp);
        CHR(hr);

        hr = this->polApp->Logon(NULL);
        CHR(hr);
    }

    hr = S_OK;

Error:
    if (FAILED(hr)) {
        // If we failed to log on, don't keep the object around
        RELEASE_OBJ(this->polApp);
    }
    return hr;
}

// **************************************************************************
// Function Name: _loadBitmap
// 
// Purpose: given a list index, finds an associated bitmap 
// and its dimensions
//
// Arguments:
//    IN  int      index    - index of the contact
//    IN  HBITMAP* phBitmap - bitmap of the contact's picture
//    OUT UINT*    puWidth  - width of the bitmap
//    OUT UINT*    puHeight - height of the bitmap
//
// Return Values:
//    HRESULT - S_OK if success, failure code if not
//

HRESULT ListDataPoom::_loadBitmap() {
    UINT*     puWidth = &this->_nBitmapWidth;
    UINT*     puHeight = &this->_nBitmapHeight;
    HBITMAP*  phBitmap = &this->_hBitmap;
    int       index = this->_currentItemIndex;
    CEOID     oid = this->_items[index].oId;
    HRESULT   hr;
    IItem*    pItem = NULL;
    IStream*  pStream = NULL;
    ULONG     ulSize;

    // Make sure we can access POOM
    //hr = EnsurePOOM();
    //CHR(hr);

    hr = this->polApp->GetItemFromOidEx(oid, 0, &pItem);
    CHR(hr);
    
    // Extract the picture from the contact
    hr = pItem->OpenProperty(PIMPR_PICTURE, GENERIC_READ, &pStream);
    CHR(hr);
    
    hr = GetStreamSize(pStream, &ulSize);
    CHR(hr);

    // In some cases, the property may exist even if there is no picture.
    // Make sure we can access the stream and don't have a 0 byte stream
    CBR(ulSize > 0);

    hr = GetBitmapFromStream(pStream, phBitmap, puWidth, puHeight);
    CHR(hr);

Error:
    RELEASE_OBJ(pItem);
    RELEASE_OBJ(pStream);

    return hr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人性网站| 免费观看一级欧美片| 日韩视频不卡中文| 不卡欧美aaaaa| 美女mm1313爽爽久久久蜜臀| 中文字幕在线一区免费| 欧美日韩国产a| 成人短视频下载| 日韩中文字幕av电影| 国产精品久久久久影院老司| 91精品国产综合久久国产大片 | 国产成人aaa| 天天综合网 天天综合色| 国产精品第四页| 亚洲精品在线一区二区| 69堂国产成人免费视频| av中文字幕不卡| 韩国女主播成人在线| 亚洲123区在线观看| 国产精品视频一二三区| 日韩精品一区二区三区视频在线观看| 欧美在线观看视频一区二区三区 | 成人av网址在线观看| 毛片基地黄久久久久久天堂| 亚洲一区在线电影| 亚洲三级在线看| 中文字幕第一区综合| 国产色综合久久| 337p粉嫩大胆色噜噜噜噜亚洲 | 日本伊人色综合网| 亚洲一区电影777| 亚洲精品高清在线观看| 国产精品久久影院| 亚洲欧洲三级电影| 国产精品久久久久久妇女6080 | 日韩高清不卡一区二区三区| 亚洲国产精品麻豆| 亚洲一二三四久久| 亚洲一区二区三区在线看| 亚洲视频你懂的| 亚洲激情图片qvod| 亚洲女厕所小便bbb| 亚洲欧美激情在线| 亚洲夂夂婷婷色拍ww47| 一区二区三区蜜桃网| 亚洲午夜免费视频| 天堂在线亚洲视频| 蜜桃视频免费观看一区| 久久99精品国产麻豆不卡| 麻豆一区二区三| 国产在线不卡一区| 成人一区二区视频| 色综合天天综合给合国产| 91福利国产成人精品照片| 色就色 综合激情| 欧美日韩精品欧美日韩精品一| 欧美狂野另类xxxxoooo| 91精品国产欧美一区二区| 日韩你懂的电影在线观看| www激情久久| 国产精品乱人伦| 亚洲高清在线精品| 美女国产一区二区三区| 国产精品一区二区久久不卡| 丁香婷婷综合激情五月色| 日本韩国一区二区三区视频| 欧美日韩第一区日日骚| 精品国产凹凸成av人网站| 国产精品素人视频| 夜夜精品视频一区二区| 欧美午夜精品一区二区蜜桃| 欧美疯狂做受xxxx富婆| 国产香蕉久久精品综合网| 亚洲欧美日韩国产中文在线| 视频在线观看91| 国产福利一区在线| 欧美亚洲国产bt| 久久综合给合久久狠狠狠97色69| 国产精品三级视频| 亚欧色一区w666天堂| 国产一区二区三区免费播放| 91亚洲永久精品| 日韩亚洲欧美成人一区| 国产精品免费av| 美腿丝袜一区二区三区| 成+人+亚洲+综合天堂| 欧美日韩视频第一区| 久久久久久免费| 亚洲五码中文字幕| 成人综合日日夜夜| 777奇米四色成人影色区| 欧美高清在线一区| 天天综合日日夜夜精品| 成人久久久精品乱码一区二区三区| 欧美亚洲国产一区二区三区 | 成人在线综合网站| 91精品国产91久久久久久一区二区 | 欧美三级电影网站| 91色九色蝌蚪| 91国偷自产一区二区使用方法| 欧美大片免费久久精品三p| 亚洲美女电影在线| 国产在线播精品第三| 欧美日韩在线亚洲一区蜜芽| 国产精品视频一区二区三区不卡| 日产国产高清一区二区三区| 91国偷自产一区二区三区成为亚洲经典| 久久蜜桃一区二区| 日韩主播视频在线| 欧美性猛交xxxx黑人交| 国产精品卡一卡二| 国产成人午夜高潮毛片| 日韩你懂的在线观看| 婷婷中文字幕一区三区| 一本色道久久综合精品竹菊| 国产日韩精品一区二区浪潮av| 麻豆国产91在线播放| 欧美精品久久久久久久久老牛影院 | 久久精品国产亚洲一区二区三区| 91看片淫黄大片一级在线观看| 2023国产精华国产精品| 日本三级韩国三级欧美三级| 欧美性受极品xxxx喷水| 中文字幕一区av| 成人福利电影精品一区二区在线观看| 久久久不卡网国产精品一区| 美国欧美日韩国产在线播放| 日韩一区二区三区四区五区六区| 亚洲成人精品影院| 欧美三级韩国三级日本三斤| 一区二区三区国产豹纹内裤在线| 97国产一区二区| ...av二区三区久久精品| 成人性生交大片免费看视频在线 | 国产精品嫩草99a| 国产精品一二二区| 国产亚洲欧洲997久久综合| 国产一区在线观看麻豆| 精品va天堂亚洲国产| 国产在线精品一区二区不卡了| 精品国产乱码久久| 国产激情视频一区二区在线观看 | 亚洲国产欧美在线| 欧美无砖专区一中文字| 亚洲h动漫在线| 91精品国产综合久久久蜜臀图片| 天天色 色综合| 日韩一区二区在线免费观看| 国精品**一区二区三区在线蜜桃| 久久亚洲精精品中文字幕早川悠里| 国产福利一区在线| 中文字幕日韩精品一区| 91成人在线观看喷潮| 天堂va蜜桃一区二区三区漫画版| 日韩美女视频在线| 国产成人亚洲综合a∨婷婷图片| 国产精品你懂的| 欧美性感一区二区三区| 美女久久久精品| 欧美激情在线一区二区三区| 99re热视频精品| 石原莉奈在线亚洲三区| 精品国产乱码久久久久久老虎| 成人美女视频在线观看18| 1区2区3区精品视频| 欧美三级日韩在线| 极品瑜伽女神91| 中文字幕亚洲电影| 欧美一区二区在线看| 国产成人综合在线观看| 亚洲宅男天堂在线观看无病毒| 欧美一区二区三区系列电影| 国产一区二区伦理片| 最近日韩中文字幕| 这里只有精品免费| 成人午夜电影网站| 亚洲成a人片在线观看中文| 精品国产乱码久久久久久老虎| 91在线视频在线| 久久国内精品自在自线400部| 国产精品三级视频| 91精品国产麻豆国产自产在线 | 亚洲图片欧美激情| 91精品国产综合久久久久久久| 国产999精品久久| 亚洲午夜精品一区二区三区他趣| 精品三级av在线| 91激情在线视频| 国产麻豆精品在线| 亚洲国产另类精品专区| 中文字幕精品—区二区四季| 欧美精品1区2区| 99视频热这里只有精品免费| 免费在线看一区| 亚洲精品高清视频在线观看| 精品国产乱码久久久久久浪潮| 欧美色图一区二区三区| 成人在线视频一区二区| 美国三级日本三级久久99 | 国产精品的网站|