求教,关于CPropertySheet,知道的进来看下 谢谢。

灬光影相生灬 2010-05-12 12:50:03
自己从CPropertySheet继承了一个类CToolProperty,里面添加了两个页面CToolPage和CColorPage

CToolProperty从工程的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中的变量都初始化了。
...全文
76 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinjay 2010-05-12
  • 打赏
  • 举报
回复
有溢出就不好办了
dinjay 2010-05-12
  • 打赏
  • 举报
回复
m_nToolStyle=m_toolProperty->m_ToolPage->m_nToolStyle;
m_nToolStyle值无效?那你下面的if (m_nToolStyle == GRAPH_LINE)
怎么可能进去?不会是又有数组访问越界了吧.......
灬光影相生灬 2010-05-12
  • 打赏
  • 举报
回复
高手帮忙啊。。。。谢谢谢谢。。。。
灬光影相生灬 2010-05-12
  • 打赏
  • 举报
回复
跟踪到这段的时候 确实没有值
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语句。。。。头疼死了 找一天这的错误了。。。。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