Visual Studio 2003 VC7.1 部分问题集---学习笔记
1
.
环境:
Visual Studio 2003
CString
strFilter = L"
video
File (*.avi)|*.avi|";
编译无法通过的处理办法,即
L
报错,去掉
L
则无错
。
将工程属性
--
〉
general-->character set
设置为
Use Unicode Character Set
如下图:
2
.
//
环境:
Visual Studio 2003
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,IID_IGraphBuilder,reinterpret_cast<void**>(&m_pGBuilder));
返回hr值为:Coinitialize has not been called 的解决办法:
主要是DCom未实例化的原因.
此种问题的解决主要是手工调用,并调用相关的函数 Coinitialize(null)和CoUninitialize;
具体实现为在
InitInstance
()
函数第一行添加一行
CoInitialize(NULL);
如下
BOOL
CPlayerApp::InitInstance()
{
CoInitialize(NULL);
//
//
//
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
。。。。。。。。
。。。。。。。。
}
同时在
cpp
文件的最后添加函数
ExitInstance
()
,重载系统函数
ExitInstance
并在其中手工添加
CoUninitialize
()
方法
;
。。。。。
。。。。
}
int
CPlayerApp::ExitInstance()
{
CoUninitialize();
return CWinApp::ExitInstance();
}
3
.
///
环境:
Visual Studio 2003
使用
DrectShow
时需要的三个
lib
文件
: strmbasd.lib uuid.lib winmm.lib
否则会出现如下错误:
其中
strmbasd.lib
只在
DirectX9.0b SDK
及其之前版本中才有(需要编译)。
加入工程中的方法如图: