2

古い MFC プログラムを変更しようとしています。Visual Studio 2013 でプロジェクトを開いた後、以下のタイプのエラーが多数発生します。

AviPlay.cpp で

#include "stdafx.h"
#include "AviPlay.h"

#define OPEN_AVI_VIDEO "open avivideo"
BOOL initAVI()
{
    return mciSendString(OPEN_AVI_VIDEO, NULL, 0, NULL) == 0;
}

スローされるエラーはエラー C2664 です: 'MCIERROR mciSendStringW(LPCWSTR,LPWSTR,UINT,HWND)' : 引数 1 を 'const char [14]' から 'LPCWSTR' に変換できません

Strict のコンパイラ オプションをオフに設定するか、その他のコンパイラ オプションを設定すると、このエラーを解決できますか? そうでない場合は、多くのコード行を手動で変更できます。その場合、過去 15 年間に何が変更されて、このようなコードが以前は OK でしたが、現在は OK でなくなったのでしょうか?

前もって感謝します。

4

1 に答える 1

3

LPCWSTR は、char 文字列ではなく、wchar_t 文字列が必要であることを示しています。デフォルトでは、すべての Windows API が wchar_t 文字列 (Unicode) を受け入れるようになりました。プロジェクトのプロパティ、一般ページ、文字セットで文字列に戻すことができます。「マルチバイト文字セットを使用」に設定すると、以前と同じように機能します。

于 2014-08-12T01:54:09.087 に答える