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

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

?? cedialer.c

?? WINCE 上的簡(jiǎn)單電話撥號(hào)程序
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/***********************************************************************

    MODULE: 
    CeDialer.c

    ABSTRACT: 
    This code sample shows how to initialize an application's use
    of TAPI, open a line device, negotiate an API version to use,
    translate an address into another format, place a call on an  
    opened line device, close an opened line device, and shut down 
    an application's use of the line abstraction of the API. 

    FUNCTIONS:
    ConnectUsingProc - Processes messages sent to IDD_CONNECTUSING dialog.
    CurrentLineClose - Closes the opened line device. 
    DialerDlgProc    - Processes messages sent to IDD_CEDIALER dialog.
    DialingProc      - Processes messages sent to IDD_DIALING dialog.
    GetLineInfo      - Get line information for selected line.
    InitAddrCB       - Fills address list box on IDD_CONNECTUSING dialog.
    InitApplication  - Initializes application.
    InitializeTAPI   - Initializes the application's use of the Tapi.dll.
    InitInstance     - Instance initialization.
    InitLineCB       - Fills line list box on IDD_CONNECTUSING dialog.
    lineCallbackFunc - Monitors line and call status. 
    MainWndProc      - Processes messages sent to the main window.
    MakeCanonicalNum - Converts phone number to canonical address format.
    MakePhoneCall    - Demonstrates the use of TAPI call functions.
    WinMain          - Application entry point and initialization.
          
***********************************************************************/

// Include the proper version of TAPI
#define ERR_NONE              0
#define TAPI_VERSION_1_0      0x00010003
#define TAPI_VERSION_1_4      0x00010004
#define TAPI_VERSION_2_0      0x00020000
#define TAPI_CURRENT_VERSION  TAPI_VERSION_2_0

#define REASONABLE_BUFFER_SIZE  512

#include <windows.h>
#include <aygshell.h>
#include <tapi.h>
#include <strsafe.h>
#include "resource.h"  
#include "CeDialer.h"

HINSTANCE g_hInst    = NULL;    // hInstance of the application
HWND g_hwndMain      = NULL;    // Handle to the main window
HWND g_hwndDial      = NULL;    // Handle to the dialing window
HWND g_hwndDialerDlg = NULL;    // Handle to the dialer dialog 

TCHAR g_szTitle[] = TEXT("CeDialer TAPI Sample");
// CeDialer application window name
TCHAR g_szAppName[] = TEXT("CeDialer");
// Main window class name

HLINEAPP g_hLineApp = NULL;     // Application's use handle for TAPI
// (lineInitialize)
HCALL g_hCall = NULL;           // Handle to the open line device on 
// which the call is to be originated 
// (lineMakeCall)
LONG g_MakeCallRequestID = 0;   // Request identifier returned by 
// lineMakeCall
LONG g_DropCallRequestID = 0;   // Request identifier returned by 
// lineDrop
BOOL g_bCurrentLineAvail = TRUE;// Indicates line availability

TCHAR g_szCurrentNum[TAPIMAXDESTADDRESSSIZE + 1]; 
// Current phone number
TCHAR g_szLastNum[TAPIMAXDESTADDRESSSIZE + 1];         
// Last called phone number


DWORD g_dwNumDevs = 0;          // Number of line devices available
DWORD g_dwCurrentLineID = -1;   // Current line device identifier
DWORD g_dwCurrentLineAddr = -1; // Current line address

LINEINFO g_CurrentLineInfo;     // Contains the current line information
LINEINFO *g_lpLineInfo = NULL;  // Array that contains all the lines' 
// information

#define ErrorBox(_s) MessageBox(g_hwndDialerDlg,_s, \
TEXT("CeDialer Message"),MB_OK)
#define MENU_HEIGHT 26          // Height of menu bar at screen bottom


