2009-05-21 62 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";