视图与对话框的内容同步,比如偶在视图里拖动鼠标,画一个圆,在一个非模态对话框中也显示一个圆,望高手指点~~~~~~~~  谢~~~~~~~~~~~~~

解决方案 »

  1.   

    在视图里拖动鼠标时,画点的时候同时向两个DC画是可以的啊,一个是视图DC,另外一个是非模态对话框的DC
      

  2.   

    下面是将一个窗口背景画成红色的函数,其中hdc就是窗口的设备描叙表,
    void    On_COMMANDTIPHWND_WMPAINT(HDC hdc)
    {
    HDC hdcComp=CreateCompatibleDC(hdc); HBITMAP hbmSet = CreateCompatibleBitmap(hdc,COMMANDTIP_WIDTH,COMMANDTIP_HEIGHT); 
    HBITMAP hbmPrev=(HBITMAP)SelectObject(hdcComp,hbmSet); BitBlt(hdcComp, 0,0,COMMANDTIP_WIDTH, COMMANDTIP_HEIGHT,hdc, 0,0, SRCCOPY) ; //draw out to the camp HDC
    HBRUSH hBrush,hBrushPrev;
    hBrush=CreateSolidBrush(RGB(255,0,0));
    hBrushPrev=(HBRUSH)SelectObject(hdcComp,hBrush); Rectangle(hdcComp,0,0,COMMANDTIP_WIDTH,COMMANDTIP_HEIGHT); SelectObject(hdcComp,hBrushPrev);
    DeleteObject(hBrush); //draw back the BMP
    BitBlt(hdc, 0,0,COMMANDTIP_WIDTH,COMMANDTIP_HEIGHT,hdcComp, 0,0, SRCCOPY) ; hbmSet=(HBITMAP)SelectObject(hdcComp,hbmPrev); DeleteObject(hbmPrev);
    DeleteObject(hbmSet);
    DeleteObject(hdcComp);
    DeleteObject(hdc);
    }
    你现在要做的就是连续两次GetDC,并在这个DC上画画,就可以了,具体,你就修改一下这个函数的
    //draw out to the camp HDC 和 //draw back the BMP之间的部分,当然那些 高宽等参数也是需要修改的
      

  3.   

    就是说 , 首先在View中应该有这个非模式对话框的指针 , 比如m_pDlg ;
    你可以通过CDC* pDC = m_pDlg.GetDC();来获得对话框的DC . . .然后在CView里画图的时候 , 同时也在对话框里画图 , 
    例如: 你在CView里画一个矩形 . . . CRect rt ;
    pDC->Rectangle(rt);  //首先在CView视图中画图CDC* pDlgDC = m_pDlg->GetDC(); //得到对话框DC指针 . .
    ConvertCoord(rt);              //将CView中的坐标转换成对话框中坐标 . .
    pDlgDC->Rectangle(rt);         //在对话框里画图 . .