在视类中加Update_Bitmap成员函数编译没出现问题
void CPvcamView::Update_Bitmap(HANDLE hdib, unsigned short *data, int AutoStop)
{
int i,j,H,W;
unsigned short *head;
float mp;
unsigned int max, min;
unsigned char *dbits;
char  *lpstBitmap;

LPBITMAPINFO lpbi;
LPBITMAPINFOHEADER lpbih;
lpbi=(LPBITMAPINFO)GlobalLock(hdib);
lpbih=(LPBITMAPINFOHEADER)lpbi;


H=lpbih->biHeight;
W=lpbih->biWidth;
max = 0;
min = 65535;
head = data;
// Calculate Scaling Factor//
for (i=0; i<H; i++)
for (j=0;j<W; j++)
{
if ( min >= *head ) min = *head;
if ( max <= *head ) max = *head;
head++;
}

mp = (float)256 / ( (float)max-(float)min ); 

//set the data
lpstBitmap = (LPSTR)lpbi + (WORD)sizeof(BITMAPINFOHEADER) +
   (256 * sizeof(RGBQUAD));
dbits = (unsigned char*)lpstBitmap;

// Transfer Data to 8 bits 
for (i=0; i<H; i++)
for ( j=0;j<W;j++)
*dbits++ = (unsigned char)(((float)*data++ - (float)min)*mp);
//*dbits++ = (unsigned char)(((float)*data++)*255/65535);
InvalidateRect(&m_rcDIB,FALSE);
GlobalUnlock(hdib);
}
我想把函数弄成一个全局的,不想这个函数只成为视类的成员函数
把函数提出来
void Update_Bitmap(HANDLE hdib, unsigned short *data, int AutoStop)
{
int i,j,H,W;
unsigned short *head;
float mp;
unsigned int max, min;
unsigned char *dbits;
char  *lpstBitmap;

LPBITMAPINFO lpbi;
LPBITMAPINFOHEADER lpbih;
lpbi=(LPBITMAPINFO)GlobalLock(hdib);
lpbih=(LPBITMAPINFOHEADER)lpbi;


H=lpbih->biHeight;
W=lpbih->biWidth;
max = 0;
min = 65535;
head = data;
// Calculate Scaling Factor//
for (i=0; i<H; i++)
for (j=0;j<W; j++)
{
if ( min >= *head ) min = *head;
if ( max <= *head ) max = *head;
head++;
}

mp = (float)256 / ( (float)max-(float)min ); 

//set the data
lpstBitmap = (LPSTR)lpbi + (WORD)sizeof(BITMAPINFOHEADER) +
   (256 * sizeof(RGBQUAD));
dbits = (unsigned char*)lpstBitmap;

// Transfer Data to 8 bits 
for (i=0; i<H; i++)
for ( j=0;j<W;j++)
*dbits++ = (unsigned char)(((float)*data++ - (float)min)*mp);
//*dbits++ = (unsigned char)(((float)*data++)*255/65535);
InvalidateRect(&m_rcDIB,FALSE);
GlobalUnlock(hdib);
}编译时出现问题error C2660: 'InvalidateRect' : function does not take 2 parameters
CRect m_rcDIB;是全局变量,不是视类的成员变量

解决方案 »

  1.   

    在全局函数里面,InvalidateRect不能这样调用,你必须取得视类的指针,比如视图类的指针为CView *pView;
    调用方式是:InvalidateRect(pView,(&m_rcDIB,FALSE); 
    或者是:pView->InvalidateRect(&m_rcDIB,FALSE); 
      

  2.   

    少了第一个参数HWND hWnd吧
      

  3.   

    第一个调用是,InvalidateRect(pView,&m_rcDIB,FALSE); 刚才多了个括号
      

  4.   

    视类指针怎么获得呢?是不是CView *pView就可以了