我是在单文档程序中的初始化函数中OninitialUpdate()中发送一个消息,在这个消息中从数据库计算出一个值 X, 然后将这个X值在OnDraw()中画出来.
但是我调试发现Ondraw函数是在消息函数之前执行的,这样X值为空,程序运行错误.什么函数可以在Ondraw之前执行啊. 我必须在视图类中访问数据库得到数据, 怎么办?

解决方案 »

  1.   

    取出值以后,刷新界面。
    OnDraw会在刷新界面时调用
      

  2.   

    CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    int CMyPaintView::OnCreate(LPCREATESTRUCT lpCreateStruct) 
    都在ONDraw()函数之前执行你可以试下!OninitialUpdate()函数也在ONDRAW()函数之前执行的,试试在读完数据后用`
    Invalidate()函数进刷新!
      

  3.   

    同意楼上,不要在OnDraw()里面假定数据是否有效,而是要通过判断,比如指针是否有效:
    if (p != NULL)
    {
     ...//绘制数据
    }
    这样什么时候计算数据都可以,刷新以下就好了。
      

  4.   

    你也可以重载OnPain(),在ondrow前执行操作,完了调用ondrow即可.
      

  5.   

    在OnDraw里面加一个Flag,取到数据的时候就把这个Flag置成TRUE,调用Invalidate(),执行OnDraw的时候判断一下Flag,如果为真就执行相应的操作
      

  6.   

    可以在on_create中调用你的代码