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

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

?? bdasampl.cpp

?? VC++視頻開(kāi)發(fā)實(shí)例集錦(包括“遠(yuǎn)程視頻監(jiān)控”"語(yǔ)音識(shí)別系統(tǒng)"等13個(gè)經(jīng)典例子)
?? CPP
字號(hào):
//------------------------------------------------------------------------------
// File: Bdasampl.cpp
//
// Desc: Sample code implementing BDA graph building.
//
// Copyright (c) 2000-2002, Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------

#include "bdasampl.h"
#include "graph.h"
#include "resource.h"

#include <initguid.h>
#include <objbase.h>

// 
// NOTE: In this sample, text strings are hard-coded for 
// simplicity and for readability.  For product code, you should
// use string tables and LoadString().
//

// Global data
HWND                hwndMain=0;
HWND                g_hwndDlg=0;
HINSTANCE           hInst=0;
TCHAR               szAppName[]  = TEXT("BDASampl\0");
TCHAR               szAppTitle[] = TEXT("BDA Sample\0");

CBDAFilterGraph*    g_pfg = NULL;

// Constants
const int MAJOR_CHANNEL_LOWER_LIMIT = -1;
const int MAJOR_CHANNEL_UPPER_LIMIT = 126;
const int MINOR_CHANNEL_LOWER_LIMIT = -1;
const int MINOR_CHANNEL_UPPER_LIMIT = 126;



