トップページ > 記事閲覧
GetResourceInfoga
名前:生ハム 日時: 2024/06/26 06:09

ゲームのマップデータをバイナリ形式でリソースにしてGetResourceInfoで読み込もうとしていますが上手くいきません。 //char型のmap[20][20]のデータがすでにある前提で FILE* fp; fopen_s(&fp,"map_d.bin", "wb"); if (fp == NULL) return 0; fwrite(&map, sizeof(char), 400, fp); fclose(fp); //そしてこれをリソースに含めます //リソース記述 IDR_DATA4 DATA "map_d.bin" //リソースからの読み込み char map[20][20]; int size; GetResourceInfo(MAKEINTRESOURCE(IDR_DATA4) ,"DATA",&map, &size); //しかしこの時点で下記のエラーが2つ出てしまいます 型 "char (*)[20][20]" の引数は型 "void **" のパラメーターと互換性がありません 型 "int *" の引数は型 "size_t *" のパラメーターと互換性がありません
メンテ

Page: 1 |

Re: GetResourceInfoga ( No.1 )
名前:生ハム 日時:2024/06/26 06:12

途中で送信してしまいました… リソースから画像やサウンドを読み込むのは問題無くできるのですが、それ以外の読み込み(GetResourceInfoを使用した読み込み)がどうすればいいのかわかりません。 どうかご教授お願いします。
メンテ
Re: GetResourceInfoga ( No.2 )
名前:管理人 日時:2024/06/27 00:03

> 型 "char (*)[20][20]" の引数は型 "void **" のパラメーターと互換性がありません GetResourceInfo は fread などと異なり『データが格納されているメモリアドレスを受け取る』関数となっていますので 第三引数に渡すのは『データを代入するメモリ領域へのアドレス』ではなく『データが格納されているメモリアドレスを受け取るポインタ変数のアドレス』となります なので、char map[20][20]; にリソースのデータを代入されたい場合は以下のようにします char map[20][20]; size_t size; void *DataPointer; // データが格納されているアドレスを DataPointer に代入する GetResourceInfo(MAKEINTRESOURCE(IDR_DATA4) ,"DATA",&DataPointer, &size); // DataPointer が示しているアドレスに格納されているデータを map にコピーする memcpy( map, DataPointer, size ); > 型 "int *" の引数は型 "size_t *" のパラメーターと互換性がありません GetResourceInfo の第四引数の size_t *DataSizeP は size_t型変数のアドレスなので、 int型の変数のアドレスを渡すとエラーになります int size; の代わりに size_t size; と記述するとエラーが無くなります よろしければお試しください m(_ _)m
メンテ
Re: GetResourceInfoga ( No.3 )
名前:生ハム(解決) 日時:2024/06/27 05:56

オオーッ! できました!  データが格納されているメモリアドレスを受け取るポインタ変数のアドレス…む、難しい。 多分自分一人では10年経っても答えに辿りつけませんでした。 第四引数のエラーは構文そのままでしたね…size_tという型自体よくわかっていなかったのでお恥ずかしい限りです。 まだまだわからない事だらけですが楽しみながら覚えていこうと思います、今回はお早い返答本当にありがとうござました!
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存