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

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

?? icontact.cpp

?? windows mobile 下的聯(lián)系人管理工具。類是iphone的滑動(dòng)聯(lián)系人功能
?? CPP
?? 第 1 頁 / 共 4 頁
字號(hào):
// iContact.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include "iContact.h"
#include "Settings.h"
#include "ListData.h"
#include "ListDataCallLog.h"
#include "ListDataPoom.h"
#include "GraphicFunctions.h"
#include "PhoneUtils.h"
#include "Titlebar.h"

//TODO: fix memory leak when updating contact pictures

//-----------------------------------------------------------------------------
// Global data
//
HINSTANCE   hInst;                     // Program instance handle

Settings *  pSettings = NULL;
ListData *  pListData = NULL;

ScreenType  stScreenType = stList;
int         nCurrentTab = 2;

int		    ListHeight = 0;
int         AverageItemHeight = DEFAULT_ITEM_HEIGHT;
int         StartPosition[MAX_LIST_ITEMS];
int         GroupPosition[ALPHABET_MAX_SIZE];
POINT       ptMouseDown = { -1, -1 };

// Graphic
RECT		rScreen;
int         nScreenHeight;
RECT        rTitlebar;
RECT        rHeader;
RECT		rMenubar;
RECT		rList;
RECT        rContent;
int         rListHeight;

HFONT		PrimaryListFont;
HFONT		SecondaryListFont;
HFONT		GroupFont;
HFONT		ItemDetailsFont;
HFONT		ListIndicatorFont;
HFONT		KeyboardFont;

HDC         hdcMem = NULL;
HBITMAP		hbmMem = NULL;
HDC         hdcTmp = NULL;
HBITMAP		hbmTmp = NULL;
HDC			hdcSkin = NULL;
HBITMAP		hbmSkin = NULL;
HDC         hdcPage1 = NULL;
HBITMAP     hbmPage1 = NULL;
HDC         hdcPage2 = NULL;
HBITMAP     hbmPage2 = NULL;

// Scrolling
bool		bDragging = false;
bool		bScrolling = false;
int			Scrolled = 0;
int         ListScrolled = 0;
int			LastX;
int			LastY;
int			tStartTime;
int			tEndTime;
double		Velocity = 0;
int         nKeyRepeatCount = 0;

// Scroll To
DWORD       Scroll_StartTime = 0;
double		Scroll_TimeCounter = 0.0;
int 		Scroll_StartPosition = 0;
int 		Scroll_Change = 0;
double		Scroll_Duration = 0.0;

// Screen Transition
DWORD       dwTransitionStart = 0;
double      dTransitionPct = 0.0;
int         nTransitionDuration = 0;
bool        bTransitioning = false;
TransitionType trTransitionType = ttSlideLeft;

// Popup window
bool        bDisplayingPopup = false;
PopupType   ptPopupType = ptKeyboard;

// Keyboard Rows/Columns
TCHAR       alphabet[ALPHABET_MAX_SIZE];
int         nKeyboardLetters = 26;
int         nKeyboardRows = 0;
int         nKeyboardCols = 0;
int		    GroupWidth = 0;     // Keyboard group width
int		    GroupHeight = 0;    // Keyboard group height



// Message dispatch table for MainWindowProc
const struct decodeUINT MainMessages[] = {
    WM_PAINT, DoPaintMain,
    WM_DESTROY, DoDestroyMain,
    WM_ACTIVATE, DoActivate,
    WM_SIZE, DoSize,
    WM_LBUTTONDOWN, DoLButtonDown,
    WM_MOUSEMOVE, DoMouseMove,
    WM_LBUTTONUP, DoLButtonUp,
    WM_TIMER, DoTimer,
    WM_KEYDOWN, DoKeyDown,
    WM_TITLEBAR, DoTitlebarCallback,
};