INT WINAPI
WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine,
    INT nCmdShow)
{
    MSG         msg={0};
    WNDCLASS    wndclass={0};
    HWND        hwnd=0;
    HACCEL      hAccel=0;

    // Save application instance handle for later use
    hInst = hInstance;

    // Initialize COM library
    HRESULT hr = CoInitializeEx (NULL, COINIT_APARTMENTTHREADED);
    if (FAILED (hr))
    {
        MessageBox(NULL,  TEXT("Failed to initialize COM library!\0"),
                   TEXT("Initialization Error\0"), MB_ICONEXCLAMATION);
        return 0;
    }

    // Register window class
    wndclass.style         = 0;
    wndclass.lpfnWndProc   = WndProc;
    wndclass.cbClsExtra    = 0;
    wndclass.cbWndExtra    = 0;
    wndclass.hInstance     = hInst;
    wndclass.hIcon         = LoadIcon(hInst, TEXT("BDASAMPLICON"));
    wndclass.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH)(COLOR_WINDOW + 2);
    wndclass.lpszMenuName  = szAppName;
    wndclass.lpszClassName = szAppName;
    RegisterClass(&wndclass);

    hwnd = CreateWindow(szAppName, szAppTitle, 
                WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, 
                200, 200, 500, 280, 
                NULL, NULL, hInst, NULL);
    ASSERT(hwnd);

    // Create the BDA filter graph and initialize its components
    g_pfg = new CBDAFilterGraph();
    ASSERT(g_pfg);

    // If the graph failed to build, don't go any further.
    if (!g_pfg)
    {
        MessageBox(hwnd, TEXT("Failed to create the filter graph!"),
                   TEXT("Initialization Error"), MB_ICONEXCLAMATION);
        return 0;
    }

    // Display main window and configure accelerators    
    ShowWindow(hwnd, nCmdShow);
    hwndMain = hwnd;

    hAccel = LoadAccelerators(hInst, MAKEINTRESOURCE(ACC_GRAPH));

    // Main message loop
    while(GetMessage(&msg, NULL, 0, 0) > 0)
    {
        if(!TranslateAccelerator(hwnd, hAccel, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    // Release the BDA components and clean up
    delete g_pfg;
    CoUninitialize ();
    
    return msg.wParam;
}


// WndProc                                                                    
LRESULT CALLBACK
WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch(message)
    {
        case WM_CREATE:
        {
            DbgInitialise (hInst);
            break;
        }

        case WM_SIZE:
        {
            if(g_pfg && g_pfg->m_fGraphBuilt)
                g_pfg->SetVideoWindow(hwndMain);
            break;
        }
        
        case WM_COMMAND:
        switch(LOWORD(wParam))
        {
            case IDM_BUILD_ATSC:
            {
                if (!g_pfg)
                    break;
                    
                if(FAILED(g_pfg->BuildGraph(ATSC)))
                {
                    ErrorMessageBox(TEXT("Could not Build the ATSC BDA FilterGraph."));
                }
                else
                {
                    g_pfg->SetVideoWindow(hwndMain);
                }
        
                HMENU hMenu = GetSubMenu(GetMenu(hwnd), 1);

                EnableMenuItem(hMenu, IDM_BUILD_ATSC, MF_GRAYED | MF_BYCOMMAND);

                EnableMenuItem(hMenu, IDM_STOP_GRAPH, 
                    (g_pfg->m_fGraphRunning) ? (MF_BYCOMMAND|MF_ENABLED) : (MF_BYCOMMAND|MF_GRAYED));

                EnableMenuItem(hMenu, IDM_SELECT_CHANNEL, 
                    (g_pfg->m_fGraphBuilt) ? (MF_BYCOMMAND|MF_ENABLED) : (MF_BYCOMMAND|MF_GRAYED));

                break;
            }
            
            case IDM_RUN_GRAPH:
            {
                if (!g_pfg)
                    break;
                    
                if(g_pfg->m_fGraphBuilt)
                {   
                    if(!g_pfg->m_fGraphRunning)
                    {
                        if(FAILED(g_pfg->RunGraph()))
                        {
                            ErrorMessageBox(TEXT("Could not play the FilterGraph."));
                        }
                    }
                }
                else
                {
                    ErrorMessageBox(TEXT("The FilterGraph is not yet built."));
                }

                break;
            }
            
            case IDM_STOP_GRAPH:
            {
                if (!g_pfg)
                    break;
                    
                if(g_pfg->m_fGraphBuilt)
                {
                    if(g_pfg->m_fGraphRunning)
                    {
                        if(FAILED(g_pfg->StopGraph()))
                        {
                            ErrorMessageBox(TEXT("Could not stop the FilterGraph,"));
                        }
                    }
                }
                else
                {
                    ErrorMessageBox(TEXT("The FilterGraph is not yet built."));
                }

                HMENU hMenu = GetSubMenu (GetMenu (hwnd), 1);
                EnableMenuItem (hMenu, IDM_SELECT_CHANNEL, MF_BYCOMMAND | MF_GRAYED);
                break;
            }
            
            case IDM_SELECT_CHANNEL:
            {
                if (!g_pfg)
                    break;
                    
                if(g_pfg->m_fGraphBuilt)
                {
                    g_hwndDlg = reinterpret_cast <HWND> ( DialogBox(
                        hInst, 
                        MAKEINTRESOURCE(IDD_SELECT_CHANNEL),
                        hwnd, 
                        reinterpret_cast<DLGPROC>(SelectChannelDlgProc)
                        ) );
                }
                else
                {
                    ErrorMessageBox(TEXT("The FilterGraph is not yet built."));
                }
                break;
            }
            
            case IDM_ABOUT:
            {
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT), hwnd, 
                          reinterpret_cast<DLGPROC>(AboutDlgProc));
                break;
            }
            
            case IDM_EXIT:
            {
                PostMessage(hwnd, WM_CLOSE, 0, 0);
                break;
            }
            
        default:
            break;
        }

    case WM_INITMENU:
        if (!g_pfg)
            break;
                    
        if(g_pfg->m_fGraphFailure)
        {
            EnableMenuItem((HMENU)wParam, IDM_BUILD_ATSC, MF_BYCOMMAND| MF_GRAYED);
            EnableMenuItem((HMENU)wParam, IDM_RUN_GRAPH, MF_BYCOMMAND| MF_GRAYED);
            EnableMenuItem((HMENU)wParam, IDM_STOP_GRAPH, MF_BYCOMMAND| MF_GRAYED);
        }
        else
        {
            EnableMenuItem((HMENU)wParam, IDM_RUN_GRAPH, 
                g_pfg->m_fGraphRunning ? MF_BYCOMMAND|MF_GRAYED : MF_BYCOMMAND|MF_ENABLED);

            EnableMenuItem((HMENU)wParam, IDM_BUILD_ATSC, 
                g_pfg->m_fGraphBuilt ? MF_BYCOMMAND|MF_GRAYED : MF_BYCOMMAND|MF_ENABLED);
        
            // we can stop viewing if it's currently viewing
            EnableMenuItem((HMENU)wParam, IDM_STOP_GRAPH, 
                (g_pfg->m_fGraphRunning) ? MF_BYCOMMAND|MF_ENABLED : MF_BYCOMMAND|MF_GRAYED);
        }

        EnableMenuItem((HMENU)wParam, IDM_SELECT_CHANNEL, 
            g_pfg->m_fGraphBuilt ? MF_BYCOMMAND|MF_ENABLED : MF_BYCOMMAND|MF_GRAYED);

        break;

    case WM_CLOSE:
        DbgTerminate();
        PostQuitMessage(0);
        break;

    default:
        break;
    }

    return DefWindowProc(hwnd, message, wParam, lParam);
}


