2009-05-21 7 views
0

J'essaye de modifier l'amcap, une application de l'exemple de Windows SDK pour capturer la vidéo de la webcam UVC ayant la résolution 1600x1200px.ne peut pas convertir de 'WCHAR' en 'WCHAR [260]'

Je suis en train de coder certaines variables ici comme nom de fichier, la résolution par défaut, type de format, etc.

WCHAR wszCaptureFile[260]; 

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

erreur gettnig:

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

Que puis-je faire pour corriger cela?

Répondre

3

fournir une chaîne large littérale et utiliser la fonction de copie sécurisée:

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

La chaîne littérale fournit zéro octets de terminaison.

+0

Cela fonctionne ... merci beaucoup. :) – Rick2047

2

MISE À JOUR basée sur les commentaires à la réponse ... et considérer wstrcpy_s aussi.

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

... et wstrcpy_s (...) est l'implémentation sûre. –

+0

Il doit également utiliser le préfixe L: wstrcpy (wszCaptureFile, L "Capture.avi"); –

+0

Daniel est correct la version sûre est meilleure, mais un peu plus compliquée étant donné son expérience avec C, la version simple est meilleure pour le moment. – kenny

4

Vous ne pouvez pas affecter le tableau wszCaptureFile avec = (comme vous l'avez fait). Vous pouvez utiliser les méthodes de copie comme strcpy.

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

ex:

wcscpy (gcap.wszCaptureFile, L "CAPTURE.AVI");

-4

La conversion de votre chaîne en un élément WCHAR n'est pas un tableau WCHAR comme vous l'espérez. Essayez:

wszCaptureFile = L"Capture.avi\0"; 
Questions connexes