1.我在类C~View类的头文件里定义了两个共有变量:dis_w,dis_h,他们分别是图像数据的宽度和高度。
2.我在C~View类的构造函数里给他俩赋初值为零。
3.在OnInitialUpdate()函数里:
      sizeTotal.cx = dis_w; 
sizeTotal.cy = dis_h;
4.我建立了一个打开文件的函数OnFileOpen();在这个函数里它俩都给赋上新值2048和1024;
5.我在OnDraw()里这么写:
::StretchDIBits(pDC->m_hDC,0,0,dis_w,dis_h,0,0,src_w,src_h, bDataBuffer,(LPBITMAPINFO)bmp,DIB_RGB_COLORS,SRCCOPY); 
6.我建立的调整图像输出尺寸的函数为SetSize()
  里面分别让dis_w和dis_h乘以一个放大或缩小的倍数。问题出在这里:如果我在第二步给他俩赋值为零,则程序不运行。我只好给他俩赋为2048和1024才可以正常显示图像。
              我调用打开文件函数的时候,dis_w和dis_h会得到其他值,但是在OnInitialUpdate()函数里,总是2048和 1024。还有调用缩放大小的时候,窗口的滚动条还是1024和2048。小弟刚开始学VC,希望大家不要笑话,多多指教啊!

解决方案 »

  1.   

    弄清楚各函数运行的先后问题构造函数
    OnInitialUpdate
    OnDrawOnFileOpen如果在构造函数里,赋值为0,则不能显示滚动条,图也不能显示
      

  2.   

    你在OnDraw()调用之前要保证有机会调用OnFileOpen()给dis_w和dis_h赋值
      

  3.   

    那是不是应该把OnFileOpen这个函数放到C~Doc类里面呢?
      

  4.   

    大家多帮帮我啊,怎样才能在OnDraw()调用之前要保证有机会调用OnFileOpen()给dis_w和dis_h赋值呢?
      

  5.   

    在OnCreate里调用
    OnFileOpen()试试