2012-02-13 164 views
2
typedef struct{ 
    IMAGE *fuente; 
    IMAGE *destino; 
    int saltos; 
} ARGTHREAD; 

ARGTHREAD values; 

DWORD WINAPI ProcessThread(LPVOID arg){ 

    int i,j,imageRows,imageCols,C,R; 
    PIXEL *pfte,*pdst; 
    PIXEL *v0,*v1,*v2,*v3,*v4,*v5,*v6,*v7; 

    //memcpy(arg->destino, arg->fuente,sizeof(IMAGE)-sizeof(PIXEL *)); 

    imageRows = arg->fuente->infoheader.rows;//error here -> 
    imageCols = arg->fuente->infoheader.cols;//error here -> 

    //arg->destino->pixel=(PIXEL *)malloc(sizeof(PIXEL)*imageRows*imageCols); 

    i=arg->saltos;//error here -> 
    R=imageRows-1; 
    C=imageCols-1; 
    while(i<R){ 
       j=1;   
      while(j<C){ 
       pfte=arg->fuente->pixel+imageCols*i+j;//error here -> 
       v0=pfte-imageCols-1; 
       v1=pfte-imageCols; 
       v2=pfte-imageCols+1; 
       v3=pfte-1; 
       v4=pfte+1; 
       v5=pfte+imageCols-1; 
       v6=pfte+imageCols; 
       v7=pfte+imageCols+1; 

       pdst=arg->destino->pixel+imageCols*i+j;//error here -> 

      if(abs(blackandwhite(*pfte)-blackandwhite(*v0))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v1))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v2))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v3))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v4))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v5))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v6))>DIF || 
        abs(blackandwhite(*pfte)-blackandwhite(*v7))>DIF){ 

        pdst->red=0; 
        pdst->green=0; 
        pdst->blue=0; 
       } 

       else{ 
        pdst->red=255; 
        pdst->green=255; 
        pdst->blue=255; 
       } 
       j++;   
      } 
     i = i+numProc; 
    } 
} 

這是我如何創建我的胎面:- >必須指向類/結構/聯合/泛型類型錯誤

MyThread的=的CreateThread(NULL,0, (LPTHREAD_START_ROUTINE)ProcessThread ,& values,0,NULL);

我得到了很多這些錯誤,我不知道爲什麼?

錯誤8錯誤C2228:左「.cols'必須具有類/結構/聯合

+0

'arg'是用'無效*' - 你怎麼能指望'arg-> fuente'工作? – ildjarn 2012-02-13 23:13:11

回答

3

argvoid*指針,你不能沒有第一投射回相應的類型得到什麼呢:

ARGTHREAD* arg_values = static_cast<ARGTHREAD*>(arg); 
// use arg_values->... 
0

你的程序請求void*的元件,這不是一個類型(帶部件)。首先將其轉換爲您通過的類型(ARGTHREAD),然後您可以將void*視爲ARGTHREAD*

相關問題