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

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

?? bdasampl.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? CPP
字號:
//------------------------------------------------------------------------------
// 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);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩亚洲欧美成人一区| 欧美日韩中文国产| 亚洲综合免费观看高清完整版 | 欧美中文字幕久久| 色综合天天综合网天天看片| av午夜一区麻豆| 国产成人免费在线观看不卡| 国产成人8x视频一区二区| 国产美女久久久久| 国产精品自拍av| 成人91在线观看| 色婷婷国产精品综合在线观看| av爱爱亚洲一区| 在线观看日韩国产| 欧美群妇大交群中文字幕| 欧美一区二区私人影院日本| 日韩欧美一级二级| 久久新电视剧免费观看| 国产精品乱人伦一区二区| 亚洲另类在线制服丝袜| 午夜国产不卡在线观看视频| 免费精品视频最新在线| 国产91精品一区二区麻豆网站 | 日韩一区二区三区三四区视频在线观看| 欧美日韩精品一区二区三区 | 99天天综合性| 欧美在线综合视频| 日韩欧美亚洲国产精品字幕久久久| 久久夜色精品一区| 亚洲一线二线三线久久久| 毛片av中文字幕一区二区| 国产激情一区二区三区四区| 在线欧美日韩国产| 2024国产精品| 亚洲电影一区二区三区| 国产成人午夜高潮毛片| 欧美系列日韩一区| 欧美国产欧美综合| 秋霞国产午夜精品免费视频 | 欧美丝袜丝交足nylons图片| 在线影院国内精品| 日韩免费高清av| 国产精品白丝在线| 三级不卡在线观看| 成人亚洲精品久久久久软件| 5858s免费视频成人| 国产精品久久午夜夜伦鲁鲁| 蜜桃久久精品一区二区| 欧美怡红院视频| 国产精品麻豆久久久| 精品一区二区三区的国产在线播放 | 精品国精品国产尤物美女| 国产精品美女www爽爽爽| 麻豆一区二区三区| 欧美高清dvd| 亚洲人成网站在线| 国产91精品露脸国语对白| 56国语精品自产拍在线观看| 一区二区视频在线看| 国产91在线观看丝袜| 久久综合久久久久88| 婷婷久久综合九色综合绿巨人| 91视频国产资源| 中文字幕第一页久久| 国产一区激情在线| 欧美一区二区三区播放老司机| 亚洲综合激情另类小说区| 97精品电影院| 亚洲私人黄色宅男| 99re视频精品| 自拍视频在线观看一区二区| 大陆成人av片| 中文字幕av资源一区| 国产在线精品一区二区三区不卡| 欧美一卡2卡3卡4卡| 日韩电影在线免费看| 911精品产国品一二三产区| 天堂成人免费av电影一区| 欧美一区二区三区视频在线观看| 亚洲五月六月丁香激情| 欧美精品第一页| 美女视频免费一区| 久久综合色鬼综合色| 国产麻豆视频一区| 欧美激情一区二区三区蜜桃视频| 国产99久久久国产精品潘金| 国产精品入口麻豆原神| 波多野结衣中文字幕一区二区三区| 中文字幕亚洲成人| 91久久国产综合久久| 亚洲成a人v欧美综合天堂| 日韩午夜av一区| 国产91精品精华液一区二区三区| 中文字幕国产精品一区二区| 日本精品视频一区二区三区| 五月激情综合色| 久久久99久久精品欧美| 99久久国产综合精品色伊| 一区二区三区日韩欧美| 欧美一级精品在线| 成人三级伦理片| 亚洲123区在线观看| 久久色在线观看| 色先锋久久av资源部| 久久精品国产亚洲aⅴ| 国产精品视频你懂的| 欧美在线色视频| 极品瑜伽女神91| 亚洲美女区一区| 欧美精品一区二区在线播放| 99视频国产精品| 毛片基地黄久久久久久天堂| 国产精品天干天干在观线| 欧美老肥妇做.爰bbww视频| 国产精品18久久久久久久久| 亚洲一区二区三区四区五区中文| 欧美成人三级在线| 欧美亚日韩国产aⅴ精品中极品| 久久99精品久久久久婷婷| 一区二区三区高清在线| 久久婷婷成人综合色| 欧美日韩成人高清| 国产精品亚洲第一| 人妖欧美一区二区| 樱桃视频在线观看一区| 国产女主播一区| 亚洲精品一区二区三区在线观看| 99久久精品免费看国产| 国产一区 二区 三区一级| 日韩精品一二三四| 亚洲国产综合在线| 国产精品久久福利| 久久综合久久综合亚洲| 91精品国产日韩91久久久久久| 99视频精品全部免费在线| 国产成人精品网址| 久久激五月天综合精品| 日韩不卡一区二区三区| 亚洲午夜精品17c| 亚洲国产一二三| 亚洲精品日韩一| 日本一区免费视频| 国产丝袜在线精品| 久久久久久久av麻豆果冻| 日韩免费观看2025年上映的电影 | 在线日韩av片| 色悠久久久久综合欧美99| 97久久精品人人做人人爽| 成人免费看片app下载| 国产91综合一区在线观看| 国产麻豆精品视频| 国产制服丝袜一区| 国产专区欧美精品| 国产激情视频一区二区三区欧美 | 一道本成人在线| 色婷婷狠狠综合| 欧美日韩精品欧美日韩精品一| 欧美色视频一区| 欧美一级搡bbbb搡bbbb| 欧美电影免费观看高清完整版在线观看| 欧美日韩国产天堂| 欧美老女人在线| 精品国产自在久精品国产| 久久综合久久鬼色| 国产精品久久久久影院| 一区二区三区四区不卡视频| 五月综合激情网| 日日噜噜夜夜狠狠视频欧美人| 日本亚洲三级在线| 国产福利不卡视频| 风间由美性色一区二区三区| 94色蜜桃网一区二区三区| 欧美性色黄大片手机版| 日韩欧美资源站| 国产精品萝li| 亚洲成人中文在线| 狠狠色伊人亚洲综合成人| 成人av在线播放网站| 欧美亚洲高清一区二区三区不卡| 日韩欧美在线网站| 中文字幕一区二区三区不卡| 亚洲一级片在线观看| 久久se这里有精品| 91视频精品在这里| 精品少妇一区二区三区在线播放| 国产精品系列在线| 日韩不卡免费视频| 成人福利在线看| 欧美一区午夜精品| 国产精品第四页| 奇米综合一区二区三区精品视频| 成人免费视频国产在线观看| 欧美日韩一区三区| 国产欧美一区二区精品仙草咪| 亚洲成人精品在线观看| 成人黄色综合网站| 精品免费视频.| 婷婷综合另类小说色区| 9人人澡人人爽人人精品| 欧美大度的电影原声|