// Purpose: Determine at runtime if the app is running on a smartphone device
static BOOL IsSmartphone() 
{
    TCHAR tszPlatform[64];
    
    if (TRUE == SystemParametersInfo(SPI_GETPLATFORMTYPE,
        sizeof(tszPlatform)/sizeof(*tszPlatform),tszPlatform,0))
    {
        if (0 == _tcsicmp(TEXT("Smartphone"), tszPlatform)) 
        {
            return TRUE;
        }
    }
    return FALSE;   
}

/***********************************************************************

  FUNCTION: 
  DialerDlgProc
  
    PURPOSE: 
    Processes messages sent to the IDD_CEDIALER dialog box.
    
***********************************************************************/
BOOL CALLBACK DialerDlgProc(
    HWND hwnd, 
    UINT uMsg, 
    WPARAM wParam, 
    LPARAM lParam
    )

{
    switch (uMsg)
    {

    case WM_HOTKEY: 
        { 
            UINT uVirt;
            //handle "Back" key
            uVirt = HIWORD(lParam);

            if (uVirt == VK_TBACK)
            {
                SendMessage(GetDlgItem (hwnd, IDC_PHONENUM), WM_CHAR, VK_BACK, 0);
            }

            break;
        }
    case WM_INITDIALOG:
        {
            
            SHINITDLGINFO shidi;
            SHMENUBARINFO mbi;
            
            g_hwndDialerDlg = hwnd;
            
            // Create OK button in navigation bar and size dialog.
            shidi.dwMask = SHIDIM_FLAGS;
            shidi.dwFlags = SHIDIF_DONEBUTTON | SHIDIF_SIPDOWN | 
                SHIDIF_SIZEDLGFULLSCREEN;
            shidi.hDlg =  hwnd;
            SHInitDialog(&shidi);
            
            
            if (IsSmartphone() == TRUE)
            {
                
                memset(&mbi, 0, sizeof(SHMENUBARINFO));
                mbi.cbSize     = sizeof(SHMENUBARINFO);
                mbi.hwndParent = hwnd;
                mbi.nToolBarId = IDR_SPMENU;
                mbi.hInstRes   = g_hInst;
                mbi.nBmpId     = 0;
                mbi.cBmpImages = 0;
                
                if (SHCreateMenuBar(&mbi) == 0) 
                    return FALSE;
            }
            
            // ignore the phone key
            SendMessage(mbi.hwndMB, SHCMBM_OVERRIDEKEY, VK_TTALK,
                MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY,
                SHMBOF_NODEFAULT | SHMBOF_NOTIFY));
            
            // reroute Back key to WM_HOTKEY handler
            SendMessage(mbi.hwndMB, SHCMBM_OVERRIDEKEY, VK_TBACK, 
                MAKELPARAM(SHMBOF_NODEFAULT | SHMBOF_NOTIFY, 
                SHMBOF_NODEFAULT | SHMBOF_NOTIFY));

            
            
            // Limit text in phone number field to TAPIMAXDESTADDRESSSIZE.
            SendDlgItemMessage (hwnd, IDC_PHONENUM, CB_LIMITTEXT, 
                (WPARAM)TAPIMAXDESTADDRESSSIZE, 0);
            
            // Initialize the application's use of Tapi.dll. If the function
            // fails, terminate the application.
            if (InitializeTAPI ())
            {
                ErrorBox (TEXT("Intilization of Tapi.dll failed."));
                
                if (g_hLineApp)
                    lineShutdown (g_hLineApp);
                
                DestroyWindow (hwnd);
            }
            
            return TRUE;
        }
        
        
        
    case WM_COMMAND:
        {
            switch (LOWORD(wParam))
            {
                
                
            case IDM_QUIT:
                EndDialog(hwnd, IDOK);
                break;
            case IDM_SELECTLINE:
            case IDC_SELECTLINE:
                
                DialogBox (g_hInst, 
                    MAKEINTRESOURCE(IDD_CONNECTUSING), 
                    hwnd, 
                    (DLGPROC) ConnectUsingProc);
                
                return TRUE;
                
            case IDM_DIAL:
            case IDC_DIAL:
                {
                    // Check if there is a number entered.
                    if (SendDlgItemMessage (hwnd, 
                        IDC_PHONENUM, 
                        WM_GETTEXTLENGTH, 0, 0) > 0)
                    {
                        // Set the current line if it is not already set.  
                        if (g_dwCurrentLineID == -1)
                        {
                            DialogBox (g_hInst, 
                                MAKEINTRESOURCE(IDD_CONNECTUSING), 
                                hwnd, 
                                (DLGPROC) ConnectUsingProc);
                        }
                        
                        // Get the number to be dialed.
                        GetDlgItemText (hwnd, 
                            IDC_PHONENUM, 
                            (LPTSTR) g_szCurrentNum, 
                            TAPIMAXDESTADDRESSSIZE);
                        
                        // Convert the phone number into a canonical format.
                        if (!MakeCanonicalNum (g_szCurrentNum))
                            return TRUE;
                        
                        // Make the call.
                        MakePhoneCall (g_szCurrentNum);
                        
                        // Set the focus on the phone number Edit control.
                        SetFocus (GetDlgItem (hwnd, IDC_PHONENUM));
                        
                        // Select the phone number once it is dialed.
                        SendDlgItemMessage (hwnd, IDC_PHONENUM, EM_SETSEL, 0, -1);
                        
                        // Save the phone number in the g_szLastNum string.
                        lstrcpy (g_szLastNum, g_szCurrentNum);
                    }
                    return TRUE;
                }
                
            case IDC_BUTTON1:
            case IDC_BUTTON2:
            case IDC_BUTTON3:
            case IDC_BUTTON4:
            case IDC_BUTTON5:
            case IDC_BUTTON6:
            case IDC_BUTTON7:
            case IDC_BUTTON8:
            case IDC_BUTTON9:
            case IDC_BUTTON0:
            case IDC_BUTTONSTAR:
            case IDC_BUTTONPOUND:
                {
                    int iNumOfDigits = 0;
                    TCHAR *lpszBuffer;
                    static const TCHAR digits[] = {'1', '2', '3', '4', 
                        '5', '6', '7', '8', 
                        '9', '0', '*', '#'};
                    
                    lpszBuffer = (TCHAR *)LocalAlloc (LPTR, 
                        (TAPIMAXDESTADDRESSSIZE + 1) * sizeof(TCHAR));
                    
                    // Clear the current selection.
                    SendDlgItemMessage (hwnd, IDC_PHONENUM, WM_CLEAR, 0, 0);
                    
                    iNumOfDigits = SendDlgItemMessage (
                        hwnd, 
                        IDC_PHONENUM, 
                        WM_GETTEXT,
                        (WPARAM)TAPIMAXDESTADDRESSSIZE + 1,
                        (LPARAM)lpszBuffer);
                    
                    if (iNumOfDigits < TAPIMAXDESTADDRESSSIZE)
                    {
                        lpszBuffer[iNumOfDigits] = 
                            digits[LOWORD(wParam) - IDC_BUTTON1];
                        
                        SendDlgItemMessage (hwnd, IDC_PHONENUM, WM_SETTEXT, 0,
                            (LPARAM)lpszBuffer);
                    }
                    
                    LocalFree (lpszBuffer);
                    return TRUE;
                }
                
            case IDOK:
                
                if (g_lpLineInfo)
                    LocalFree (g_lpLineInfo);
                
                lineShutdown (g_hLineApp);
                
                DestroyWindow (hwnd);
                PostQuitMessage (0);
                return TRUE;
      } 
      break; 
    } 
    
    //case WM_DESTROY:
    //  PostQuitMessage (0);
    //  return TRUE;
        
  }
  
  return FALSE;
}

