关于MFC的CPen对象,不知道是不是电脑的原因

最近在学习Visual C++的MFC编程,参考书是孙鑫的《VC++深入详解》第三版。在学习到第十一章绘图的时候,出现了一些问题。
img


创建了一个对话框,然后在对话框中设置了一个组框并在里面放了三个单选按钮。
img
选择对应按钮的时候就将CPen对象设置为对应的线型,因为单选按钮分别返回的是0,1,2;而对应的线型PS_SOLID、PS_DASH、PS_DOT分别对应的也是0、1、2,所以在设置的时候只要使用成员变量m_nLineStyle就行了。


void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CClientDC dc(this);
    CPen pen(m_nLineStyle, m_nLineWidth, RGB(255, 0, 0));//直接使用m_nLineStyle来设置线型
    dc.SelectObject(&pen);
    CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    dc.SelectObject(pBrush);
    switch (m_nDrawType)
    {
    case 1:
        dc.SetPixel(point, RGB(255, 0, 0));
        break;
    case 2:
        dc.MoveTo(m_ptOrigin);
        dc.LineTo(point);
        break;
    case 3:
        dc.Rectangle(CRect(m_ptOrigin, point));
        break;
    case 4:
        dc.Ellipse(CRect(m_ptOrigin, point));
        break;
    }
    CView::OnLButtonUp(nFlags, point);
}

void CGraphicView::OnSetting()
{
    CSettingDlg dlg;
    dlg.m_nLineWidth = m_nLineWidth;
    dlg.m_nLineStyle = m_nLineStyle;//记住上次单选按钮的选择
    if (IDOK == dlg.DoModal())
    {
        m_nLineWidth = dlg.m_nLineWidth;
        m_nLineStyle = dlg.m_nLineStyle;//将单选按钮的返回值赋值给视类的成员变量m_LineStyle
    }
}


但是运行后不管怎么选择,画出来的线都是实线。于是我就设置断点,观察m_nLineStyle变量的值是多少。
img


可以看到选择虚线的时候确实被赋值为了1,但是画线还是实线。于是我直接用代码CPen pen(1, m_nLineWidth, RGB(255, 0, 0));试了一下,发现确实变成了虚线,那为什么用变量就不行呢?
img


最后,我将我的代码打包发给了我朋友,他打开直接运行,代码并没有问题,在他那里可以选择线型并画图,但是我的电脑却不行。
img


所以,我晕了QAQ,而且我在VC6.0里面,同样也是不行。

对不起兄弟们,破案了,虚线和点线的线宽只能是1,因为我修改了线宽,所以一直显示的直线,线宽设置为1就没事了。。。。。。太丢人了