//=============================================================================
//
// Program entry point
//
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPWSTR lpCmdLine, int nCmdShow) {
    MSG msg;
    HWND hwndMain;

    // Initialize this instance.
    hwndMain = InitInstance(hInstance, lpCmdLine, nCmdShow);
    if (hwndMain == 0)
        return 0x10;

    // Application message loop
    while (GetMessage (&msg, NULL, 0, 0)) {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    // Instance cleanup
    return TermInstance (hInstance, msg.wParam);
}
//-----------------------------------------------------------------------------
// InitInstance - Instance initialization
//
HWND InitInstance (HINSTANCE hInstance, LPWSTR lpCmdLine, int nCmdShow){
    WNDCLASS wc;
    HWND hWnd;

    // Save program instance handle in global variable.
    hInst = hInstance;

#if defined(WIN32_PLATFORM_PSPC) || defined(WIN32_PLATFORM_WFSP)
    // If Windows Mobile, allow only one instance of the application.
    hWnd = FindWindow (SZ_APP_NAME, NULL);
    if (hWnd) {
        SetForegroundWindow ((HWND)(((DWORD)hWnd) | 0x01));    
        return 0;
    }
#endif

    // Register application main window class.
    wc.style = 0;                             // Window style
    wc.lpfnWndProc = MainWndProc;             // Callback function
    wc.cbClsExtra = 0;                        // Extra class data
    wc.cbWndExtra = 0;                        // Extra window data
    wc.hInstance = hInstance;                 // Owner handle
    wc.hIcon = NULL;                          // Application icon
    wc.hCursor = LoadCursor (NULL, IDC_ARROW);// Default cursor
    wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
    wc.lpszMenuName =  NULL;                  // Menu name
    wc.lpszClassName = SZ_APP_NAME;         // Window class name

    if (RegisterClass (&wc) == 0) return 0;
    // Create main window.
    hWnd = CreateWindowEx(WS_EX_NODRAG,       // Ex Style
                         SZ_APP_NAME,         // Window class
                         SZ_APP_NAME,         // Window title
                         WS_SYSMENU,          // Style flags
                                              // don't use WS_VISIBLE.
                                              // Why not? It causes an "error report"
                                              // Why? I don't know.
                         CW_USEDEFAULT,       // x position
                         CW_USEDEFAULT,       // y position
                         CW_USEDEFAULT,       // Initial width
                         CW_USEDEFAULT,       // Initial height
                         NULL,                // Parent
                         NULL,                // Menu, must be null
                         hInstance,           // Application instance
                         NULL);               // Pointer to create
                                              // parameters
    // Return fail code if window not created.
    if (!IsWindow (hWnd)) return 0;

    // Initialize COM libraries (for POOM)
    if (FAILED(CoInitializeEx(NULL, 0)))
        return 0;

    // Additional initialization

    // Initialize titlebar callbacks
    InitTitlebar(hWnd);

    // Create fonts
	PrimaryListFont = BuildFont(ITEM_FONT_SIZE, FALSE, FALSE);
	SecondaryListFont = BuildFont(ITEM_SECONDARY_FONT_SIZE, TRUE, FALSE);
	ItemDetailsFont = BuildFont(ITEM_DETAILS_FONT_SIZE, FALSE, FALSE);
	GroupFont = BuildFont(GROUP_ITEM_FONT_SIZE, TRUE, FALSE);
    ListIndicatorFont = BuildFont(LIST_INDICATOR_FONT_SIZE, TRUE, FALSE);
	KeyboardFont = BuildFont(KEYBOARD_FONT_SIZE, TRUE, FALSE);

    // Create data lists
    pSettings = new Settings();
    SwitchTab(hWnd, 2);
    InitSurface(hWnd);

    // Standard show and update calls
    ShowWindow (hWnd, nCmdShow);
    UpdateWindow (hWnd);
    return hWnd;
}

//-----------------------------------------------------------------------------
// TermInstance - Program cleanup
//
int TermInstance (HINSTANCE hInstance, int nDefRC) {

    return nDefRC;
}
//=============================================================================
// Message handling procedures for MainWindow
//

//-----------------------------------------------------------------------------
// MainWndProc - Callback function for application window
//
LRESULT CALLBACK MainWndProc (HWND hWnd, UINT wMsg, WPARAM wParam, 
                              LPARAM lParam) {
    INT i;
    //
    // Search message list to see if we need to handle this
    // message. If in list, call procedure.
    //
    for (i = 0; i < dim(MainMessages); i++) {
        if (wMsg == MainMessages[i].Code)
            return (*MainMessages[i].Fxn)(hWnd, wMsg, wParam, lParam);
    }
    return DefWindowProc (hWnd, wMsg, wParam, lParam);
}

//-----------------------------------------------------------------------------
// DoPaintMain - Process WM_PAINT message for window.
//
LRESULT DoPaintMain (HWND hWnd, UINT wMsg, WPARAM wParam, 
                     LPARAM lParam) {

    PAINTSTRUCT ps;
    RECT rect;
    HDC hdc;
    
    int rScreenWidth = rScreen.right - rScreen.left;
    int rScreenHeight = rScreen.bottom - rScreen.top;   

    hdc = BeginPaint (hWnd, &ps); 

    // rect is the region that needs to be painted
    rect = ps.rcPaint;

    if (bTransitioning) {
        RECT rContent = rScreen;

        if (trTransitionType == ttSlideRight 
            || trTransitionType == ttSlideLeft) {

            rContent.top = rTitlebar.bottom;
            int rHeight = rContent.bottom - rContent.top;
            int width1 = (int)(rScreenWidth * dTransitionPct);
            if (trTransitionType == ttSlideLeft)
                width1 = rScreenWidth - width1;
            int width2 = rScreenWidth - width1;

            BitBlt(hdcMem, rContent.left, rContent.top, width1, rHeight, 
                hdcPage1, width2, rContent.top, SRCCOPY);

            BitBlt(hdcMem, width1, rContent.top, width2, rHeight,
                hdcPage2, rContent.left, rContent.top, SRCCOPY);
        }

        else if (trTransitionType == ttKeyboardExpand 
            || trTransitionType == ttKeyboardShrink) {

            double cubic = pow(dTransitionPct - 1, 3) + 1;
            if (trTransitionType == ttKeyboardShrink)
                cubic = 1 - cubic;

            int nKbWidth = (int)(rScreenWidth * cubic);
            int nKbHeight = (int)(rScreenHeight * cubic);

            BitBlt(hdcMem, rScreen.left, rScreen.top, 
                rScreenWidth, rScreenHeight, 
                hdcPage1, rScreen.left, rScreen.top, SRCCOPY);

            // for faster rendering, don't stretch or alpha-ize the keyboard
            if (pSettings->doFastGraphics) {
                BitBlt(hdcMem, rScreen.right - nKbWidth, 
                    rScreen.bottom - nKbHeight, nKbWidth, nKbHeight,
                    hdcPage2, 0, 0, SRCCOPY);
            }
            else {
                BltAlpha(hdcMem, rScreen.right - nKbWidth, 
                    rScreen.bottom - nKbHeight, nKbWidth, nKbHeight,
                    hdcPage2, 0, 0, rScreenWidth, rScreenHeight, 220);
            }
        }
    }

    // not transitioning
    else {
        DrawScreenOn(hdcMem, stScreenType, hdcTmp, rect, Scrolled);

        if (bDisplayingPopup) {
            switch (ptPopupType) {
                case ptKeyboard:
	                // draw the keyboard
	                DrawKeyboardOn(hdcTmp, rScreen);
                    BltAlpha(hdcMem, rScreen.left, rScreen.top, rScreenWidth, rScreenHeight,
	                    hdcTmp, 0, 0, rScreenWidth, rScreenHeight, 220);
                    break;
            }
        }
    }

    // Transfer everything to the actual screen
    BitBlt(hdc, rect.left, rect.top, rect.right - rect.left,
        rect.bottom - rect.top, hdcMem, rect.left, rect.top, SRCCOPY);

    EndPaint (hWnd, &ps);

    return 0;
}

//-----------------------------------------------------------------------------
// DoActivate - Process WM_ACTIVATE message for window
//
LRESULT DoActivate (HWND hWnd, UINT wMsg, WPARAM wParam,
                    LPARAM lParam) {

    DWORD dwState;
    RECT rc;

    if (wParam == WA_CLICKACTIVE || wParam == WA_ACTIVE) {
        // To switch to full screen mode, first hide all of the shell parts.
        dwState = (SHFS_HIDETASKBAR 
            | SHFS_HIDESTARTICON 
            | SHFS_HIDESIPBUTTON);

        SHFullScreen(hWnd, dwState);

        // Next resize the main window to the size of the screen.
        SetRect(&rc, 0, 0, GetSystemMetrics(SM_CXSCREEN), 
            GetSystemMetrics(SM_CYSCREEN));
        MoveWindow(hWnd, rc.left, rc.top, rc.right-rc.left, 
            rc.bottom-rc.top, TRUE);

        ShowWindow(hWnd, SW_SHOWNORMAL);
    }

    // The window is being deactivated... restore it to non-fullscreen
    else {
        // To switch to normal mode, first show all of the shell parts.
        dwState = (SHFS_SHOWTASKBAR 
            | SHFS_SHOWSTARTICON 
            | SHFS_SHOWSIPBUTTON);

        SHFullScreen(hWnd, dwState);

        // Next resize the main window to the size of the work area.
        SystemParametersInfo(SPI_GETWORKAREA, 0, &rc, FALSE);

        MoveWindow(hWnd, rc.left, rc.top, rc.right-rc.left,
            rc.bottom-rc.top, TRUE);
    }

    return DefWindowProc (hWnd, wMsg, wParam, lParam);
}

//-----------------------------------------------------------------------------
// DoTitlebarCallback - Process WM_TITLEBAR message for window
//
LRESULT DoTitlebarCallback (HWND hWnd, UINT wMsg, WPARAM wParam,
                    LPARAM lParam) {
    RefreshTitlebar(lParam);
    InvalidateRect(hWnd, &rTitlebar, false);
    return 0;
}

//-----------------------------------------------------------------------------
// DoSize - Process WM_SIZE message for window
//
LRESULT DoSize (HWND hWnd, UINT wMsg, WPARAM wParam,
                LPARAM lParam) {

	InitSurface(hWnd);

    return DefWindowProc (hWnd, wMsg, wParam, lParam);
}

//-----------------------------------------------------------------------------
// DoLButtonDown - Process WM_LBUTTONDOWN message for window
//
LRESULT DoLButtonDown (HWND hWnd, UINT wMsg, WPARAM wParam,
                       LPARAM lParam) {

	LastX = ptMouseDown.x = LOWORD(lParam);
	LastY = ptMouseDown.y = HIWORD(lParam);
    tStartTime = ::GetTickCount();

    if (bScrolling) {
        KillTimer(hWnd, IDT_TIMER_SCROLL);
        KillTimer(hWnd, IDT_TIMER_SCROLL_TO);
        Velocity = 0;
        bScrolling = false;
    }

    if (bDisplayingPopup || bTransitioning) {
        return 0;
    }

    if (stScreenType == stList 
        && LastX > rList.right - 20 
        && LastY >= rHeader.bottom 
        && LastY < rMenubar.top) {

        bScrolling = true;
        ScrollBar(LastY);
        InvalidateRect(hWnd, &rList, false);
        UpdateWindow(hWnd);
    }

    return 0;
}

//-----------------------------------------------------------------------------
// DoMouseMove - Process WM_MOUSEMOVE message for window
//
LRESULT DoMouseMove (HWND hWnd, UINT wMsg, WPARAM wParam,
                     LPARAM lParam) {

	int x = LOWORD(lParam);
	int y = HIWORD(lParam);
    int t = ::GetTickCount();

    if (bDisplayingPopup || bTransitioning) {
        return 0;
    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人一区二区精品非洲| 一区二区成人在线观看| 91丨porny丨户外露出| 视频一区视频二区在线观看| 久久亚洲综合色| 欧美午夜电影网| 不卡一区二区三区四区| 久久99这里只有精品| 亚洲五月六月丁香激情| 国产精品毛片大码女人| 日韩女优制服丝袜电影| 欧美日韩精品欧美日韩精品一| 成人精品亚洲人成在线| 久久aⅴ国产欧美74aaa| 亚洲va国产va欧美va观看| 国产精品久久久久久久久晋中| 精品少妇一区二区| 日韩一区二区三区在线| 欧美午夜不卡在线观看免费| 色琪琪一区二区三区亚洲区| 成人午夜av影视| 国产麻豆9l精品三级站| 蜜桃免费网站一区二区三区| 午夜伊人狠狠久久| 一区二区三区在线影院| 亚洲四区在线观看| 国产精品国产三级国产有无不卡| 久久久午夜精品理论片中文字幕| 精品国产一区二区三区久久久蜜月 | 天天操天天干天天综合网| 中文字幕制服丝袜一区二区三区| 久久久久久久久一| 欧美精品一区二区在线观看| 日韩三级伦理片妻子的秘密按摩| 欧美人与性动xxxx| 欧美日韩激情一区二区| 欧美视频第二页| 欧美性猛片aaaaaaa做受| 日本道免费精品一区二区三区| av不卡在线观看| hitomi一区二区三区精品| 成人av高清在线| av电影天堂一区二区在线| 97精品国产97久久久久久久久久久久| 成人黄动漫网站免费app| 国产福利91精品一区二区三区| 国产综合色产在线精品| 国产精品18久久久久| 国产精品99久久久久| 国产不卡高清在线观看视频| 风间由美性色一区二区三区| 99久久国产综合精品麻豆| 91丝袜美女网| 欧美午夜精品电影| 日韩免费高清视频| 国产亚洲综合av| 国产精品高潮久久久久无| 亚洲美女电影在线| 亚洲成a人片在线观看中文| 日韩av电影免费观看高清完整版在线观看 | 欧美在线不卡视频| 欧美久久久久中文字幕| 日韩欧美国产麻豆| 久久精品视频一区二区| 中文字幕一区不卡| 亚洲18色成人| 国产一区二区三区四区在线观看| 成人午夜在线视频| 在线观看亚洲专区| 欧美一级精品在线| 国产精品久久免费看| 亚洲一区在线观看网站| 激情久久五月天| aaa欧美日韩| 欧美一区永久视频免费观看| 久久精品人人爽人人爽| 亚洲精品中文在线影院| 麻豆国产欧美日韩综合精品二区| 国产91在线|亚洲| 欧美色图一区二区三区| 久久综合久久综合久久| 亚洲视频在线一区| 精品一区二区三区在线播放 | 久久嫩草精品久久久精品| 亚洲日本成人在线观看| 美女一区二区久久| 91麻豆高清视频| 精品国产乱码久久久久久免费| 中文字幕欧美一| 久久精品国产亚洲高清剧情介绍| heyzo一本久久综合| 欧美一个色资源| 一区二区三区日韩| 国产福利一区二区三区视频在线| 精品视频1区2区| 亚洲欧洲性图库| 狠狠色丁香久久婷婷综合_中 | 亚洲国产中文字幕在线视频综合| 国产麻豆午夜三级精品| 欧美日韩在线播放三区四区| 欧美极品xxx| 免费国产亚洲视频| 91激情五月电影| 中文字幕电影一区| 久久精品免费看| 欧美视频在线观看一区| 中文字幕人成不卡一区| 国产一区二区三区四区五区入口| 欧美日韩国产三级| 亚洲另类一区二区| 国产aⅴ综合色| 欧美电影免费观看高清完整版 | 欧美在线免费观看视频| 国产欧美日韩精品a在线观看| 日日摸夜夜添夜夜添国产精品| 99re8在线精品视频免费播放| 久久久精品一品道一区| 日本不卡一区二区三区| 欧美性色黄大片| 一区二区在线观看视频| 成人激情文学综合网| 久久在线观看免费| 精品一区免费av| 欧美mv日韩mv国产网站| 久久黄色级2电影| 日韩免费福利电影在线观看| 日精品一区二区| 欧美另类变人与禽xxxxx| 亚洲综合激情小说| 91成人国产精品| 樱花影视一区二区| 欧美亚洲尤物久久| 亚洲成人av在线电影| 欧美性xxxxxxxx| 污片在线观看一区二区| 欧美日本韩国一区| 日韩中文字幕1| 欧美一区二区网站| 免费成人美女在线观看| 日韩一区二区三区免费观看| 久久精品免费看| 久久综合网色—综合色88| 国产一区二区在线电影| 久久久久久久久伊人| 国产99久久久国产精品| 国产精品久久久久精k8| 99久久99久久免费精品蜜臀| 亚洲欧美日韩久久精品| 在线亚洲一区二区| 婷婷中文字幕一区三区| 91麻豆精品国产综合久久久久久| 日本色综合中文字幕| 26uuu另类欧美| 大桥未久av一区二区三区中文| 国产精品入口麻豆九色| 在线观看欧美日本| 五月天网站亚洲| 久久精品在这里| 91色porny| 石原莉奈在线亚洲三区| 亚洲精品在线观看网站| 国产成人精品亚洲777人妖| 一区二区三区中文字幕| 欧美乱熟臀69xxxxxx| 精久久久久久久久久久| 国产精品色哟哟网站| 欧美三级午夜理伦三级中视频| 男女男精品视频| 中文字幕中文字幕在线一区 | 欧美高清一级片在线观看| 色综合天天综合狠狠| 日日夜夜精品视频免费| 国产亚洲一区二区三区在线观看 | 欧美日韩高清一区二区不卡 | 极品少妇xxxx偷拍精品少妇| 国产精品美女www爽爽爽| 欧美日韩综合一区| 国产在线不卡一区| 亚洲综合av网| 久久免费午夜影院| 欧美写真视频网站| 国产成人精品网址| 午夜精彩视频在线观看不卡| 久久久精品天堂| 欧美日韩成人一区二区| 国产精品综合视频| 亚洲综合免费观看高清完整版| 欧美精品一区二区三区蜜臀| 日本韩国一区二区| 粉嫩高潮美女一区二区三区| 亚洲电影在线播放| 国产精品久久久久久久久搜平片| 欧美精品久久久久久久久老牛影院| 粉嫩蜜臀av国产精品网站| 日日骚欧美日韩| 亚洲精品一二三四区| 久久九九久精品国产免费直播| 欧美夫妻性生活| 91小宝寻花一区二区三区| 国内精品自线一区二区三区视频|