我想根据一些计算的数据来在一个对话框中画图。有如下几个问题:
1.我想用switch语句来进行选择,根据一个变量n的不同,画图的数据都不同。这个变量n所在的对话框和画图的对话框不是一个,如何传递变量
2.建立对话框后,OnPaint函数就自动创立了,那是不是不需要button来激发这个函数
3.如果OnPaint不需要button激发的话,那如何才能完成如下的语句?就是不同的n,不同的画图结果。
switch(n)
{
case 0:

}
case 10:
{}
case 20:
{}
case 30:
{}
case 40:
{}
}OnPaintVC对话框

解决方案 »

  1.   

    1、可以把变量放在app类里
    2、不需要,当界面需要更新时,会触发WM_PAINT消息
    3、看看编译器生成的OnDraw或OnPaint函数
      

  2.   

    谢谢你啊~~~
    这个变量n我已经在其他的对话框中定义了,还需要在APP中再次定义一下?
    2.这个我已经确定不需要激发了
    3.可是我编写了几句switch的代码,不同的case中OnPaint的内容不同,但是运行的时候好像都还是一样的呀
      

  3.   

    把你的switch-case函数都放到OnPaint()里面,然后在按钮响应函数里面改变n的取值,在调用Invalidate()刷新页面绘图,即:
    void CTestDlgDlg::OnBnClickedButton1()
    {
    // TODO: 在此添加控件通知处理程序代码
    n = 10;
            Invalidate();
    }
    接下来程序会跑到OnPaint()里面并运行你的switch-case。
    注:n定义成一个对话框类成员变量即可。
      

  4.   

    对话框之间传递数据,
    一是通过指针,而是在SendMessage的参数中设置
      

  5.   

    谢谢你的指点啊!但是在我的程序里,是希望在Maindialog中的Combo box中选择不同的n,从而出现不同的数值结果和由这些数值画成的图线,这个又应该如何实现呢?我有点搞晕了
      

  6.   

    你的OnPaint函数根据这个n值得不同绘制不同的东西即可。