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

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

?? videoctl.cpp

?? 用DirectX制作高級動畫-[Advanced.Animation.with.DirectX]
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//------------------------------------------------------------------------------
// File: VideoCtl.cpp
//
// Desc: DirectShow base classes.
//
// Copyright (c) 1992-2002 Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------


#include <streams.h>
#include "ddmm.h"

// Load a string from the resource file string table. The buffer must be at
// least STR_MAX_LENGTH bytes. The easiest way to use this is to declare a
// buffer in the property page class and use it for all string loading. It
// cannot be static as multiple property pages may be active simultaneously

TCHAR *WINAPI StringFromResource(TCHAR *pBuffer, int iResourceID)
{
    if (LoadString(g_hInst,iResourceID,pBuffer,STR_MAX_LENGTH) == 0) {
        return TEXT("");
    }
    return pBuffer;
}

#ifdef UNICODE
char *WINAPI StringFromResource(char *pBuffer, int iResourceID)
{
    if (LoadStringA(g_hInst,iResourceID,pBuffer,STR_MAX_LENGTH) == 0) {
        return "";
    }
    return pBuffer;
}
#endif



// Property pages typically are called through their OLE interfaces. These
// use UNICODE strings regardless of how the binary is built. So when we
// load strings from the resource file we sometimes want to convert them
// to UNICODE. This method is passed the target UNICODE buffer and does a
// convert after loading the string (if built UNICODE this is not needed)
// On WinNT we can explicitly call LoadStringW which saves two conversions

#ifndef UNICODE

WCHAR * WINAPI WideStringFromResource(WCHAR *pBuffer, int iResourceID)
{
    *pBuffer = 0;

    if (g_amPlatform == VER_PLATFORM_WIN32_NT) {
	LoadStringW(g_hInst,iResourceID,pBuffer,STR_MAX_LENGTH);
    } else {

	CHAR szBuffer[STR_MAX_LENGTH];
	DWORD dwStringLength = LoadString(g_hInst,iResourceID,szBuffer,STR_MAX_LENGTH);
	// if we loaded a string convert it to wide characters, ensuring
	// that we also null terminate the result.
	if (dwStringLength++) {
	    MultiByteToWideChar(CP_ACP,0,szBuffer,dwStringLength,pBuffer,STR_MAX_LENGTH);
	}
    }
    return pBuffer;
}

#endif


// Helper function to calculate the size of the dialog

BOOL WINAPI GetDialogSize(int iResourceID,
                          DLGPROC pDlgProc,
                          LPARAM lParam,
                          SIZE *pResult)
{
    RECT rc;
    HWND hwnd;

    // Create a temporary property page

    hwnd = CreateDialogParam(g_hInst,
                             MAKEINTRESOURCE(iResourceID),
                             GetDesktopWindow(),
                             pDlgProc,
                             lParam);
    if (hwnd == NULL) {
        return FALSE;
    }

    GetWindowRect(hwnd, &rc);
    pResult->cx = rc.right - rc.left;
    pResult->cy = rc.bottom - rc.top;

    DestroyWindow(hwnd);
    return TRUE;
}


// Class that aggregates on the IDirectDraw interface. Although DirectDraw
// has the ability in its interfaces to be aggregated they're not currently
// implemented. This makes it difficult for various parts of Quartz that want
// to aggregate these interfaces. In particular the video renderer passes out
// media samples that expose IDirectDraw and IDirectDrawSurface. The filter
// graph manager also exposes IDirectDraw as a plug in distributor. For these
// objects we provide these aggregation classes that republish the interfaces

STDMETHODIMP CAggDirectDraw::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    ASSERT(m_pDirectDraw);

    // Do we have this interface

    if (riid == IID_IDirectDraw) {
        return GetInterface((IDirectDraw *)this,ppv);
    } else {
        return CUnknown::NonDelegatingQueryInterface(riid,ppv);
    }
}


STDMETHODIMP CAggDirectDraw::Compact()
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->Compact();
}


STDMETHODIMP CAggDirectDraw::CreateClipper(DWORD dwFlags,LPDIRECTDRAWCLIPPER *lplpDDClipper,IUnknown *pUnkOuter)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->CreateClipper(dwFlags,lplpDDClipper,pUnkOuter);
}


STDMETHODIMP CAggDirectDraw::CreatePalette(DWORD dwFlags,LPPALETTEENTRY lpColorTable,LPDIRECTDRAWPALETTE *lplpDDPalette,IUnknown *pUnkOuter)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->CreatePalette(dwFlags,lpColorTable,lplpDDPalette,pUnkOuter);
}


