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

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

?? cedialer.c

?? Cellcore. ExTAPI,ExTAPIAsync,SMS,TAPI
?? C
?? 第 1 頁 / 共 4 頁
字號:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
/***********************************************************************

    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
    {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
九九九久久久精品| 成人av免费在线| 亚洲免费在线观看视频| 日韩一区二区不卡| 国产成人精品免费| 亚洲成人黄色小说| 国产精品久久久久一区| 日韩你懂的在线观看| 欧美日韩国产一二三| 91麻豆精品一区二区三区| 国产在线国偷精品免费看| 久久电影网电视剧免费观看| 国产一区二区三区四区五区美女 | 欧美成人精品1314www| 一本大道久久a久久综合| 国产成人av电影| 狠狠色伊人亚洲综合成人| 免费观看30秒视频久久| 亚洲成人精品影院| 午夜精品久久久久影视| 一区二区免费看| 亚洲国产精品综合小说图片区| 中文字幕一区二区三区av| 国产精品国产三级国产普通话99 | 91麻豆国产香蕉久久精品| 国产精品一区久久久久| 国内精品写真在线观看| 久久99精品国产麻豆不卡| 毛片av一区二区| 久久er精品视频| 国产成人99久久亚洲综合精品| 国产成人精品一区二区三区四区| 国产91在线观看| 99re6这里只有精品视频在线观看| 99久久伊人网影院| 色噜噜狠狠色综合中国| 欧美日韩国产首页| 日韩一级黄色大片| 欧美极品xxx| 亚洲激情校园春色| 日本在线不卡一区| 国产成人亚洲精品青草天美| yourporn久久国产精品| 91福利在线免费观看| 欧美一区在线视频| 久久一区二区三区四区| 中文字幕亚洲综合久久菠萝蜜| 夜夜精品浪潮av一区二区三区| 亚洲第一二三四区| 国产在线国偷精品免费看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | caoporn国产一区二区| 欧美三级电影在线看| 精品国产91久久久久久久妲己| 国产精品久久久爽爽爽麻豆色哟哟| 夜夜嗨av一区二区三区中文字幕| 激情久久久久久久久久久久久久久久| 国产精品一区2区| 欧美日韩国产另类一区| 国产精品久久久久永久免费观看| 亚洲成人三级小说| 91原创在线视频| 日韩精品中文字幕一区二区三区| 亚洲欧洲三级电影| 韩国欧美国产1区| 欧美日韩三级在线| 亚洲欧美另类小说视频| 国产在线精品一区二区夜色| 555夜色666亚洲国产免| 亚洲视频网在线直播| 国产成人免费视频精品含羞草妖精| 欧美手机在线视频| 亚洲乱码国产乱码精品精的特点| 国产精品 日产精品 欧美精品| 在线不卡一区二区| 五月激情综合婷婷| 欧美系列在线观看| 亚洲精品久久久久久国产精华液| 国产宾馆实践打屁股91| 精品国产一区二区亚洲人成毛片| 亚洲成人免费在线| 欧美女孩性生活视频| 一区二区三区波多野结衣在线观看| 风间由美一区二区av101| 亚洲精品一区在线观看| 麻豆精品在线看| 日韩精品一区二| 国产一区二区三区久久久| 精品久久久三级丝袜| 美国三级日本三级久久99| 91精品国产综合久久久久久| 亚洲va欧美va人人爽| 日韩一级欧美一级| 国产一区在线观看视频| 久久久激情视频| 不卡一区中文字幕| 一区二区三区四区在线| 在线区一区二视频| 日日欢夜夜爽一区| 欧美成人午夜电影| 国产999精品久久久久久绿帽| 国产精品免费视频观看| 色老汉一区二区三区| 亚洲国产综合在线| 欧美一区二区三区男人的天堂| 激情欧美一区二区| 亚洲欧美激情小说另类| 欧美日韩在线播放一区| 激情综合网天天干| 国产精品素人视频| 欧美视频日韩视频| 国产中文一区二区三区| 亚洲视频免费在线观看| 91精品国产综合久久福利| 国产一区二区三区四区在线观看 | 欧美日韩国产影片| 国产乱淫av一区二区三区 | 一区二区三区成人| 26uuu亚洲| 91福利精品视频| 韩国成人在线视频| 亚洲一区二区3| 国产校园另类小说区| 欧美嫩在线观看| 91在线国产观看| 精品一区二区三区在线视频| 亚洲乱码日产精品bd| 久久影院午夜片一区| 欧美日韩一区二区在线视频| 丁香婷婷综合网| 久久99精品国产麻豆婷婷洗澡| 一二三区精品视频| 国产精品国产成人国产三级| 亚洲精品在线观看网站| 在线电影欧美成精品| 欧美优质美女网站| 成人动漫中文字幕| 国产精品夜夜爽| 久久99久久99小草精品免视看| 亚洲超碰精品一区二区| 亚洲精品视频免费看| 国产精品久久久久影院| 久久婷婷综合激情| 亚洲精品一线二线三线| 日韩午夜在线影院| 日韩一区二区三区视频在线| 欧美日韩国产综合一区二区三区 | 日本一区二区成人| 日韩午夜三级在线| 欧美私人免费视频| 日本精品免费观看高清观看| 亚洲日本va在线观看| 亚洲免费伊人电影| 中文字幕在线观看不卡视频| 久久蜜桃一区二区| 久久久久久久久久看片| 精品欧美一区二区久久| 欧美精品久久久久久久久老牛影院| 91猫先生在线| 欧美一a一片一级一片| 在线欧美日韩国产| 日本久久电影网| caoporm超碰国产精品| 色狠狠色狠狠综合| 欧美色爱综合网| 欧美日韩一区二区三区高清| 欧美高清视频在线高清观看mv色露露十八 | 欧美一区二区视频在线观看| 日韩欧美国产麻豆| 久久久欧美精品sm网站| 久久综合九色综合欧美98| 欧美一区二区三区精品| 精品国产一区二区亚洲人成毛片| 2020国产精品自拍| 日本一区二区三区在线不卡| 日韩一区在线看| 亚洲最快最全在线视频| 午夜精彩视频在线观看不卡| 美女视频免费一区| 不卡欧美aaaaa| 欧美私人免费视频| 26uuu国产日韩综合| 综合欧美一区二区三区| 天天做天天摸天天爽国产一区| 日韩精品电影一区亚洲| 国产福利精品一区| 欧美日韩中文字幕一区二区| 日韩午夜小视频| 国产视频一区在线观看| 日日噜噜夜夜狠狠视频欧美人| 精品综合久久久久久8888| av一区二区三区四区| 欧美日韩电影在线播放| 国产精品亲子伦对白| 亚洲国产精品久久久久秋霞影院| 久久99精品国产| 91精品国产综合久久香蕉的特点 | 一区二区中文字幕在线| 性久久久久久久| 国产精品一卡二|