这似乎是windows的一个bug=================================
 回复人:linsi(〆轻羽无痕♀) ( 二级(初级)) 信誉:100  2007-8-14 9:41:03  得分:0
?  确实是有条白线,那是因为“桌面/属性/外观/高级/菜单”的颜色是白色,也就是说系统默认菜单的颜色是白色,修改这个值就能把菜单下面的颜色改过来,不过整个菜单的颜色也会改变。目前找不到更好的方法,希望CSDN的大牛牛们来解释并解决一下。
=================================

解决方案 »

  1.   

    我有一个想法,重写OnPain函数void CMyDlg::OnPaint()
    {
         if(系统默认菜单的颜色 != 对话框颜色)
    CDialog ::OnPaint();
    }
      

  2.   

    我有一个想法,重写OnPain函数void CMyDlg::OnPaint()
    {
         CPaintDC dc(this)
         if(系统默认菜单的颜色 != 对话框颜色)
         {   
             dc->MoveTo(...);
             dc->LineTo ( ...) ; //用对话框颜色画线,覆盖掉白线
          }           CDialog ::OnPaint();
    }
    现在问题在于:
    1 如何获得 系统默认菜单的颜色 和 对话框颜色?
    2 如何获得 白线的 位置和 长度?请大家指教,谢谢!
      

  3.   

    void CMyDlg::OnPaint()
    {
             CPaintDC dc(this);
             CRect rect;
    GetClientRect(rect);
    CPen pen(PS_SOLID,10,GetSysColor(COLOR_BTNFACE));
    dc.SelectObject(&pen);
    dc.MoveTo(0,0);
    dc.LineTo(rect.Width(),0);
     }
    这样可以使白线变细,但是无法完全消除白线。
    可能白线有一部分不再客户区内。
    高手快来告诉我怎么做