オブジェクトのプロパティ(例えば .Topや .Leftや .Width、Heightなど)は、デフォルトでは内部的にInteger型のようで、値-32768〜32767の範囲を超えるとオーバーフローを起こしてしまいますが、これをLong型にすることはできるのでしょうか?開発環境はVB6.0を使用しています。もしかすると初歩的な事かもしれませんが、ご存知の方ご教授お願いします。
編集 削除そもそもなぜlongにしなければならないんですか?
編集 削除>そもそもなぜlongにしなければならないんですか?
すごく大きな画面を動的に描画するプログラムを作成しています。
一画面に入りきれないので、表示部分は一部にし、上下左右にスクロール可能な仕様にしています。イメージでいうとYAHOOなんかにある地図検索システム
のような感じです。その際、元の大きな描画自体のTOPやLeftを変更する必要があり、分割表示は仕様上困難なので、32767の値を越えたいのです。
32768ピクセル四方以上の画像ですか?メモリを大量に消費しますね、キャッシュをするなり、見えない部分を圧縮するなりしたほうがよいかと思います。
ゲームなどでよく用いられる手法で、表示する分だけBitbltなどで切り取り、取り出すという方法がありますが、それを使ってみてはいかがでしょう?
この場合は、必要な部分だけを取り出し、解凍して表示 ということになるでしょうか。
>オブジェクトのプロパティ(例えば .Topや .Leftや .Width、Heightなど)は、デフォルトでは内部的にInteger型のようで
どうやって調べました?
MsgBox TypeName(Me.Top)
>どうやって調べました?
オーバーフローを起こす数値からの想像です。
正確に言うと型は違うのかもしれませんが、いづれにせよオーバーフローを起こすのは確かなので、それを解決したいということです。
> オーバーフローを起こす数値からの想像です。
> 正確に言うと型は違うのかもしれませんが、いづれにせよオーバーフローを起こすのは確かなので、それを解決したいということです。
…ま、想像なのかどうかはわからないが、ともかくそういう「問題の特定」をするのが先決だと思うが?
それとも、これ以上の追求をせずに、
質問の内容が「オーバーフローするから、どうすればいいですか?」でいいのかな?
それなら簡単。
そのコードを使わなければいいだけ。
Singleですね。失礼しました。
編集 削除れおさん、質問の仕方が良くなかったようですね。
オブジェクトのプロパティは変更不可能でしょう。
実は私も同じことで悩んでいます。
ズーミングする場合、横方向が64倍までしかできません。
200倍まではズームしたいのですが、
自分でそれをやるとスクロールの制御なども全て自動ではできなくなります。
つまり全てをプログラムするしかなくなるから大変です。
>オブジェクトのプロパティは変更不可能でしょう。
変更不可能ですか。。不可能ということを教えていただいて大変ありがたいです。別の手段を考えるしか無いみたいですね。。回答ありがとうございます。
>れおさん、質問の仕方が良くなかったようですね。
そのようです。私も他のBBSですが、自分にわかることは回答者側になったりして、ある程度このような質問掲示板のマナーやルールを理解し気をつけたつもりですが、配慮が足りなかったようです。教授してもらう側は立場は弱いですし、教授する側の腹立たしさや無料で教えてやってんだという気持ちも理解できるだけに何とも言い難いです。BBSの趣旨とは異なりますのでこの辺します。