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,&amp; values,0,NULL);
我收到了很多这些错误,我无法弄明白为什么?
错误8错误C2228:'.cols'的左边必须有class / struct / union
答案 0 :(得分:3)
arg
是一个void*
指针,如果没有先将其转换回相应的类型,则无法获取任何内容:
ARGTHREAD* arg_values = static_cast<ARGTHREAD*>(arg);
// use arg_values->...
答案 1 :(得分:0)
您的程序请求void*
的元素,该元素不是类型(包含成员)。首先将其转换为您已通过的类型(ARGTHREAD
),然后您可以将void*
视为ARGTHREAD*
。