// SelectChannelDlgProc
// Dialog Procedure for the "Select Channel" dialog box.
//                                                                              
BOOL CALLBACK
SelectChannelDlgProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    LONG    lChannelMaj, lChannelMin, lChannelPhysical;
    BOOL    bRet = FALSE;
    
    if (!g_pfg)
        return FALSE;;    

    lChannelMaj       = g_pfg->GetMajorChannel ();
    lChannelMin       = g_pfg->GetMinorChannel ();
    lChannelPhysical  = g_pfg->GetPhysicalChannel ();

    switch(message)
    {
    case WM_INITDIALOG:
        {
            //refresh the controls
            SetDlgItemInt (hDlg, IDC_MAJOR_CHANNEL, lChannelMaj, TRUE);
            SetDlgItemInt (hDlg, IDC_MINOR_CHANNEL, lChannelMin, TRUE);
            SetDlgItemInt (hDlg, IDC_PHYSICAL_CHANNEL, lChannelPhysical, TRUE);

            //set the spin controls
            HWND hWndSpin = GetDlgItem (hDlg, IDC_SPIN_MAJOR);
            ::SendMessage(
                hWndSpin, 
                UDM_SETRANGE32, 
                static_cast <WPARAM> (MINOR_CHANNEL_LOWER_LIMIT),
                static_cast <LPARAM> (MAJOR_CHANNEL_UPPER_LIMIT)
                ); 

            hWndSpin = GetDlgItem (hDlg, IDC_SPIN_MINOR);
            ::SendMessage(
                hWndSpin, 
                UDM_SETRANGE32, 
                static_cast <WPARAM> (MINOR_CHANNEL_LOWER_LIMIT), 
                static_cast <LPARAM> (MINOR_CHANNEL_UPPER_LIMIT)
                ); 

            hWndSpin = GetDlgItem (hDlg, IDC_SPIN_PHYSICAL);
            ::SendMessage(
                hWndSpin, 
                UDM_SETRANGE32, 
                static_cast <WPARAM> (MINOR_CHANNEL_LOWER_LIMIT), 
                static_cast <LPARAM> (MINOR_CHANNEL_UPPER_LIMIT)
                );
            break;
        }

    case WM_DESTROY:
        {
            EndDialog (hDlg, 0);
            return TRUE;
        }

    case WM_COMMAND:
        {
            switch(LOWORD(wParam))
            {
            case IDOK:
                {
                    lChannelMaj = (LONG) GetDlgItemInt(hDlg, IDC_MAJOR_CHANNEL, &bRet, TRUE);
                    lChannelMin = (LONG) GetDlgItemInt(hDlg, IDC_MINOR_CHANNEL, &bRet, TRUE);
                    lChannelPhysical = (LONG) GetDlgItemInt(hDlg, IDC_PHYSICAL_CHANNEL, &bRet, TRUE);
                    g_pfg->ChangeChannel (lChannelPhysical, lChannelMaj, lChannelMin);
                    EndDialog (hDlg, 0);
                    break;
                }
            case IDC_ENTER:
                {
                    lChannelMaj = (LONG) GetDlgItemInt(hDlg, IDC_MAJOR_CHANNEL, &bRet, TRUE);
                    lChannelMin = (LONG) GetDlgItemInt(hDlg, IDC_MINOR_CHANNEL, &bRet, TRUE);
                    lChannelPhysical = (LONG) GetDlgItemInt(hDlg, IDC_PHYSICAL_CHANNEL, &bRet, TRUE);
                    g_pfg->ChangeChannel (lChannelPhysical, lChannelMaj, lChannelMin);
                    break;
                }
            case IDCANCEL:
                {
                    EndDialog (hDlg, 0);
                    break;
                }
            }
            break;
        }
    }
    return FALSE;
}


