2009-05-21 3 views
0

Я пытаюсь изменить приложение amcap из приложения Windows SDK для захвата видео с веб-камеры UVC с разрешением 1600x1200 пикселей.не может конвертировать из '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

ОБНОВЛЕНО на основе комментариев к ответу ... и рассмотрите также 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

например:

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

-4

Ваш литье вашей строки в элемент WCHAR не является массивом WCHAR, как вы надеетесь. Try:

wszCaptureFile = L"Capture.avi\0"; 
Смежные вопросы