2009-05-21 16 views
0

Windows SDKの例のamcapを修正して、解像度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"); 

リテラル文字列が終了するゼロバイトを提供します。

+0

これは機能します...ありがとうございます。 :) – Rick2047

2

UPDATEDコメントに基づいて回答してください...またwstrcpy_sも考慮してください。

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

...およびwstrcpy_s(...)は安全な実装です。 –

+0

また、L接頭辞を使用する必要があります。 wstrcpy(wszCaptureFile、L "Capture.avi"); –

+0

ダニエルは正しいです安全なバージョンが良いですが、Cで彼の経験を考えればもう少し複雑です、単純なバージョンは今の方が良いです。 – kenny

4

配列wszCaptureFileに=を(前と同じように)割り当てることはできません。 strcpyのようなコピー方法を使用できます。

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

EX:

wcscpy(gcap.wszCaptureFile、L "Capture.avi")。

-4

WCHAR配列ではなく、WCHAR配列に文字列をキャストしてください。 試してみてください。

wszCaptureFile = L"Capture.avi\0"; 
関連する問題