>m_ten , m_ten2 の宣言を書いてもらえますか?CArray<CPoint, CPoint> m_ten, m_ten2;
でいいのかな?
CArray<CPoint, CPoint>m_ten;
CArray<CPoint, CPoint>mten2;
にしています。
> for(int j=0;j<pDoc->m_ten.GetSize();++j){
> とあったときには今はm_ten.GetSize();に入ってるのは3ですよね?
> jは0~2まで繰り返されるということで間違っていないと思うのですが
そのとおり、推測のとおりであれば範囲外エラーが出るはずありません。
しかし現にエラーが発生しているのだからデバッガで調べてみてはいかがですか?
# 推測はいいから実測しましょう
とりあえず「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;
}
で、動かしてみましたけど希望する結果が出てきましたよ。