STDMETHODIMP CAggDirectDraw::CreateSurface(LPDDSURFACEDESC lpDDSurfaceDesc,LPDIRECTDRAWSURFACE *lplpDDSurface,IUnknown *pUnkOuter)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->CreateSurface(lpDDSurfaceDesc,lplpDDSurface,pUnkOuter);
}


STDMETHODIMP CAggDirectDraw::DuplicateSurface(LPDIRECTDRAWSURFACE lpDDSurface,LPDIRECTDRAWSURFACE *lplpDupDDSurface)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->DuplicateSurface(lpDDSurface,lplpDupDDSurface);
}


STDMETHODIMP CAggDirectDraw::EnumDisplayModes(DWORD dwSurfaceDescCount,LPDDSURFACEDESC lplpDDSurfaceDescList,LPVOID lpContext,LPDDENUMMODESCALLBACK lpEnumCallback)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->EnumDisplayModes(dwSurfaceDescCount,lplpDDSurfaceDescList,lpContext,lpEnumCallback);
}


STDMETHODIMP CAggDirectDraw::EnumSurfaces(DWORD dwFlags,LPDDSURFACEDESC lpDDSD,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumCallback)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->EnumSurfaces(dwFlags,lpDDSD,lpContext,lpEnumCallback);
}


STDMETHODIMP CAggDirectDraw::FlipToGDISurface()
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->FlipToGDISurface();
}


STDMETHODIMP CAggDirectDraw::GetCaps(LPDDCAPS lpDDDriverCaps,LPDDCAPS lpDDHELCaps)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetCaps(lpDDDriverCaps,lpDDHELCaps);
}


STDMETHODIMP CAggDirectDraw::GetDisplayMode(LPDDSURFACEDESC lpDDSurfaceDesc)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetDisplayMode(lpDDSurfaceDesc);
}


STDMETHODIMP CAggDirectDraw::GetFourCCCodes(LPDWORD lpNumCodes,LPDWORD lpCodes)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetFourCCCodes(lpNumCodes,lpCodes);
}


STDMETHODIMP CAggDirectDraw::GetGDISurface(LPDIRECTDRAWSURFACE *lplpGDIDDSurface)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetGDISurface(lplpGDIDDSurface);
}


STDMETHODIMP CAggDirectDraw::GetMonitorFrequency(LPDWORD lpdwFrequency)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetMonitorFrequency(lpdwFrequency);
}


STDMETHODIMP CAggDirectDraw::GetScanLine(LPDWORD lpdwScanLine)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetScanLine(lpdwScanLine);
}


STDMETHODIMP CAggDirectDraw::GetVerticalBlankStatus(LPBOOL lpblsInVB)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->GetVerticalBlankStatus(lpblsInVB);
}


STDMETHODIMP CAggDirectDraw::Initialize(GUID *lpGUID)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->Initialize(lpGUID);
}


STDMETHODIMP CAggDirectDraw::RestoreDisplayMode()
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->RestoreDisplayMode();
}


STDMETHODIMP CAggDirectDraw::SetCooperativeLevel(HWND hWnd,DWORD dwFlags)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->SetCooperativeLevel(hWnd,dwFlags);
}


STDMETHODIMP CAggDirectDraw::SetDisplayMode(DWORD dwWidth,DWORD dwHeight,DWORD dwBpp)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->SetDisplayMode(dwWidth,dwHeight,dwBpp);
}


STDMETHODIMP CAggDirectDraw::WaitForVerticalBlank(DWORD dwFlags,HANDLE hEvent)
{
    ASSERT(m_pDirectDraw);
    return m_pDirectDraw->WaitForVerticalBlank(dwFlags,hEvent);
}


// Class that aggregates an IDirectDrawSurface interface. Although DirectDraw
// has the ability in its interfaces to be aggregated they're not currently
// implemented. This makes it difficult for various parts of Quartz that want
// to aggregate these interfaces. In particular the video renderer passes out
// media samples that expose IDirectDraw and IDirectDrawSurface. The filter
// graph manager also exposes IDirectDraw as a plug in distributor. For these
// objects we provide these aggregation classes that republish the interfaces

STDMETHODIMP CAggDrawSurface::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    ASSERT(m_pDirectDrawSurface);

    // Do we have this interface

    if (riid == IID_IDirectDrawSurface) {
        return GetInterface((IDirectDrawSurface *)this,ppv);
    } else {
        return CUnknown::NonDelegatingQueryInterface(riid,ppv);
    }
}


STDMETHODIMP CAggDrawSurface::AddAttachedSurface(LPDIRECTDRAWSURFACE lpDDSAttachedSurface)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->AddAttachedSurface(lpDDSAttachedSurface);
}


