初質問です

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Bear

初質問です

#1

投稿記事 by Bear » 16年前

こんにちわ。いつも色々参考にさせてもらっています。
今回、初めて質問させていただきます。よろしくお願いします。
質問は2つです。

僕は初心者でMFCでアドレス帳みたいなのを作ったことがあるレベルです。

今、WinAPI関数をいろいろ試しているところです。
開発環境は 学校がVC6.0(XPとVista)
家がVC2008 (Vista)
でともにProfessional Editionです。

そこで質問なんですが、CopyFileEx()という関数をいろいろ試していたらVC6.0のときは
"error C2065 CopyFileEx()は定義されていない識別子です"
とでます。同じコードでもVC2008では問題なくビルドされるのですが何故でしょうか? CopyFileExの定義もとをたどっていくとちゃんとCopyFileExW()とCopyFileExA()は定義されていたし、kernel32.libも読み込んでいました。またwindows.hもインクルードしています。他にどのような原因の可能性があるのでしょうか?
ちなみに関係ないかもしれないですがCopyFile()やMoveFileEx()はVC6.0でも問題なくビルドされました。

2つ目の質問はMessageBox()関数などの文字列を引数として代入する場合にVC6.0では中の文字列をそのまま””で引数として入れれたのに、VC2008では
"const char[11]からLPCWSTRに変換できません"
とでます。そこでLPCWSTRにキャストしても表したい文字列ではなくなっているのです。
これはなぜでしょうか?何か設定で変えれたりするのでしょうか?

すみませんが、ご教授ください。

SooA

Re:初質問です

#2

投稿記事 by SooA » 16年前

二つ目の質問に関しては
プロジェクトのプロパティ設定で
構成プロパティ -> 全般 -> 文字セット を
Debug, Release 共に
「[color=#bbffbb>マルチバイト文字セットを使用する[/color]」に変更します。

MessageBox記述例
if( MessageBox( NULL, TEXT("終了します。よろしいですか?"), TEXT("終了") , MB_OKCANCEL ) == IDOK )

Bear

Re:初質問です

#3

投稿記事 by Bear » 16年前

解答、ありがとうございます。

Justy

Re:初質問です

#4

投稿記事 by Justy » 16年前


>error C2065 CopyFileEx()は定義されていない識別子です
>どのような原因の可能性があるのでしょうか

_WIN32_WINNTが定義されていない、とか?

SooA

Re:初質問です

#5

投稿記事 by SooA » 16年前

> CopyFileEx()
関係ないかもしれませんが、
VC6.0用のSP(サービスパック)が適用されていない場合は
最新のSPを適用させてみてください。
学校ということなので教員に相談&許可をとってからの方がいいですね。

http://www.microsoft.com/japan/msdn/vst ... t.aspx#VS6

Bear

Re:初質問です

#6

投稿記事 by Bear » 16年前

>_WIN32_WINNTが定義されていない、とか?

 どうもそのようでした。なぜそうなのかはわかりませんが、
   #define _WIN32_WINNT 0x0400
 を追加したらうまく通りました。
 CopyFileExはWindows NT 4.0以上の環境で使えるため0x0400はWindows NT 4.0を定義するものと理解しているのですがあっていますでしょうか?


>VC6.0用のSP(サービスパック)が適用されていない場合は
最新のSPを適用させてみてください

 ご指摘ありがとうございます。学校のSPが最新かどうか調べてみます。

閉鎖

“C言語何でも質問掲示板” へ戻る