RtInRect – 固定ページ 2 – プログラミング – Home

通知
すべてクリア

RtInRect

固定ページ 2 / 2

ポチ
 ポチ
(@ポチ)
ゲスト
結合: 22年前
投稿: 24
Topic starter  

>m_ten , m_ten2 の宣言を書いてもらえますか?CArray<CPoint, CPoint> m_ten, m_ten2;
でいいのかな?
CArray<CPoint, CPoint>m_ten;
CArray<CPoint, CPoint>mten2;
にしています。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 23年前
投稿: 1301
 

> for(int j=0;j<pDoc->m_ten.GetSize();++j){
> とあったときには今はm_ten.GetSize();に入ってるのは3ですよね?
> jは0~2まで繰り返されるということで間違っていないと思うのですが

そのとおり、推測のとおりであれば範囲外エラーが出るはずありません。
しかし現にエラーが発生しているのだからデバッガで調べてみてはいかがですか?

# 推測はいいから実測しましょう


返信引用
はお
 はお
(@はお)
ゲスト
結合: 22年前
投稿: 21
 

とりあえず「pDoc」が何者でどのタイミングでデータをセットして
どのタイミングでこの判定を行うのかまったく情報がないので
こんなの作ってみました。

ちなみにダイアログベースでボタンを押されたら「OnButton1」にきます。

void CTttDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
DataInit();
int nJudge = Judgment();

CString str; str.Format(%d, nJudge);
MessageBox(str);
}

void CTttDlg::DataInit()
{
m_ten.SetSize(0);
m_ten2.SetSize(0);

m_ten.Add(CPoint(385,78));//0//
m_ten.Add(CPoint(388,113));//1//
m_ten.Add(CPoint(388,154));//2//

m_ten2.Add(CPoint(385,175));//3//
m_ten2.Add(CPoint(383,188));//4//
m_ten2.Add(CPoint(381,203));//5//
}

int CTttDlg::Judgment()
{
int x=0,y=0,xhaba=150,yhaba=150;

for(int j=0;j<m_ten.GetSize();++j)
{
POINT m_tenp;
m_tenp.x=m_ten[j].x;
m_tenp.y=m_ten[j].y;
POINT m_ten2p;
m_ten2p.x=m_ten2[j].x;
m_ten2p.y=m_ten2[j].y;
CRect r1(x,y,xhaba-1,yhaba-1);
if(r1.PtInRect(m_tenp)||r1.PtInRect(m_ten2p))
{
return 1;
}
}

return 0;
}

で、動かしてみましたけど希望する結果が出てきましたよ。


返信引用
固定ページ 2 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

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