STDMETHODIMP CAggDrawSurface::AddOverlayDirtyRect(LPRECT lpRect)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->AddOverlayDirtyRect(lpRect);
}


STDMETHODIMP CAggDrawSurface::Blt(LPRECT lpDestRect,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwFlags,LPDDBLTFX lpDDBltFx)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->Blt(lpDestRect,lpDDSrcSurface,lpSrcRect,dwFlags,lpDDBltFx);
}


STDMETHODIMP CAggDrawSurface::BltBatch(LPDDBLTBATCH lpDDBltBatch,DWORD dwCount,DWORD dwFlags)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->BltBatch(lpDDBltBatch,dwCount,dwFlags);
}


STDMETHODIMP CAggDrawSurface::BltFast(DWORD dwX,DWORD dwY,LPDIRECTDRAWSURFACE lpDDSrcSurface,LPRECT lpSrcRect,DWORD dwTrans)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->BltFast(dwX,dwY,lpDDSrcSurface,lpSrcRect,dwTrans);
}


STDMETHODIMP CAggDrawSurface::DeleteAttachedSurface(DWORD dwFlags,LPDIRECTDRAWSURFACE lpDDSAttachedSurface)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->DeleteAttachedSurface(dwFlags,lpDDSAttachedSurface);
}


STDMETHODIMP CAggDrawSurface::EnumAttachedSurfaces(LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpEnumSurfacesCallback)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->EnumAttachedSurfaces(lpContext,lpEnumSurfacesCallback);
}


STDMETHODIMP CAggDrawSurface::EnumOverlayZOrders(DWORD dwFlags,LPVOID lpContext,LPDDENUMSURFACESCALLBACK lpfnCallback)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->EnumOverlayZOrders(dwFlags,lpContext,lpfnCallback);
}


STDMETHODIMP CAggDrawSurface::Flip(LPDIRECTDRAWSURFACE lpDDSurfaceTargetOverride,DWORD dwFlags)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->Flip(lpDDSurfaceTargetOverride,dwFlags);
}


STDMETHODIMP CAggDrawSurface::GetAttachedSurface(LPDDSCAPS lpDDSCaps,LPDIRECTDRAWSURFACE *lplpDDAttachedSurface)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->GetAttachedSurface(lpDDSCaps,lplpDDAttachedSurface);
}


