原文链接如下:http://www.codeproject.com/KB/miscctrl/histogramctrl.aspx初始化时
CRect rect;
GetDlgItem(IDC_STATIC_HISTOGRAM)->GetWindowRect(rect);
ScreenToClient(rect);
m_ctrlHistogram.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect, this, IDC_STATIC_HISTOGRAM);我这样做的:
CRect rect1;
GetDlgItem(IDC_STATIC_HISTOGRAM)->GetWindowRect(rect1);
ScreenToClient(rect1);
m_ctrlHistogram1.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect1, this, IDC_STATIC_HISTOGRAM);CRect rect2;
GetDlgItem(IDC_STATIC_HISTOGRAM)->GetWindowRect(rect2);
ScreenToClient(rect2);
m_ctrlHistogram2.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect2, this, IDC_STATIC_HISTOGRAM);就是创建两个画图对象,然后分别在这静态文本框上绘制曲线。结果还是只能画出一条曲线。这是问什么啊?请问各位应该怎么解决?如何才能用原文链接给出的代码绘制两条或多条曲线。
小弟初学不久,请各位多帮帮忙,不胜感激! 如果问题解决了还可以加分的

解决方案 »

  1.   

    两个都用的IDC_STATIC_HISTOGRAM,是不是覆盖了?
    除非控件不重叠,否则后者会覆盖掉前者的。
      

  2.   

    如1楼所说,m_ctrlHistogram2.Create不成功!
    m_ctrlHistogram2.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect2, this, IDC_STATIC_HISTOGRAM+1); 
    这样试试!
      

  3.   

    肯定只有一个,如果你的第二个对象创建成功,那么第二个对象的窗口会覆盖第一个对象的窗口,当然显示的只有一条线了。
    你可以做个测试------》
    CRect rect; 
    GetDlgItem(IDC_STATIC_HISTOGRAM)->GetWindowRect(rect); 
    ScreenToClient(rect); 
    retc.bottom = rect.bottom/3;
    m_ctrlHistogram.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect, this, IDC_STATIC_HISTOGRAM); 我这样做的: 
    CRect rect1; 
    GetDlgItem(IDC_STATIC_HISTOGRAM)->GetWindowRect(rect1); 
    ScreenToClient(rect1); 
    rect1.top+= rect1.Height()/3;
    rect1.bottom-=rect1.Height()/3;
    m_ctrlHistogram1.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect1, this, IDC_STATIC_HISTOGRAM); CRect rect2; 
    GetDlgItem(IDC_STATIC_HISTOGRAM)->GetWindowRect(rect2); 
    ScreenToClient(rect2); 
    rect2.top+= rect2.Height()*2/3;
    m_ctrlHistogram2.Create(WS_VISIBLE | WS_CHILD| WS_TABSTOP, rect2, this, IDC_STATIC_HISTOGRAM); 把画图区域分别设置一下,看看是不是这个问题,如果是的话,就好办了。