/***********************************************************************

FUNCTION: 
MainWndProc

PURPOSE: 
Processes messages sent to the main window.
    
***********************************************************************/
BOOL CALLBACK MainWndProc(
    HWND hwnd, 
    UINT uMsg, 
    WPARAM wParam, 
    LPARAM lParam
    )
{
    switch (uMsg)
    {
    case WM_CREATE:
        
        // Create dialer dialog box.
        DialogBox (g_hInst, 
            MAKEINTRESOURCE(IDD_CEDIALER), 
            hwnd, 
            (DLGPROC) DialerDlgProc);
        break;
        
    case WM_DESTROY:
        DestroyWindow(g_hwndDialerDlg);
        PostQuitMessage (0);
        return TRUE;
        
    default:
        return DefWindowProc (hwnd, uMsg, wParam, lParam);
    }
    
    return FALSE;
}


/***********************************************************************
      
FUNCTION: 
InitInstance

PURPOSE: 
Instance initialization.
          
***********************************************************************/      
BOOL InitInstance(
    HINSTANCE hInstance,
    int nCmdShow
    )
{
    
    g_hInst = hInstance;
    if (IsSmartphone())
    {
        DialogBox (g_hInst, 
            MAKEINTRESOURCE(IDD_CEDIALER_SP), 
            NULL, 
            (DLGPROC) DialerDlgProc);
        
    }
    else
    {
        DialogBox (g_hInst, 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区二区不卡| 国产**成人网毛片九色 | 亚洲成人在线网站| 中文字幕亚洲一区二区va在线| 久久免费电影网| 国产欧美日韩综合| 日本一区二区三区视频视频| 国产精品免费免费| 亚洲伦在线观看| 亚洲成在人线在线播放| 水野朝阳av一区二区三区| 秋霞电影网一区二区| 精品无人区卡一卡二卡三乱码免费卡 | 欧美日韩久久久| 欧美日韩国产精品成人| 在线成人高清不卡| 欧美精品一区二区久久久| 国产校园另类小说区| 亚洲色图制服丝袜| 亚洲制服丝袜av| 捆绑变态av一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 国产精品一区二区久激情瑜伽 | 亚洲日本在线天堂| 亚洲国产成人91porn| 美国av一区二区| 福利91精品一区二区三区| 色偷偷成人一区二区三区91| 日韩午夜激情免费电影| 国产精品丝袜91| 午夜精品一区在线观看| 国内精品久久久久影院薰衣草| eeuss国产一区二区三区| 欧美精品丝袜中出| 国产精品蜜臀av| 男女男精品视频| 91免费观看视频| 久久亚洲欧美国产精品乐播| 一区二区三区在线视频免费观看| 免费观看91视频大全| 91麻豆精东视频| 久久午夜羞羞影院免费观看| 一区二区三区蜜桃| 成人精品国产福利| 精品免费视频.| 亚洲不卡av一区二区三区| 成人激情黄色小说| 2021中文字幕一区亚洲| 午夜精品福利久久久| eeuss鲁一区二区三区| 精品日本一线二线三线不卡| 一区二区三区 在线观看视频| 国产成人亚洲综合a∨婷婷| 日韩欧美高清一区| 亚洲国产精品久久人人爱| 99久久精品免费看国产| 久久久国际精品| 精品一区二区三区香蕉蜜桃 | 成人免费在线播放视频| 久久国产精品露脸对白| 欧美猛男超大videosgay| 亚洲欧美视频在线观看| 国产v日产∨综合v精品视频| www成人在线观看| 久久99热国产| 精品国产一二三| 青青青伊人色综合久久| 欧美日韩中文字幕一区二区| 亚洲日本在线视频观看| 91在线观看成人| 国产精品久久久久影院老司| 国产成人免费视频一区| 国产视频不卡一区| 成人激情开心网| 亚洲日本在线天堂| 色婷婷精品大视频在线蜜桃视频| 亚洲视频在线观看三级| 99精品在线观看视频| 国产精品高潮呻吟| 成人av电影在线| 亚洲日穴在线视频| 日本高清不卡一区| 香蕉影视欧美成人| 欧美大片在线观看| 国内精品久久久久影院色 | 亚洲欧洲www| 在线亚洲一区二区| 午夜精品在线看| 日韩午夜激情av| 国产风韵犹存在线视精品| 欧美国产丝袜视频| 欧美最新大片在线看| 青青草97国产精品免费观看 | 婷婷综合久久一区二区三区| 欧美久久一二区| 国内精品视频一区二区三区八戒 | 一本大道久久a久久精品综合| 亚洲欧美一区二区久久| 欧美日韩你懂的| 国产中文字幕一区| 亚洲欧洲av色图| 欧美精品在欧美一区二区少妇| 美腿丝袜亚洲一区| 国产精品毛片久久久久久| 欧美在线短视频| 国产一区视频在线看| 一区二区三区视频在线观看| 91精品国产综合久久精品麻豆| 国产精品一区免费视频| 亚洲已满18点击进入久久| 久久免费国产精品| 欧美日本不卡视频| 成人免费av在线| 免费成人在线影院| 亚洲婷婷国产精品电影人久久| 69av一区二区三区| 99精品黄色片免费大全| 久久精品99国产精品| 亚洲毛片av在线| 欧美国产一区二区| 日韩三级免费观看| 91豆麻精品91久久久久久| 国产一区二区主播在线| 亚洲高清不卡在线观看| 国产精品色在线| 日韩视频123| 欧美日韩精品一区二区三区蜜桃| 成人在线综合网站| 国产一区二区三区四区五区美女 | 美日韩一级片在线观看| 亚洲激情网站免费观看| 国产三区在线成人av| 日韩欧美黄色影院| 欧美久久久久久久久久| 色呦呦国产精品| 99免费精品在线| 国产成人精品一区二区三区四区| 蜜臀va亚洲va欧美va天堂| 亚洲国产精品自拍| 亚洲综合视频在线观看| 亚洲免费三区一区二区| 亚洲欧美偷拍三级| 亚洲欧美日韩中文字幕一区二区三区 | 天天av天天翘天天综合网色鬼国产| 国产精品素人一区二区| 日本一区二区三区在线不卡 | 91论坛在线播放| 92精品国产成人观看免费| 成人久久视频在线观看| 国产盗摄女厕一区二区三区| 国产美女精品在线| 国产jizzjizz一区二区| 成人午夜视频在线观看| 高清在线观看日韩| 成人黄色片在线观看| 99久免费精品视频在线观看| 91免费精品国自产拍在线不卡| 99久久免费精品| 91久久奴性调教| 欧美精品三级日韩久久| 欧美成人女星排行榜| 国产日韩欧美综合一区| 国产精品入口麻豆九色| 国产精品成人一区二区艾草| 亚洲日本韩国一区| 午夜精品影院在线观看| 美女脱光内衣内裤视频久久网站| 麻豆精品视频在线观看视频| 国产美女久久久久| kk眼镜猥琐国模调教系列一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 在线亚洲人成电影网站色www| 欧美女孩性生活视频| 久久久三级国产网站| 国产精品日日摸夜夜摸av| 一区二区三区日韩欧美| 久热成人在线视频| 成人av资源站| 欧美老人xxxx18| 国产无遮挡一区二区三区毛片日本| 亚洲欧美在线高清| 五月天久久比比资源色| 国产九色sp调教91| 色综合天天综合网天天看片| 欧美一区国产二区| 国产精品国产三级国产a| 亚洲成av人片在线观看| 国产成人自拍高清视频在线免费播放| 成人午夜激情影院| 欧美疯狂做受xxxx富婆| 中文字幕 久热精品 视频在线 | 日韩亚洲欧美综合| 国产精品久久久久久亚洲毛片| 亚洲国产sm捆绑调教视频| 激情另类小说区图片区视频区| 色综合久久中文字幕综合网| 日韩欧美一区在线| 一区二区高清在线| 成人久久久精品乱码一区二区三区 | 色婷婷国产精品久久包臀|