STDMETHODIMP CAggDrawSurface::GetBltStatus(DWORD dwFlags)
{
    ASSERT(m_pDirectDrawSurface);
    return m_pDirectDrawSurface->GetBltStatus(dwFlags);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品成人一区二区三区| 亚洲国产日韩a在线播放性色| 国产精品第13页| 亚洲五码中文字幕| 国产成人一级电影| 欧美系列日韩一区| 欧美激情一区二区三区全黄| 亚洲一级二级在线| 成人激情综合网站| 欧美大片在线观看一区二区| 中文字幕一区免费在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 91久久免费观看| 久久久亚洲国产美女国产盗摄 | 欧美在线不卡视频| 欧美精品一区二区在线观看| 亚洲国产一区二区视频| 成人涩涩免费视频| 久久这里只精品最新地址| 亚洲午夜久久久久| 色综合久久久网| 国产无人区一区二区三区| 日韩黄色免费电影| 欧美视频第二页| 亚洲人成电影网站色mp4| 风间由美一区二区av101| 精品欧美久久久| 日本亚洲免费观看| 欧美日韩一本到| 亚洲精品一卡二卡| 一本久久综合亚洲鲁鲁五月天| 国产日韩欧美激情| 国产在线麻豆精品观看| 欧美一级高清大全免费观看| 亚洲电影在线播放| 欧洲日韩一区二区三区| 18涩涩午夜精品.www| 成人国产精品免费观看动漫| 欧美激情一区二区三区不卡 | 久久婷婷国产综合精品青草| 奇米一区二区三区| 日韩欧美黄色影院| 九一久久久久久| 亚洲精品一区二区三区精华液| 免费久久99精品国产| 欧美一区二区三区喷汁尤物| 日日夜夜一区二区| 日韩欧美一区二区久久婷婷| 日本不卡视频一二三区| 日韩欧美激情一区| 国产乱子伦视频一区二区三区 | 99久久综合国产精品| 国产精品传媒入口麻豆| 91丨九色丨黑人外教| 亚洲欧美日韩国产手机在线| 在线视频一区二区三区| 午夜精品成人在线视频| 91麻豆精品国产| 久久99日本精品| 国产欧美精品一区| 91黄色免费观看| 日本中文字幕一区二区视频| 欧美精品一区二区三区视频| 国产精品白丝jk白祙喷水网站| 国产精品系列在线| 欧洲生活片亚洲生活在线观看| 午夜视黄欧洲亚洲| 精品国产电影一区二区| 99这里只有精品| 午夜欧美大尺度福利影院在线看| 日韩女优制服丝袜电影| 成人激情综合网站| 午夜精品久久久久影视| 亚洲精品在线网站| 91麻豆国产精品久久| 轻轻草成人在线| 国产精品理论片| 欧美日韩国产123区| 国产精品69毛片高清亚洲| 亚洲欧美日韩小说| 久久综合色之久久综合| 91国内精品野花午夜精品| 激情亚洲综合在线| 亚洲影院在线观看| 国产欧美日韩综合| 91精品国产黑色紧身裤美女| 成年人国产精品| 久久91精品国产91久久小草| 国产精品成人一区二区艾草| 日韩小视频在线观看专区| av电影在线不卡| 精品一区二区三区免费毛片爱| 亚洲免费观看在线观看| 久久久五月婷婷| 欧美高清视频www夜色资源网| 风间由美一区二区av101| 久色婷婷小香蕉久久| 亚洲精品写真福利| 欧美国产精品专区| 欧美成人国产一区二区| 欧美日韩高清一区二区不卡 | 久久99精品国产麻豆婷婷| 夜夜揉揉日日人人青青一国产精品| 精品久久久久久久久久久久久久久| 欧美在线视频全部完| 99热精品一区二区| 国产·精品毛片| 精品中文字幕一区二区小辣椒| 亚洲成人综合在线| 亚洲最大成人网4388xx| 亚洲欧美日韩国产综合| 亚洲欧洲日产国码二区| 日本一区二区电影| 国产亚洲精品福利| 久久久久九九视频| 久久色.com| 国产婷婷色一区二区三区四区| 日韩免费在线观看| 日韩欧美aaaaaa| 2023国产精华国产精品| 欧美岛国在线观看| 欧美精品一区二区精品网| 欧美刺激脚交jootjob| 日韩一区二区三区在线观看| 91精品国产综合久久福利软件| 7777精品伊人久久久大香线蕉超级流畅 | 国产三级三级三级精品8ⅰ区| 26uuu精品一区二区三区四区在线| 日韩一区二区在线免费观看| 日韩精品一区二区三区视频在线观看 | 久久激情五月婷婷| 久草在线在线精品观看| 国产麻豆9l精品三级站| 成人黄色综合网站| 99久久er热在这里只有精品15| 99久久精品久久久久久清纯| 色狠狠综合天天综合综合| 欧美午夜不卡视频| 91.com视频| 国产日本欧洲亚洲| 亚洲蜜臀av乱码久久精品| 亚洲va国产va欧美va观看| 蜜桃视频一区二区| 国产成a人亚洲| 色婷婷亚洲综合| 欧美丰满一区二区免费视频| 欧美mv日韩mv国产| 国产精品护士白丝一区av| 亚洲一区二区欧美激情| 免费成人在线网站| 成人一区在线看| 欧美视频一区在线观看| 精品国产免费一区二区三区香蕉| 国产精品网站在线播放| 亚洲综合男人的天堂| 麻豆精品新av中文字幕| 国产不卡高清在线观看视频| 欧美亚洲尤物久久| 精品久久一区二区三区| 亚洲欧美区自拍先锋| 美女在线观看视频一区二区| 成人短视频下载| 欧美一区二区三区精品| 国产精品成人一区二区艾草| 免费观看久久久4p| 99re这里只有精品首页| 欧美电影免费提供在线观看| 中文字幕一区二区三区视频| 男男视频亚洲欧美| 在线影院国内精品| 国产午夜精品久久久久久免费视 | 国产女主播一区| 日韩和欧美一区二区| av中文字幕亚洲| 欧美精品一区二区在线播放| 亚洲高清免费一级二级三级| 丰满白嫩尤物一区二区| 欧美一区三区二区| 亚洲一区二区三区四区在线| 国产精品一区二区在线看| 欧美日韩不卡在线| 亚洲精品国产一区二区精华液 | 17c精品麻豆一区二区免费| 奇米精品一区二区三区在线观看| 99国产麻豆精品| 久久精品一区二区三区不卡牛牛| 日韩 欧美一区二区三区| 99精品黄色片免费大全| 久久久99久久| 久久99精品久久久久久动态图| 在线播放中文一区| 一区二区三区蜜桃| 色综合欧美在线| 日韩毛片精品高清免费| 成人性生交大片免费看视频在线| 精品国产1区2区3区| 麻豆精品久久久| 欧美一区二区三区四区视频| 天涯成人国产亚洲精品一区av| 日本韩国欧美在线|