2009-05-21 82 views
0

我想修改amcap,从Windows SDK的示例中的应用程序捕获具有分辨率1600x1200px的UVC摄像头的视频。不能从'WCHAR'转换为'WCHAR [260]'

我想在这里硬编码的一些变量,如文件名,默认的分辨率,格式的类型等

WCHAR wszCaptureFile[260]; 

gcap.wszCaptureFile = (WCHAR)"Capture.avi\0" //modified 

gettnig错误:

1>.\amcap.cpp(3887) : error C2440: '=' : cannot convert from 'WCHAR' to 'WCHAR [260]'

我能做些什么来纠正呢?

回答

3

提供一个字面宽字符串和使用安全复印功能:

wcscpy_s(gcap.wszCaptureFile, L"Capture.avi"); 

文本字符串提供了终止零个字节。

2

根据对答案的评论进行更新...并考虑wstrcpy_s。

wstrcpy (wszCaptureFile, L"Capture.avi"); 
+2

...和wstrcpy_s(...)是安全的实现。 – 2009-05-21 11:39:33

+0

他还需要使用L前缀: wstrcpy(wszCaptureFile,L“Capture.avi”); – 2009-05-21 11:45:20

4

你不能用=分配数组wszCaptureFile =(正如你所做的那样)。您可以使用复制方法,如strcpy

wcscpy and _mbscpy are wide-character and multibyte-character versions of strcpy

例如:

wcscpy(gcap.wszCaptureFile,L “Capture.avi”);

-4

您将字符串转换为WCHAR元素而不是WCHAR数组,如您所期望的那样。 尝试:

wszCaptureFile = L"Capture.avi\0";