初心者ですが、ご教授お願いいたします。
環境はWinXP、VC.net、SDKです。
指定されたフォルダからサブフォルダも含めて、画像関係のファイルを
検索しそのパスをメモリ上でリストアップしたいのですが、メモリの確保を
どうしようかと思っています。
CStringArrayを使おうかと思いましたが、SDKで使おうとしたら
fatal error C1189 WINDOWS.H already included. MFC apps must not #include
<windows.h>
のエラーがでてきました。
このエラーは、MFCじゃないと使えないということでしょうか?それとも使い方がわるい
だけでしょうか?
それと上のように検索してリストアップする場合、SDKでは一般的にどのような
方法をつかうのでしょうか?
ひとつのファイルパスを取得する毎にmallocとかでメモリ確保するのでしょうか?
初歩的だとは思うのですが、おしえてください。
> このエラーは、MFCじゃないと使えないということでしょうか?それとも使い方がわるい
> だけでしょうか?
CStringArrayはMFCなので、MFCを有効にしないと使えません。
> それと上のように検索してリストアップする場合、SDKでは一般的にどのような
> 方法をつかうのでしょうか?
ファイルの検索なら、FindFirstFile、FindNextFile、FindCloseを
使用します。
> ひとつのファイルパスを取得する毎にmallocとかでメモリ確保するのでしょうか?
ファイルパスを取得する毎にメモリ確保しても良いですし、
ある程度メモリ確保しておいて、メモリが足りなくなったら
再確保する処理でも良いです。
mallocでも良いですが、SDKにGlobalAllocがあります。
std::vectorやstd::stringを使ってみるのも良いかも。
さおりです。
レスありがとうございました。
参考にして、いろいろ試してみようかと思います。
ついでなんですが、GlobalAlloc関係と、HeapAlloc関係の
メモリ管理関数は、なにか使い分けをした方がよいのでしょうか?
新規のプログラムはHeapAlloc系を使ったほうがいいような
ことが、MSDNには書いてありましたが・・・。
HeapAllocを使おうとしたら、pHeap→charへのキャストができないとか
いわれてしまいました。
何が悪いのかよくわかりませんが、GlobalAllocも同じなんですかね・・・。
とりあえず、いろいろやって覚えないと、先に進みません・・・。
ファイル長:
固定長で扱いたければ_MAX_PATH (260)を使えば良い。
HeapAlloc:
戻り値はLPVIODじゃない?
mallocと同じ様に扱えるはず。
GetProcessHeap()使ってる?