自己从CPropertySheet继承了一个类CToolProperty,里面添加了两个页面CToolPage和CColorPageCToolProperty从工程的View类中Create在View绘图代码如下:
CDC *pDC=GetDC(); m_nToolStyle=m_toolProperty->m_ToolPage->m_nToolStyle;

if (m_toolProperty->m_ToolPage->m_Line_Width!=NULL)
{
m_nLineWidth=m_toolProperty->m_ToolPage->m_Line_Width;
}
m_PenColor = m_toolProperty->m_ColorPage->m_PenColor;
CPen pen(PS_SOLID,m_nLineWidth,m_PenColor);
pDC->SelectObject(&pen);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
pDC->SelectObject(pBrush);
m_ptEnd=point;
if (m_nToolStyle == GRAPH_LINE)
{
DrawType tempDrawType;
// tempDrawType=new DrawType;
tempDrawType.nDrawType = GRAPH_LINE;
tempDrawType.nWidth=m_nLineWidth;
tempDrawType.PenColor=m_PenColor;
tempDrawType.BrushColor=m_BrushColor;
tempDrawType.ptBegin=m_ptBegin;
tempDrawType.ptEnd=m_ptEnd;
m_DrawTypeArray.Add(tempDrawType);
//pDlgMain->m_pClientSock->SendInfoType(&pDlgMain->m_ConnectSocket,SENDGRAPH);
//pDlgMain->m_pClientSock->SendGrath(&pDlgMain->m_ConnectSocket,pDrawType);
Line(pDC,m_ptBegin,m_ptEnd);
}
else if (m_nToolStyle == GRAPH_ELLIPS)
{
DrawType tempDrawType;
//tempDrawType=new DrawType;
tempDrawType.nDrawType = GRAPH_ELLIPS;
tempDrawType.nWidth=m_nLineWidth;
tempDrawType.PenColor=m_PenColor;
tempDrawType.BrushColor=m_BrushColor;
tempDrawType.ptBegin=m_ptBegin;
tempDrawType.ptEnd=m_ptEnd;
m_DrawTypeArray.Add(tempDrawType);
// pDlgMain->m_pClientSock->SendInfoType(&pDlgMain->m_ConnectSocket,SENDGRAPH);
//pDlgMain->m_pClientSock->SendGrath(&pDlgMain->m_ConnectSocket,pDrawType);
pDC->Ellipse(m_ptBegin.x,m_ptBegin.y,m_ptEnd.x,m_ptEnd.y);
}
else if (m_nToolStyle == GRAPH_BOSS)
{
CPen pen(PS_SOLID,50,m_PenColor);
pDC->SelectObject(&pen);
CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
pDC->SelectObject(pBrush);
DrawType tempDrawType;
//tempDrawType=new DrawType;
tempDrawType.nDrawType = GRAPH_BOSS;
tempDrawType.nWidth=30;
tempDrawType.PenColor=m_PenColor;
tempDrawType.BrushColor=m_BrushColor;
tempDrawType.ptBegin=m_ptBegin;
tempDrawType.ptEnd=m_ptEnd;
m_DrawTypeArray.Add(tempDrawType);
//pDlgMain->m_pClientSock->SendInfoType(&pDlgMain->m_ConnectSocket,SENDGRAPH);
//pDlgMain->m_pClientSock->SendGrath(&pDlgMain->m_ConnectSocket,pDrawType);
pDC->Ellipse(CRect(m_ptBegin.x-10,m_ptBegin.y-10,m_ptBegin.x+10,m_ptBegin.y+10));
}
ReleaseDC(pDC);
为何绘图的时候无法获取两个Page中的变量数值,但是可以准确绘图。
就是
m_nToolStyle=m_toolProperty->m_ToolPage->m_nToolStyle;

if (m_toolProperty->m_ToolPage->m_Line_Width!=NULL)
{
m_nLineWidth=m_toolProperty->m_ToolPage->m_Line_Width;
}
m_PenColor = m_toolProperty->m_ColorPage->m_PenColor;
这段代码毫无作用,但是在下面if语句中确可以准确判断。
麻烦知道的告诉下,谢谢了。
两个Page中的变量都初始化了。

解决方案 »

  1.   

    m_nToolStyle=m_toolProperty->m_ToolPage->m_nToolStyle;
    m_nToolStyle值无效?那你下面的if (m_nToolStyle == GRAPH_LINE)
    怎么可能进去?不会是又有数组访问越界了吧.......
      

  2.   

    跟踪到这段的时候  确实没有值
    m_nToolStyle=m_toolProperty->m_ToolPage->m_nToolStyle;if (m_toolProperty->m_ToolPage->m_Line_Width!=NULL)
    {
    m_nLineWidth=m_toolProperty->m_ToolPage->m_Line_Width;
    }
    m_PenColor = m_toolProperty->m_ColorPage->m_PenColor;
    但是继续向下运行,在IF判断的时候却可以准确进入相应的IF语句。头疼死了  找一天这的错误了。