首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

windows api候高手!有关问题解决,就给分,分只给一个人

2012-08-11 
windows api在线等候高手!问题解决,就给分,分只给一个人!void daima(){srand((unsigned)time(NULL))butto

windows api在线等候高手!问题解决,就给分,分只给一个人!
void daima(){
srand((unsigned)time(NULL));
buttom[0][0]=rand() % 15 + 1;//此方法很巧妙的把值规定为1-->15.
int m,n;
for( m=0;m<4;m++){
for( n=0;n<4;n++){
if(buttom[m][n]==0)
buttom[m][n]=(buttom[0][0]++)%16;

}
}
buttom[0][0]=buttom[0][0]-16;



zhdc=GetDC(zhwnd);
HDC hqie=CreateCompatibleDC(NULL);
HDC hzhongjian=CreateCompatibleDC(NULL);
HBITMAP qiedetu=(HBITMAP)LoadImage(zhInstance,MAKEINTRESOURCE(IDB_BITMAP8),IMAGE_BITMAP,600,600,LR_DEFAULTCOLOR);
SelectObject(zhdc,qiedetu);
SelectObject(hzhongjian,qiedetu);
SelectObject(hqie,qiedetu);



int h=0,l=0;
for( m=0;m<4;m++){
for( n=0;n<4;n++){

l=(buttom[m][n]%4)*150;
h=(buttom[m][n]/4)*150;

switch(buttom[m][n])
{
case 0:BitBlt(hzhongjian,m*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 1:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 2:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 3:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 4:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 5:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 6:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 7:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 8:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 9:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 10:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 11:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 12:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 13:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 14:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 15:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
}
}
}

BitBlt(zhdc,0,0,600,600,hzhongjian,0,0,SRCCOPY);
DeleteObject(qiedetu);
DeleteDC(hqie);
DeleteDC(hzhongjian);
ReleaseDC(zhwnd,zhdc);
return;





这是一个把一张图片打乱成16块,再重新组合的程序。
为什么显示出来的图片没有一点打乱的样子?即:为什么没有得到重组的图片?

[解决办法]
给你改了改。
‘洗牌’buttom 初始化还有问题,但可以显示。

C/C++ code
#define SQUARE_SIZE 100int buttom[4][4] = {{15,14,13,12},{11,10,9,8},{7,6,5,4},{3,2,1,0}};HWND zhwnd;void daima(){// init index  bug ,????    srand((unsigned)time(NULL));    buttom[0][0]=rand() % 15 + 1;    int m,n;    for( m=0;m<4;m++)    {        for( n=0;n<4;n++)        {            if(buttom[m][n]==0) buttom[m][n]=(buttom[0][0]++) % 16;        }    }    buttom[0][0]=buttom[0][0]-16;// get dc        HDC zhdc=GetDC(zhwnd);// create empty bmp    HDC hzhongjian=CreateCompatibleDC(zhdc);    HBITMAP membitmap=CreateCompatibleBitmap(zhdc,500,400);    HBITMAP old=(HBITMAP)SelectObject(hzhongjian,membitmap);// create mem bmp    HBITMAP qiedetu=(HBITMAP)LoadImage(AfxGetInstanceHandle(),        MAKEINTRESOURCE(IDB_BITMAP8),IMAGE_BITMAP,600,600,LR_DEFAULTCOLOR);    HDC hqie=CreateCompatibleDC(zhdc);    HBITMAP old1=(HBITMAP)SelectObject(hqie,qiedetu);//        int h=0,l=0;    for( m=0;m<4;m++)    {        for( n=0;n<4;n++)        {                        l=(buttom[m][n]%4)*SQUARE_SIZE;            h=(buttom[m][n]/4)*SQUARE_SIZE;                        switch(buttom[m][n])            {            case 0:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 1:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 2:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 3:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 4:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 5:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 6:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 7:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 8:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 9:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 10:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 11:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 12:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 13:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 14:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            case 15:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break;            }        }    }// copy to dc        BitBlt(zhdc,0,0,500,400,hzhongjian,0,0,SRCCOPY);// reset    SelectObject(hqie,old1);    SelectObject(hzhongjian,old);// free    DeleteObject(qiedetu);    DeleteDC(hqie);    DeleteDC(hzhongjian);    ReleaseDC(zhwnd,zhdc);    return;} 

热点排行