窗口的视图中显示了一张图片,然后跳出一个有滑杆的对话框,我希望滑杆滑动的同时,获得滑杆指示的值,然后重新计算图片各象素的颜色,更新视图把结果显示出来。我通过OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 可以及时获得滑杆滑动过程中指示的当前值,可是我不知道这个值该如何传递到C*Doc中(象素值的重新计算在C*Doc中),然后可以更新视图(显示图片在C*View的ondraw中),我开始的程序是这么写的
C*Dlg dlg;
int flag=dlg.DoModal();
if(flag==IDOK||flag==IDCANCEL) return;
else
{
    ……   //计算象素值,生成新图
}
可是如果我只是滑动滑杆,程序一直停留在doModal那里,一直到按下ok或者cancel才到if那句,所以我永远都执行不到else里面的程序,实际上我想一边滑动一边执行那段程序,请问该怎么做,很急的问题,拜托各位帮帮忙

解决方案 »

  1.   

    在滑竿拖动的时候向View发消息sendmessage,让它重画。
      

  2.   

    C*View* pView=DYNAMIC_DOWNCAST(C*View,AfxGetMainWnd());
    if(NULL!=pView)
     pView->PostMessage(MESSAGE,WPARAM(nPos),0);C*View::MessageHandler
    {
    Invalidate/InvalidateRect
    }
      

  3.   

    对,你可以自定义消息。在npos位置变化时,把nPos值创给view
      

  4.   

    可以通过的到view的指针,对view进行操作!
    CMyFormView*  pView;
    CMainFrame *pFrame = 
                (CMainFrame*)AfxGetApp()->m_pMainWnd;// CMDIChildWnd *pChild = 
        //         (CMDIChildWnd *) pFrame->GetActiveFrame(); // or CMDIChildWnd *pChild = pFrame->MDIGetActive(); pView = (CMyFormView*) pFrame->GetActiveView();
      

  5.   

    不好意思,我还是不太明白,我可以向view发送消息,可是我得到新的nPos需要放到C*Doc中间计算过才得到新的图像,view得到的应该是这个图像的指针吧,如果把nPos传给view要怎么用呢?学艺不精,请不要见笑