RT,还有个问题就是我把黑色转成int以后为什么会是-842150451,RGB的值不是unsigend long么,为什么会是负的,而且突破了int的下限?转成DWORD以后也还是这个值。
俩问题~

解决方案 »

  1.   

    看下MSDN,_atoi64, _atoi64_l等等
    黑色的RGB值不是0吗,上你的转换代码看看
      

  2.   

    这个和转的函数有关
    用sprintf
      

  3.   

    你转换的颜色没有初始化吧?!
    你的-842150451转成16进制就是0xCDCDCDCD
    调试版没有初始化的内存好像是填充CDCDCDCD
      

  4.   


    确实没有初始化,改成0以后也是黑色,初始化成-842150451也是黑色,而且用int和DWORD都一样
      

  5.   


    void CDraw::DDALine(int x1, int y1, int x2, int y2, int color, CDC *ppDC)
    {
    /* CString mstr;
    mstr.Format("%d",color);
    AfxMessageBox(mstr);*/ int k,j;
    float dx,dy,x,y;
    k=abs(x2-x1);
    if(abs(y2-y1)>k)
    {
    k=abs(y2-y1);
    }
    dx=(float)(x2-x1)/k;
    dy=(float)(y2-y1)/k; x=x1+0.5;
    y=y1+0.5;
    for(int i=1;i<=k;i++)
    {
    ppDC->SetPixel((int)x,(int)y,color);
    x=x+dx;
    y=y+dy;
    }

    画线的地方的代码就是这样的。