我创建了两个对话框(CCalDlg和ShowDlg),并实现CCalDlg对ShowDlg的无模式调用.其中在ShowDlg定义了一个对象CObArray myPtArray; 在CCalDlg的成员变量中,有一个ShowDlg类的对象              ShowDlg g_pDlgModeless;
下面是实现部分:
//CCalDlg.cpp
void CCalDlg::OnBtnCal2() 
{
       ...   ...    CPoint thePoint;//这是我想存入的点的值
for (i=0;i<=400;i++)
{
draw_y=200-i;
draw_x=m_N2/m_N1*draw_y-1./m_N1*result_x0;
thePoint.x=(int)draw_x; //未提及的变量都于前面实现,这里不作考虑
thePoint.y=(int)draw_y;
g_pDlgModeless.myPtArray.Add((CObject *)&thePoint);
}

if(IDOK==theDlg.DoModal())
{
if (NULL== g_pDlgModeless.GetSafeHwnd())
{
if (g_pDlgModeless.Create(ShowDlg::IDD,this))
{
g_pDlgModeless.ShowWindow(SW_SHOW);
}
}
else
g_pDlgModeless.ShowWindow(SW_SHOW);
}
}
//
void ShowDlg::OnPaint() 
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here CPoint *thePoint=NULL;
thePoint=(CPoint *)myPtArray.GetAt(0); dc.MoveTo(thePoint->x,thePoint->y);
for (int i=0;i<=myPtArray.GetSize();i++)
{
thePoint=(CPoint *)myPtArray.GetAt(i);
dc.LineTo(thePoint->x,thePoint->y);
  }
// Do not call CDialog::OnPaint() for painting messages
}
(这里还想问一下,是不是ShowDlg::OnPaint()里的// Do not call CDialog::OnPaint() for painting messages这一句话的缘故?   那我确实想给对话框发送消息让它画图,请问有什么办法?)

解决方案 »

  1.   

    你的问题是什么?
    if(IDOK==theDlg.DoModal())这里theDlg是什么?向导生成的代码不是这样子的吧,你在向导生成的代码else部分绘图就行了。
      

  2.   

    不好意思,上课去了.我的问题是我上面的代码不仅画不出来,而且会报错
    if(IDOK==theDlg.DoModal())是为了防止"="错误,如果是"if(theDlg.DoModal()=IDOK)",编译器不会报错,但这确实是个逻辑错误,而若是if(IDOK=theDlg.DoModal()),编译器就会帮助检错.多谢 Mackz提醒,我一直都是这样创建无模式对话框的,不知道还可以省略.现在的问题是不仅画不出来,而且会弹出调试窗口,大家帮帮忙啊
      

  3.   

    我怀疑是CObArray myPtArray赋值时出的错,但总是现在我找不出错误,大家帮帮忙啊
      

  4.   

    误解Mackz的意思了,不好意思
    theDlg是我定义的一个对话框类的对象.
    事情已经过去了,没人帮我也罢了,真不知是怎么回事,也许是我的问题没水准吧.嘿嘿