CRect::MoveToYについて – プログラミング – Home

通知
すべてクリア

[解決済] CRect::MoveToYについて


ごん
 ごん
(@ごん)
ゲスト
結合: 23年前
投稿: 24
Topic starter  

開発環境はVC++6.0です。

CRect::MoveToYを使用したいのですがコンパイルが通りません。

【エラー】
 error C2039: 'MoveToY' : 'CRect' のメンバではありません。

【ソースコード】
 CRect rect(0, 0, 100, 100);
 rect.MoveToY(10);

CRectのクラスを見てみましたが確かにMoveToYは定義されていませんでした。
これは自分でソースを追加しなければいけないのでしょうか?


引用未解決
トピックタグ
みい
 みい
(@みい)
ゲスト
結合: 22年前
投稿: 65
 

2003以降で追加された関数ですので、VC6では使えません。
自力で作成する必要があります。


返信引用
みい
 みい
(@みい)
ゲスト
結合: 22年前
投稿: 65
 

<追記>
OffsetRectで代用できませんか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

VC++ 6.0 ではないのかな。2003 からあるようですね。
VC++ 6.0 を使う限りは、CRect::MoveToY と書いてコンパイルを通すということは諦め
るしかないでしょう。
同じ結果になるような自作メソッドを別途つくりましょう。
CRect のソースコードを書き換えるようなことはやめましょうね。


返信引用
ごん
 ごん
(@ごん)
ゲスト
結合: 23年前
投稿: 24
Topic starter  

みいさん
VC++6.0では、MoveToYは使用できないのですね。
勉強不足で申し訳ありません。

OffsetRectで代用出来ました。
ありがとうございます。

【ソースコード】
 CRect rect(0, 0, 100, 100);
 rect.OffsetRect(0, 10);


返信引用
ごん
 ごん
(@ごん)
ゲスト
結合: 23年前
投稿: 24
Topic starter  

aetosさん
入れ違いになり申し訳ありません。

>同じ結果になるような自作メソッドを別途つくりましょう。
>CRect のソースコードを書き換えるようなことはやめましょうね。

今回は代用関数がありましたが今後同じようなことがあれば気をつけたいと思います。
ありがとうございます。


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

解決しちゃってますが、
 rect.MoveToY(10);

 rect.OffsetRect(0, 10);
とは、意味も動作も違います。

1.MoveToY(n)は「全体のY位置をnへ移動。
 つまり bottom=n+Height()、top=n」
2.OffsetRect(0, n)は「topとbottomへnを加算。
 つまり bottom+=n、top+=n」ですね。

まぁ、本人の意図した動きであったのならそれでよいですけど(vv;)。


返信引用
みい
 みい
(@みい)
ゲスト
結合: 22年前
投稿: 65
 

>【ソースコード】
> CRect rect(0, 0, 100, 100);
> rect.OffsetRect(0, 10);
ちゃんと使い方まで書いておけばよかったですね(^^;)
ちょっと時間がなかったのでごめんなさい。
Top=0からの移動だからこれでも大丈夫ですが、
「移動したい位置-現在位置」でオフセット算出して
OfssetRectの引数にセットするのが正しい代用方法です。


返信引用
ごん
 ごん
(@ごん)
ゲスト
結合: 23年前
投稿: 24
Topic starter  

仲澤@失業者さん
みいさん

確認遅くなり申し訳ありません。
今回は,エディットボックスを縦方向にセンタリングしたく質問致しました。
偶然Top=0なのでうまく出来たようです。

補足ありがとうございます。大変勉強になりました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました