2005-07-23 [長年日記]

[Q3] x64版を作ってみる (2)

APIを変えなくてはいけないのは、GetWindowLongの代わりにGetWindowLongPtrを、SetWindowLongの代わりにSetWindowLongPtrを使い、GWL_WNDPROCなどはGWLP_WNDPROCに置き換えるというあたりでしょうか。

後はひたすら警告をつぶしていきます。ほとんどの警告がsize_tが32bitであることを前提に書いている部分に関してでした。特にポインタの引き算がsize_tで64bitになるくせに、バッファの長さをDWORDでとるAPIなどは扱いに困ります。本来はバッファの長さが0xffffffffを超えるかどうかでループを回すなりして処理をしなくてはいけないのでしょうが、そんなに大きなサイズのバッファを取ることもないので、とりあえずキャストしてしまうことにします。その他にも、UI周りのAPIはいろいろなサイズを32bitで取るので、内部的にsize_tで管理しているデータをUI周りのAPIに渡すときにも対処が必要です。

というわけで、そもそもsize_tであるべきところがunsigned intになっていたようなところはsize_tで扱うように直し、後は必要に応じてキャストするようにしました。これで一応x64版ができたようです。

でも、動かすPCがありません^^;。試してみたい方はツッコミを。

[Q3] x64版を作ってみる (3)

いくつかリソースを。

[]