為何我的CoCreateInstance無法建立物件 |
尚未結案
|
LeonSun
一般會員 發表:5 回覆:9 積分:2 註冊:2003-10-17 發送簡訊給我 |
請問各位高手,我想研究使用DirectShow的方法而參考了站上許多範例,我Download了DirectX9,也Cpoy all files from subdirectory 'Include' into C++ Builder6's 'Include', overwrite if exists。也將剛剛
複製'Include'所有的.h檔案加入了以下這兩行字串:
#pragma option push -b -a8 -pc -A-/*P_O_Push*/
#pragma option pop /*P_O_Pop*/
也加入了strmiids.lib,dxguid.lib,amstrmid.lib,dmoguids.lib from CBuilder_DX90_libs(網路上下載的)
也勾選了"MFC compatibility" on "Advanced Compiler" tab, "Treat enum types as ints" on "Compiler" tab
程式如下
#include "main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
HRESULT InitCaptureGraphBuilder(void);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char strTemp[80];
char str0[10], str1[10], str2[10], str3[10], str4[10], str5[10], str6[10];
sprintf(str0, "0xx\n", S_OK);
sprintf(str1, "0xx\n", REGDB_E_CLASSNOTREG);
sprintf(str2, "0xx\n", E_OUTOFMEMORY);
sprintf(str3, "0xx\n", E_INVALIDARG);
sprintf(str4, "0xx\n", E_UNEXPECTED);
sprintf(str5, "0xx\n", CLASS_E_NOAGGREGATION);
strcpy(strTemp, str0);
strcat(strTemp, str1);
strcat(strTemp, str2);
strcat(strTemp, str3);
strcat(strTemp, str4);
strcat(strTemp, str5);
HRESULT hr;
if ((hr = InitCaptureGraphBuilder()) == S_OK)
ShowMessage("OK");
else
{
sprintf(str6, "0xx", hr);
strcat(strTemp, str6);
ShowMessage(strTemp);
}
}
//---------------------------------------------------------------------------
HRESULT InitCaptureGraphBuilder(void)
{
IGraphBuilder **ppGraph; // Receives the pointer.
ICaptureGraphBuilder2 **ppBuild; // Receives the pointer.
if (!ppGraph || !ppBuild)
{
return E_POINTER;
}
IGraphBuilder *pGraph = NULL;
ICaptureGraphBuilder2 *pBuild = NULL; // Create the Capture Graph Builder.
HRESULT hr = CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL,
CLSCTX_INPROC_SERVER, IID_ICaptureGraphBuilder2, (void**)&pGraph);
if (SUCCEEDED(hr))
{
// Create the Filter Graph Manager.
hr = CoCreateInstance(CLSID_FilterGraph, 0, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void**)&pGraph);
if (SUCCEEDED(hr))
{
// Initialize the Capture Graph Builder.
pBuild->SetFiltergraph(pGraph); // Return both interface pointers to the caller.
*ppBuild = pBuild;
*ppGraph = pGraph; // The caller must release both interfaces.
return S_OK;
}
else
{
pBuild->Release();
}
}
return hr; // Failed
}
//---------------------------------------------------------------------------
Compile ok,但執行程式就不會成功,情形如下圖
有哪位高手可以告訴小弟哪裡出問題嗎?
|
frankiech
中階會員 發表:7 回覆:78 積分:52 註冊:2002-08-29 發送簡訊給我 |
|
LeonSun
一般會員 發表:5 回覆:9 積分:2 註冊:2003-10-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |