二十行的程序都搞不定

来源:百度文库 编辑:超级军网 时间:2024/04/28 08:47:32
如题,在专业论坛发了半天没人理睬。这里人气高,贴出来看看。
void CPicView::OnAccept()
{
CRect   rcImage(0,0,900,600);   
    LImage = (LPDWORD)malloc(rcImage.Width()*rcImage.Height()*sizeof(DWORD));
    LChangedImage = LImage;  
    bitmap.CreateBitmap(rcImage.Width(),rcImage.Height(),1,32,NULL);   
     
    for(int j=0;j<rcImage.Height();j++)   
        {   
      BYTE  r,g,b,a;   
      r = rand()%255;   
      g = rand()%255;   
      b = 255-rand()%255;   
      a = 0;   
      DWORD  dwColor = (DWORD)MAKELONG( MAKEWORD(b,g),MAKEWORD(r,a));   
      for(int i=0;i<rcImage.Width();i++)   
      LChangedImage = dwColor;   
      LChangedImage+= rcImage.Width();   
        }   
     bitmap.SetBitmapBits(rcImage.Width()*rcImage.Height()*4,LImage);  
     Invalidate();
}

void CPicView::OnDraw(CDC* pDC)
{  
    // TODO: add draw code for native data here
        CPicDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        
        CDC   dcMemory;  
           dcMemory.CreateCompatibleDC(pDC);
    dcMemory.SelectObject(bitmap);   

    CRect rect;
    GetClientRect(&rect);

    pDC->BitBlt((rect.Width()-rcImage.Width())/2,0,rcImage.Width(), rcImage.Height(),&dcMemory,     
    0,0, SRCCOPY);           

}

偶太菜了,20行都搞不定。偶Invalidate了怎么还不显示。如题,在专业论坛发了半天没人理睬。这里人气高,贴出来看看。
void CPicView::OnAccept()
{
CRect   rcImage(0,0,900,600);   
    LImage = (LPDWORD)malloc(rcImage.Width()*rcImage.Height()*sizeof(DWORD));
    LChangedImage = LImage;  
    bitmap.CreateBitmap(rcImage.Width(),rcImage.Height(),1,32,NULL);   
     
    for(int j=0;j<rcImage.Height();j++)   
        {   
      BYTE  r,g,b,a;   
      r = rand()%255;   
      g = rand()%255;   
      b = 255-rand()%255;   
      a = 0;   
      DWORD  dwColor = (DWORD)MAKELONG( MAKEWORD(b,g),MAKEWORD(r,a));   
      for(int i=0;i<rcImage.Width();i++)   
      LChangedImage = dwColor;   
      LChangedImage+= rcImage.Width();   
        }   
     bitmap.SetBitmapBits(rcImage.Width()*rcImage.Height()*4,LImage);  
     Invalidate();
}

void CPicView::OnDraw(CDC* pDC)
{  
    // TODO: add draw code for native data here
        CPicDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);
        
        CDC   dcMemory;  
           dcMemory.CreateCompatibleDC(pDC);
    dcMemory.SelectObject(bitmap);   

    CRect rect;
    GetClientRect(&rect);

    pDC->BitBlt((rect.Width()-rcImage.Width())/2,0,rcImage.Width(), rcImage.Height(),&dcMemory,     
    0,0, SRCCOPY);           

}

偶太菜了,20行都搞不定。偶Invalidate了怎么还不显示。
我算是白学了
windows就不懂了,linux或许能帮上忙。
顶上去,平时这么多计算机专业的。偶太菜了。:')
不懂。。。。
楼主学得不少啊,vc++啊
没一个人懂吗?很简单的程序,就是显示不了。都放到OnDraw里可以
看出是定义了CPicView类的两个函数,其他就不懂了:D
顶一个上去,郁闷啊
看程序好像楼主自己定义如何画一个bmp图片?

为啥不先保存一个文件再load呢?貌似那么做简单一点……
偶要实时的显示,不能存为图片。猪大哥偶哪里错了嘛,都放在ONdraw里可以显示
天书啊...!闪人..!
武大郎快来帮忙
劳资,平时这么多高手的
原帖由 西门庆. 于 2008-7-21 09:45 发表
偶要实时的显示,不能存为图片。猪大哥偶哪里错了嘛,都放在ONdraw里可以显示

本猪也遇到过类似的问题,放在一个函数里面可以执行的代码,再写一个函数嵌套一下就是不行……
这种问题看起来简单,实际上调试最麻烦了。有可能是其中的某个变量定义和赋值类型不匹配,也有可能是内存分配的问题,总之,C/C++编译器的宽容在这里是个很大的麻烦。
明明是猪小弟,怎么变成猪大哥了;P
就是内存分配的问题,奶奶的,下午再搞,rs的搞好了。劳资沦落为假程序员了
原帖由 西门庆. 于 2008-7-21 12:40 发表
就是内存分配的问题,奶奶的,下午再搞,rs的搞好了。劳资沦落为假程序员了

;P ;P

不过这个问题也是C/C++编程很常见又很头疼的问题,因为既不会报错也不会警告。
猪大哥,俺在view.h中定义 CRect rcImage 在 view.cpp的构造函数中 CRect rcImage(100,100,200,200) 调试显示rcImage的值是随机数,也就是根本没有初始化。为什么,后来搞成全局变量,程序好了。新问题来了。偶不断接受数据,如何让图片滚动起来,就是来数据到rcImage的尺寸了,偶就显示,这样不断接受数据,不断显示,看起来是滚动的。
还是武大郎好,帮偶解决了
用Timer不就可以不断的循环了?:o :o :o :o :o
每一个字母和符号都认识,合在一起完全不懂~:L
]]
劳资怎么这么菜
怎么gif传不了
我kao 原来西门庆这么菜啊
西门庆你太菜了,在一个函数中定义的rcImage在另一个函数中用。作用域问题,傻逼。
原帖由 武大郎 于 2008-7-21 20:37 发表
西门庆你太菜了,在一个函数中定义的rcImage在另一个函数中用。作用域问题,傻逼。

:') :') :') 晕倒,仔细看了看代码,介个大汗淋漓啊。
不得了了,武大郎教西门庆做烧饼
原帖由 tomcat7836 于 2008-7-22 12:51 发表
不得了了,武大郎教西门庆做烧饼



是春饼
奶奶的,屏幕刷新时抖动厉害,先画到内存中也不行,怎么搞,猪大哥,大朗哥
用DX吧
楼上老大的给个示例嘛,directx没玩过