Visual C++ MFC 프로젝트 관련 질문입니다..
안녕하세요,
MFC 싱글도큐먼트로 맞고프로그램을 만들려고합니다.
OnDraw()
int x, y;
CRect rect;
GetClientRect(rect);
CDC memDC;
memDC.CreateCompatibleDC(pDC);
x=rect.right;
y=rect.bottom;
CBitmap bitmapBACK, bitmapBACKPAE, pic[2], paeBit[48], *oldbitmap;
bitmapBACK.LoadBitmapW(IDB_BACK); //IDB_BACK 이미지 넣어둠
oldbitmap=memDC.SelectObject(&bitmapBACK); //IDB_BACK 이미지 장전
pDC->StretchBlt(0,0,x,y,&memDC,0,0,1200,700,SRCCOPY);
memDC.SelectObject(oldbitmap);// 배경 화면 그림
bitmapBACKPAE.LoadBitmapW(IDB_BACKPAE); //IDB_BACKPAE 이미지 넣움
oldbitmap=memDC.SelectObject(&bitmapBACKPAE); //bitmapBACKPAE변수에 IDB_BACKPAE이미지넣음
pDC->StretchBlt(x-500,10,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-430,10,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-360,10,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-290,10,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-220,10,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-500,90,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-430,90,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-360,90,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-290,90,50,70,&memDC,0,0,48,72,SRCCOPY);
pDC->StretchBlt(x-220,90,50,70,&memDC,0,0,48,72,SRCCOPY);//컴퓨터 아래쪽 패
pDC->StretchBlt((x/2)-20,(y/2)-25,50,70,&memDC,0,0,48,72,SRCCOPY);
memDC.SelectObject(oldbitmap);//가운데 깔린 패
pic[0].LoadBitmapW(IDB_COM);
oldbitmap=memDC.SelectObject(&pic[0]);
pDC->StretchBlt(x-150,0,150,180,&memDC,0,0,150,180,SRCCOPY);
memDC.SelectObject(oldbitmap);//컴퓨터 그림
pic[1].LoadBitmapW(IDB_USER);
oldbitmap=memDC.SelectObject(&pic[1]);
pDC->StretchBlt(x-150,y-180,150,180,&memDC,0,0,150,180,SRCCOPY);
memDC.SelectObject(oldbitmap);//user 그림
int temp[48],k,paeNum[48]; //랜덤함수를 이용해 패 랜덤으로 출력
srand((unsigned int)time(NULL));
for(int q=0; q<48; q++)
temp[q]=100;
for(int i=0; i<48; i++){
k=rand()%48;
while(k==temp[k]){
k=rand()%48;
}
paeNum[i]=k;
temp[k]=k;
switch(paeNum[i]){
case 0:
paeBit[i].LoadBitmapW(IDB_BITMAP1);
break;
case 1:
paeBit[i].LoadBitmapW(IDB_BITMAP2);
break;
case 2:
paeBit[i].LoadBitmapW(IDB_BITMAP3);
break;
case 3:
paeBit[i].LoadBitmapW(IDB_BITMAP4);
break;
case 4:
paeBit[i].LoadBitmapW(IDB_BITMAP5);
break;
case 5:
paeBit[i].LoadBitmapW(IDB_BITMAP6);
break;
case 6:
paeBit[i].LoadBitmapW(IDB_BITMAP7);
break;
case 7:
paeBit[i].LoadBitmapW(IDB_BITMAP8);
break;
case 8:
paeBit[i].LoadBitmapW(IDB_BITMAP9);
break;
case 9:
paeBit[i].LoadBitmapW(IDB_BITMAP10);
break;
case 10:
paeBit[i].LoadBitmapW(IDB_BITMAP11);
break;
case 11:
paeBit[i].LoadBitmapW(IDB_BITMAP12);
break;
case 12:
paeBit[i].LoadBitmapW(IDB_BITMAP13);
break;
case 13:
paeBit[i].LoadBitmapW(IDB_BITMAP14);
break;
case 14:
paeBit[i].LoadBitmapW(IDB_BITMAP15);
break;
case 15:
paeBit[i].LoadBitmapW(IDB_BITMAP16);
break;
case 16:
paeBit[i].LoadBitmapW(IDB_BITMAP17);
break;
case 17:
paeBit[i].LoadBitmapW(IDB_BITMAP18);
break;
case 18:
paeBit[i].LoadBitmapW(IDB_BITMAP19);
break;
case 19:
paeBit[i].LoadBitmapW(IDB_BITMAP20);
break;
case 20:
paeBit[i].LoadBitmapW(IDB_BITMAP21);
break;
case 21:
paeBit[i].LoadBitmapW(IDB_BITMAP22);
break;
case 22:
paeBit[i].LoadBitmapW(IDB_BITMAP23);
break;
case 23:
paeBit[i].LoadBitmapW(IDB_BITMAP24);
break;
case 24:
paeBit[i].LoadBitmapW(IDB_BITMAP25);
break;
case 25:
paeBit[i].LoadBitmapW(IDB_BITMAP26);
break;
case 26:
paeBit[i].LoadBitmapW(IDB_BITMAP27);
break;
case 27:
paeBit[i].LoadBitmapW(IDB_BITMAP28);
break;
case 28:
paeBit[i].LoadBitmapW(IDB_BITMAP29);
break;
case 29:
paeBit[i].LoadBitmapW(IDB_BITMAP30);
break;
case 30:
paeBit[i].LoadBitmapW(IDB_BITMAP31);
break;
case 31:
paeBit[i].LoadBitmapW(IDB_BITMAP32);
break;
case 32:
paeBit[i].LoadBitmapW(IDB_BITMAP33);
break;
case 33:
paeBit[i].LoadBitmapW(IDB_BITMAP34);
break;
case 34:
paeBit[i].LoadBitmapW(IDB_BITMAP35);
break;
case 35:
paeBit[i].LoadBitmapW(IDB_BITMAP36);
break;
case 36:
paeBit[i].LoadBitmapW(IDB_BITMAP37);
break;
case 37:
paeBit[i].LoadBitmapW(IDB_BITMAP38);
break;
case 38:
paeBit[i].LoadBitmapW(IDB_BITMAP39);
break;
case 39:
paeBit[i].LoadBitmapW(IDB_BITMAP40);
break;
case 40:
paeBit[i].LoadBitmapW(IDB_BITMAP41);
break;
case 41:
paeBit[i].LoadBitmapW(IDB_BITMAP42);
break;
case 42:
paeBit[i].LoadBitmapW(IDB_BITMAP43);
break;
case 43:
paeBit[i].LoadBitmapW(IDB_BITMAP44);
break;
case 44:
paeBit[i].LoadBitmapW(IDB_BITMAP45);
break;
case 45:
paeBit[i].LoadBitmapW(IDB_BITMAP46);
break;
case 46:
paeBit[i].LoadBitmapW(IDB_BITMAP47);
break;
case 47:
paeBit[i].LoadBitmapW(IDB_BITMAP48);
break;
}
}
for(int i=0; i<5; i++){
oldbitmap=memDC.SelectObject(&paeBit[i]);
pDC->StretchBlt((x-250)-(i*50),y-70,40,50,&memDC,0,0,48,72,SRCCOPY);
memDC.SelectObject(oldbitmap);//우리쪽 아래 5개 패
}
for(int i=5; i<10; i++){
oldbitmap=memDC.SelectObject(&paeBit[i]);
pDC->StretchBlt(x-(i*50),y-130,40,50,&memDC,0,0,48,72,SRCCOPY);
memDC.SelectObject(oldbitmap);//우리쪽 위 5개 패
}
for(int i=0; i<4; i++){
oldbitmap=memDC.SelectObject(&paeBit[i+20]);
pDC->StretchBlt(((x/2)-140)+(i*80),(y/2)-105,40,50,&memDC,0,0,48,72,SRCCOPY);
memDC.SelectObject(oldbitmap);//가운데 깔린 패 5개 (위)
}
for(int i=0; i<4; i++){
oldbitmap=memDC.SelectObject(&paeBit[i+24]);
pDC->StretchBlt(((x/2)-140)+(i*80),(y/2)+65,40,50,&memDC,0,0,48,72,SRCCOPY);
memDC.SelectObject(oldbitmap);//가운데 깔린 패 5개 (아래)
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
얕은 지식이라 제 딴으로 CView클래스의 OnDraw()함수에
배경과 컴퓨터패 2x5, 가운데 패, user쪽패 2x5, 가운데 깔린패 를 랜덤함수와 스위치문을 이용해서 화면을 그리긴 했는데,
질문드릴것이,
패를 클릭했을때 가운데 패와 먹은 패의 자리로 그림이 옮겨가도록 하는 것을 짜려고합니다.
LBUTTONDOWN()을 작성하려하는데 도저히 답이 안나오더군요...
랜덤하게 뿌려진 패를 클릭하였을때 그 패가 먹은패 쪽으로 옮겨가고 가지고있던 그 자리는 빈칸으로 되는 것을 어떻게 짜야할지 ..
힌트 좀 부탁드립니다,
그리고 궁금한것이있는데, OnDraw()에 내용들을 OnLBUTTONDOWN()에서 사용할수 없는건가요?
댓글 달기