用以下语句在一个继承自cformview中的view程序中的oninitialupdate()中创建了一个子窗口m_cwTrans,请问如何在这个子窗口中画图呀,又如何刷新呀?也是在view中的ondraw函数中吗?又如何设置其背景呀?没有用过子窗口,恳请高手指教,万分感谢!!!
CRect rc(200, 2300, 500, 300);
    m_cwTrans.Create(0, 0,WS_CHILD|WS_VISIBLE,rc,this,10000, 0);
    m_cwTrans.MoveWindow(250, 250,//左上角在view的(50,50)处
        100, 100);//窗口的高度和宽度
    m_cwTrans.ShowWindow(SW_SHOW);

解决方案 »

  1.   

    m_cwTrans是哪个类的对象,就在哪个类的OnPaint()中画图。刷新?
    m_cwTrans.Invalidate();
    m_cwTrans.UpdateWindow();
      

  2.   

    你现在的坐标是相对这个窗口的父窗口的,你在创建时指定的。在你的子窗口类中响应WM_PAINT 消息,在OnPaint里画图就可以了
      

  3.   

    CWnd m_cwTrans;
    可是我是在继承自cformview中的myview.cpp中的initialupdate()函数中来创建这个子窗口的,在这个myview.cpp中已经有一个ondraw了,难道我在这里画图吗?
    我是新手,诚恳详细指点?万分感谢,再线等待。
      

  4.   

    难道要自己在从CScrollView类继承一个类吗?因为我想让其带滚动条。然后再重载它的onpaint()吗?
    如果我直接定义CScrollView m_cwTrans;应该怎么做呀??
      

  5.   

    难道要自己在从CScrollView类继承一个类吗?因为我想让其带滚动条。然后再重载它的onpaint()吗?是的,你需要继承一个类, 但不需在OnPaint()里画,直接在OnDraw()里就可以了,
    实际上里面的代码是这个样子的void XXView::OnPaint()
    {
       CPaintDC dc(this) ;  OnDraw(&dc) ;
    }
      

  6.   

    哦,我有点明白了,但还是很晕。恳请指教。。
    也就是说,假设现在my1view.cxx中的CMy1View是从CFormView继承来的,其对应了一个对话框,现在给这个对话框添加一个子窗口childview,于是在my1view.h中定义了一个变量CChildView m_cwTrans;,在my1view.cpp中的oninitialupdate()中用以下语句创建了一个子窗口(这个CChildView是从CScrollView派生来的)。可是子窗口中显示什么是由CMyView来决定的,也就是父窗口通过什么来动态的决定子窗口显示的内容(包括子窗口中各种控件比如CEdit、CStatic的个数和显示的内容等)呀???
       CRect rc(200, 2300, 500, 300);
        m_cwTrans.Create(0, 0,WS_CHILD|WS_VISIBLE,rc,this,10000, 0);
        m_cwTrans.MoveWindow(250, 250,//左上角在view的(50,50)处
            100, 100);//窗口的高度和宽度
        m_cwTrans.ShowWindow(SW_SHOW);
      

  7.   

    如果你要改变CEdit中的内容,你必须调用CEdit的SetWindowText函数,或是定义一个CString类型的变量如m_strVar与你的CEdit绑定在一起,通过改变m_strVar来改变CEdit中的值。你的问题也可用类似的方法。或者是通过你的CMy1View类直接响应鼠标和键盘消息自己调用OnPaint方法来改变。