【3月6日実施】システムメンテナンス実施のお知らせ

質問なのです・・・

現在、私は[Visual Stdio.Net 2005]を使って、C++のプログラミングをしようと思いまして、今日参考書を見てやってみたのですが、

charの配列を使って、文字列を格納しそれを使おうとしたら、LPCWSTRのキャストが必要というエラーがでました。
参考書だと普通に通るらしいのですが・・・Visual Stdio.Net 2003と2005の違いなのでしょか?わかる方教えていただけませんでしょうか??

A 回答 (7件)

補足です。


2005デフォルトのUNICODEを変更する方法は
プロジェクト->プロパティ->構成プロパティ->全般 の中にある
文字セットを[Unicode 文字セットを使用する]から[マルチバイト文字セットを使用する]
に変更することで可能です。
    • good
    • 5
この回答へのお礼

ありがとうございます!!!
今、変更してビルドしてみたら正常にビルドできました!!!
ほんとうにありがとうございます!

お礼日時:2006/06/25 23:34

> wchar_tではなぜかエラーが出てしまいできませんでした



多分、今度は他の char を要求している部分がエラーになってしまったのでしょう。

ちなみに、SJIS(ShiftJIS)はマルチバイト文字セット(文字の種類によって一文字のバイト数が違う)の一種です。通常、C++としてはcharを使います。
一方、MicrosoftがいうUNICODEはワイド文字セットといわれ、一文字のバイト数が固定で複数バイト(2、または4:VCは2)あります。通常、C++としてはwchar_tを使います。

そして、Windowsでは、両者をオプションで切り替えやすいように、TCHARというマクロを用意しています。

本来、WindowsのAPI等を呼ぶときにはこれらを正しく判断して区別しなければなりません。

お使いの参考書は、正しくこれを区別していなかったため、バージョンが変わったらエラーになったものと思われます。
初心者への説明のために、あえて wchar_t のような新しい型を用いなかったのか、作者がそういう注意を払わない人だったのかわかりませんが…。
    • good
    • 1
この回答へのお礼

なるほど・・・

わかりやすい解説ありがとうございます!!

お礼日時:2006/07/01 22:43

LPTSTRなどTCHAR用の関数にcharを渡したのだと思います。


2003は、デフォルトでSJISですからcharのままで通りますが、デフォルトがUNICODEになっていると、charでは通らないので。
charの代わりにTCHARやwchar_tに読み替えることで対応できると思います。
    • good
    • 2
この回答へのお礼

wchar_tではなぜかエラーが出てしまいできませんでした
2003と2005はSJISとUnicodeが違うのですね!!初めて知りました!!
情報ありがとうございます!!!

お礼日時:2006/06/25 23:33

多分、WCHAR(wchar_t)配列を引数と取る関数で


char配列を渡したんだと思う。
違うかもしれんが。
    • good
    • 1
この回答へのお礼

私も、そうかと思い・・・wchar_tで渡したのですが・・・エラーが出てしまいました。
ほかにいろいろ試して見ます!!

お礼日時:2006/06/25 23:31

No2の方が、言われているソースコードの意味ですが、これは、質問者さまが今コンパイルしようとしているファイルのことを示します。


具体的にはwindow.cppのファイルのことです。これを提示されてみては、いかがでしょうか。
    • good
    • 0
この回答へのお礼

わかりました。
提示します!

お礼日時:2006/06/25 23:29

そのエラーを吐いた"ソースコード"を呈示してください。

    • good
    • 0
この回答へのお礼

すみません長くなるので一部を取ります


char clsName[]= "D3DFWSampleClass";// ウィンドウクラス名

HWNDhWnd;
MSGmsg;



// ウィンドウクラスの初期化
WNDCLASSEXwcex = {
sizeof(WNDCLASSEX),// この構造体のサイズ
NULL,// ウインドウのスタイル(default)
WindowProc,// メッセージ処理関数の登録
0,// 通常は使わないので常に0
0,// 通常は使わないので常に0
hInstance,// インスタンスへのハンドル
NULL,// アイコン(なし)
LoadCursor(NULL, IDC_ARROW),// カーソルの形
NULL, NULL,// 背景なし、メニューなし
clsName,// クラス名の指定
NULL// 小アイコン(なし)
};


です

お礼日時:2006/06/25 23:28

コードの呈示がなくてはコメントのしようがありません。

    • good
    • 0
この回答へのお礼

c:\program files\microsoft directx sdk (june 2006)\include\d3d9types.h(1385) : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
1>c:\documents and settings\xxx\my documents\visual studio 2005\projects\d3dfwsamplw\d3dfwsamplw\window.cpp(57) : error C2440: '初期化中' : 'char [17]' から 'LPCWSTR' に変換できません。


というエラーです

お礼日時:2006/06/25 01:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A