// AboutDlgProc
//
// Dialog Procedure for the "about" dialog box.
//
BOOL CALLBACK 
AboutDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
    switch(msg) 
    {
        case WM_COMMAND:
            EndDialog(hwnd, TRUE);
            return TRUE;
    
        case WM_INITDIALOG:
            return TRUE;
    }
    return FALSE;
}


// ErrorMessageBox
//
// Opens a Message box with a error message in it.  The user can     
// select the OK button to continue.
//
VOID
ErrorMessageBox(LPTSTR szFormat, ...)
{
    static TCHAR szBuffer[2048];  // Large buffer
    const size_t NUMCHARS = sizeof(szBuffer) / sizeof(szBuffer[0]);
    const int LASTCHAR = NUMCHARS - 1;

    // Format the input string
    va_list pArgs;
    va_start(pArgs, szFormat);

    // Use a bounded buffer size to prevent buffer overruns.  Limit count to
    // character size minus one to allow for a NULL terminating character.
    _vsntprintf(szBuffer, NUMCHARS - 1, szFormat, pArgs);
    va_end(pArgs);

    // Ensure that the formatted string is NULL-terminated
    szBuffer[LASTCHAR] = TEXT('\0');

    // Display a message box with the formatted string
    MessageBox(hwndMain, szBuffer, TEXT("Error!\0"), MB_OK|MB_ICONEXCLAMATION|MB_TASKMODAL);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品在线视频| 欧美一级黄色大片| 欧洲国内综合视频| 欧美丝袜第三区| 日韩视频免费观看高清完整版在线观看 | 欧洲激情一区二区| 欧美在线播放高清精品| 91精品久久久久久久91蜜桃| 91精品国产一区二区三区蜜臀| 欧美电影一区二区三区| 欧美大胆人体bbbb| 国产欧美精品区一区二区三区| 国产精品动漫网站| 亚洲国产精品人人做人人爽| 亚洲精品videosex极品| 水蜜桃久久夜色精品一区的特点| 看片网站欧美日韩| 国产精品一线二线三线| 99精品1区2区| 精品视频全国免费看| 日韩亚洲欧美在线观看| 国产欧美日韩亚州综合| 一区二区在线观看av| 亚洲国产cao| 久88久久88久久久| 99精品在线免费| 欧美日韩亚洲综合一区二区三区| 欧美一区二区观看视频| 国产蜜臀av在线一区二区三区| 亚洲美女屁股眼交3| 日本成人在线不卡视频| 91在线视频免费观看| 精品国产髙清在线看国产毛片| 一区二区三区在线不卡| 成人晚上爱看视频| 欧美刺激午夜性久久久久久久| 亚洲免费在线播放| 国产成人av一区二区三区在线 | 午夜日韩在线电影| 成人午夜免费av| 精品奇米国产一区二区三区| 亚洲福利视频导航| 色天天综合色天天久久| 久久久久久亚洲综合影院红桃 | 欧美成人女星排名| 午夜久久福利影院| 色综合网站在线| 国产精品久久久久天堂| 国产一区999| 欧美成人aa大片| 日韩成人免费看| 欧美欧美欧美欧美首页| 亚洲激情欧美激情| 91丝袜高跟美女视频| 中文字幕av一区二区三区免费看| 激情小说亚洲一区| 日韩三级视频在线看| 日韩极品在线观看| 欧美偷拍一区二区| 亚洲一区二区三区小说| 色噜噜狠狠色综合欧洲selulu| 国产精品二区一区二区aⅴ污介绍| 国产成人av福利| 国产亚洲综合av| 国产美女主播视频一区| 亚洲精品在线电影| 韩国一区二区在线观看| 精品国产伦一区二区三区观看方式 | 国产中文一区二区三区| 精品国产髙清在线看国产毛片| 美女诱惑一区二区| 日韩一级高清毛片| 国产尤物一区二区在线| 国产午夜精品久久久久久免费视 | 久久久国产午夜精品| 国产一区在线视频| 久久精品亚洲精品国产欧美| 国产a区久久久| 中文字幕日本不卡| 91国在线观看| 午夜在线电影亚洲一区| 在线成人av网站| 蜜桃视频在线观看一区| 精品国产青草久久久久福利| 国产成人一级电影| 国产精品久久精品日日| 一本一道波多野结衣一区二区 | 日韩欧美精品三级| 激情av综合网| 中文乱码免费一区二区| 欧美日韩在线播放一区| 五月综合激情网| 日韩一级大片在线| 国产成人av一区| 亚洲视频在线一区| 欧美日韩综合不卡| 奇米精品一区二区三区在线观看| 日韩三级av在线播放| 国产69精品久久99不卡| 亚洲免费观看高清完整版在线观看| 91福利社在线观看| 蜜桃久久精品一区二区| 久久久久久麻豆| 色综合色狠狠综合色| 亚洲成av人片在www色猫咪| 精品久久久久久最新网址| 成人精品国产免费网站| 亚洲一区免费观看| 欧美一区二区大片| 福利一区福利二区| 亚洲国产成人av网| wwww国产精品欧美| 色综合中文字幕国产 | 欧美日韩1区2区| 激情另类小说区图片区视频区| 国产精品国产三级国产| 精品污污网站免费看| 国产一区美女在线| 一区二区国产视频| 久久综合久久综合九色| 91视频在线观看免费| 蜜乳av一区二区三区| 中文字幕在线一区二区三区| 欧美色中文字幕| 国产精品一区一区| 天天综合天天综合色| 国产精品日韩成人| 69堂成人精品免费视频| 91片黄在线观看| 开心九九激情九九欧美日韩精美视频电影 | 亚洲一区二区三区四区的| 久久综合色播五月| 欧美伊人久久久久久午夜久久久久| 久久99精品国产.久久久久久| 一区二区日韩av| 久久色.com| 天堂影院一区二区| 国产精品久久久久久久岛一牛影视| 91精品久久久久久久99蜜桃| 91亚洲精华国产精华精华液| 狠狠色综合播放一区二区| 亚洲国产精品麻豆| 一区在线播放视频| 久久色.com| 欧美一区二区三区在线视频| 在线一区二区三区做爰视频网站| 国产91丝袜在线18| 久久99热这里只有精品| 亚洲国产cao| 亚洲色图在线视频| 国产欧美一区二区精品性色| 欧美成人精品二区三区99精品| 欧美日韩情趣电影| 色综合久久久久| 99久久伊人网影院| 国产成人免费视频一区| 精品午夜久久福利影院| 日韩电影在线一区二区三区| 亚洲国产另类精品专区| 亚洲精品免费在线观看| 国产精品超碰97尤物18| 国产欧美日韩麻豆91| 久久久久久久久久久久久女国产乱 | 久久夜色精品国产欧美乱极品| 在线不卡的av| 欧美视频一区二区在线观看| 91热门视频在线观看| 99久久久久久99| 成人av网站在线观看免费| 国产精品一色哟哟哟| 国产精品99久久久久久久vr| 国产一区二区美女| 国产精品66部| 国产麻豆一精品一av一免费 | 日韩午夜在线影院| 欧美一区日韩一区| 4hu四虎永久在线影院成人| 欧美日韩高清一区| 欧美精选一区二区| 在线播放国产精品二区一二区四区| 欧美色网站导航| 欧美日韩精品是欧美日韩精品| 欧美日韩视频一区二区| 欧美精品一级二级三级| 欧美一级电影网站| 欧美videos中文字幕| 欧美一卡2卡三卡4卡5免费| 日韩亚洲欧美在线| 亚洲精品在线三区| 欧美韩国日本一区| 成人欧美一区二区三区白人| 自拍偷拍国产精品| 亚洲一区二区三区爽爽爽爽爽| 午夜欧美在线一二页| 美国十次了思思久久精品导航| 国产真实乱对白精彩久久| 国产v综合v亚洲欧| 91女厕偷拍女厕偷拍高清| 欧美日韩在线播放三区四区| 日韩欧美国产一区二区在线播放 |