ÇÁ·Î±×·¡¹Ö

 3204, 1/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   hiÂ𱸾ä
   MFC ¦¸ÂÃ߱⠰ÔÀÓ.

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=2010 [º¹»ç]


Àú±â MFC¸¦ ÀÌ¿ëÇÏ¿© ¦¸ÂÃ߱⠰ÔÀÓÀ» ¸¸µå´Â ÁßÀä..

Áö±Ý ¹Í½ºÇÏ´Â °Í ±îÁö ¸¸µé¾ú´Âµ¥..

¸¶¿ì½º·Î Ŭ¸¯À» ÇÏ¿©¼­ Àâ¾Æ³»´Â ºÎºÐÀ» ¸ð¸£°Ú¾î¿ä...¤§

// TestDlg.cpp : ±¸Çö ÆÄÀÏ
//

#include "stdafx.h"
#include "Test.h"
#include "TestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// ÀÀ¿ë ÇÁ·Î±×·¥ Á¤º¸¿¡ »ç¿ëµÇ´Â CAboutDlg ´ëÈ­ »óÀÚÀÔ´Ï´Ù.

class CAboutDlg : public CDialog
{
public:
        CAboutDlg();

// ´ëÈ­ »óÀÚ µ¥ÀÌÅÍÀÔ´Ï´Ù.
        enum { IDD = IDD_ABOUTBOX };

        protected:
        virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV Áö¿øÀÔ´Ï´Ù.

// ±¸ÇöÀÔ´Ï´Ù.
protected:
        DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
        CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()


// CTestDlg ´ëÈ­ »óÀÚ




CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CTestDlg::IDD, pParent)
        , m_bStart(false)
        , m_bBackCard(false)
{
        m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
        CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CTestDlg, CDialog)
        ON_WM_SYSCOMMAND()
        ON_WM_PAINT()
        ON_WM_QUERYDRAGICON()
        //}}AFX_MSG_MAP
        ON_BN_CLICKED(ID_START, &CTestDlg::OnBnClickedStart)
        ON_WM_LBUTTONDOWN()
        ON_WM_TIMER()
END_MESSAGE_MAP()


// CTestDlg ¸Þ½ÃÁö 󸮱â

BOOL CTestDlg::OnInitDialog()
{
        CDialog::OnInitDialog();

        // ½Ã½ºÅÛ ¸Þ´º¿¡ "Á¤º¸..." ¸Þ´º Ç׸ñÀ» Ãß°¡ÇÕ´Ï´Ù.

        // IDM_ABOUTBOX´Â ½Ã½ºÅÛ ¸í·É ¹üÀ§¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
        ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
        ASSERT(IDM_ABOUTBOX < 0xF000);

        CMenu* pSysMenu = GetSystemMenu(FALSE);
        if (pSysMenu != NULL)
        {
                CString strAboutMenu;
                strAboutMenu.LoadString(IDS_ABOUTBOX);
                if (!strAboutMenu.IsEmpty())
                {
                        pSysMenu->AppendMenu(MF_SEPARATOR);
                        pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
                }
        }

        // ÀÌ ´ëÈ­ »óÀÚÀÇ ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ÀÌ ´ëÈ­ »óÀÚ°¡ ¾Æ´Ò °æ¿ì¿¡´Â
        //  ÇÁ·¹ÀÓ¿öÅ©°¡ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù.
        SetIcon(m_hIcon, TRUE);                        // Å« ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù.
        SetIcon(m_hIcon, FALSE);                // ÀÛÀº ¾ÆÀÌÄÜÀ» ¼³Á¤ÇÕ´Ï´Ù.

        // TODO: ¿©±â¿¡ Ãß°¡ ÃʱâÈ­ ÀÛ¾÷À» Ãß°¡ÇÕ´Ï´Ù.
        m_bitCard.LoadBitmapW(IDB_CARD);
        m_bitBackCard.LoadBitmapW(IDB_BackCard);
        
        for (int iRow=0; iRow<4; iRow++)
                for(int iCol=0; iCol<4; iCol++)
                        m_iGame[iRow][iCol]= iRow * 4 + iCol / 2;

        for(int k=0; k<4; k++)
                for(int m=0; m<4; m++)
                        m_iGame3[k][m] = 0;

        m_bStart = false;
        // m_bBackCard = false;


        return TRUE;  // Æ÷Ä¿½º¸¦ ÄÁÆ®·Ñ¿¡ ¼³Á¤ÇÏÁö ¾ÊÀ¸¸é TRUE¸¦ ¹ÝȯÇÕ´Ï´Ù.
}

void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
        if ((nID & 0xFFF0) == IDM_ABOUTBOX)
        {
                CAboutDlg dlgAbout;
                dlgAbout.DoModal();
        }
        else
        {
                CDialog::OnSysCommand(nID, lParam);
        }
}

// ´ëÈ­ »óÀÚ¿¡ ÃÖ¼ÒÈ­ ´ÜÃ߸¦ Ãß°¡ÇÒ °æ¿ì ¾ÆÀÌÄÜÀ» ±×¸®·Á¸é
//  ¾Æ·¡ Äڵ尡 ÇÊ¿äÇÕ´Ï´Ù. ¹®¼­/ºä ¸ðµ¨À» »ç¿ëÇÏ´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °æ¿ì¿¡´Â
//  ÇÁ·¹ÀÓ¿öÅ©¿¡¼­ ÀÌ ÀÛ¾÷À» ÀÚµ¿À¸·Î ¼öÇàÇÕ´Ï´Ù.

void CTestDlg::OnPaint()
{
        if (IsIconic())
        {
                CPaintDC dc(this); // ±×¸®±â¸¦ À§ÇÑ µð¹ÙÀ̽º ÄÁÅؽºÆ®

                SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

                // Ŭ¶óÀ̾ðÆ® »ç°¢Çü¿¡¼­ ¾ÆÀÌÄÜÀ» °¡¿îµ¥¿¡ ¸ÂÃä´Ï´Ù.
                int cxIcon = GetSystemMetrics(SM_CXICON);
                int cyIcon = GetSystemMetrics(SM_CYICON);
                CRect rect;
                GetClientRect(&rect);
                int x = (rect.Width() - cxIcon + 1) / 2;
                int y = (rect.Height() - cyIcon + 1) / 2;

                // ¾ÆÀÌÄÜÀ» ±×¸³´Ï´Ù.
                dc.DrawIcon(x, y, m_hIcon);
        }
        else
        {
                CDialog::OnPaint();
        }
        RedrawAllCard();
        BackCard();
}

// »ç¿ëÀÚ°¡ ÃÖ¼ÒÈ­µÈ âÀ» ²ô´Â µ¿¾È¿¡ Ä¿¼­°¡ Ç¥½ÃµÇµµ·Ï ½Ã½ºÅÛ¿¡¼­
//  ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÕ´Ï´Ù.
HCURSOR CTestDlg::OnQueryDragIcon()
{
        return static_cast<HCURSOR>(m_hIcon);
}


void CTestDlg::InitGame(void)
{
        m_bStart = true;
        RndCard();

        Invalidate(TRUE);
}

void CTestDlg::ViewCard(int iRow, int iCol, int iNum)
{
        CClientDC pDC(this);
        CDC memDC;
        memDC.CreateCompatibleDC(&pDC);
        CBitmap        *oldbm=memDC.SelectObject(&m_bitCard);
        pDC.BitBlt(40+iCol*60, 40+iRow*85, 50, 77, &memDC, iNum%4*50, iNum/4*77, SRCCOPY);
        memDC.SelectObject(oldbm);
}

void CTestDlg::RedrawAllCard(void)
{
        for (int iRow=0; iRow<4; iRow++)
                for(int iCol=0; iCol<4; iCol++)
                        ViewCard(iRow, iCol, m_iGame[iRow][iCol]);
}

void CTestDlg::OnBnClickedStart()
{
        // TODO: ¿©±â¿¡ ÄÁÆ®·Ñ ¾Ë¸² 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
        InitGame();

}

void CTestDlg::RndCard(void)
{
        int iRow, iCol, iRow2, iCol2, iTemp;

        srand((unsigned) time(NULL));

        for (int i=0; i<10000; i++)
        {
                iRow = rand() % 4;
                iCol = rand() % 4;

                iRow2 = rand() % 4;
                iCol2 = rand() % 4;

                if(m_iGame[iRow][iCol] != m_iGame[iRow2][iCol2])
                {
                        iTemp = m_iGame[iRow][iCol];
                        m_iGame[iRow][iCol] = m_iGame[iRow2][iCol2];
                        m_iGame[iRow2][iCol2] = iTemp;
                }
        }
}

void CTestDlg::OnLButtonDown(UINT nFlags, CPoint point)
{
        // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
        if(!m_bStart)
                return;

        int iRow=-1, iCol=-1;
        BOOL b=PosToIndex(point, iRow, iCol);
        if(b)
        {
                ViewCard(iRow, iCol, m_iGame[iRow][iCol]);
        }
        CDialog::OnLButtonDown(nFlags, point );
}

bool CTestDlg::PosToIndex(CPoint pnt, int& iRow, int& iCol)
{
        iRow = iCol = -1;

        for (int i=0; i<4; i++)
                if(pnt.y>40+i*85 && pnt.y<40+(i+1)*85)
                        iRow=i;

        for (int j=0; j<4; j++)
                if(pnt.x>40+j*60 && pnt.x<40+(j+1)*60)
                        iCol=j;

        if(iRow == -1 || iCol == -1)
                return false;
        else
                return true;
}
void CTestDlg::OnTimer(UINT_PTR nIDEvent)
{
        // TODO: Add your message handler code here and/or call default

        CDialog::OnTimer(nIDEvent);

}

void CTestDlg::BackCard(void)
{
        for (int iRow=0; iRow<4; iRow++)
                for(int iCol=0; iCol<4; iCol++)
                {
                        m_iGame2[iRow][iCol] = 0;
                        BackCardView(iRow, iCol, m_iGame2[iRow][iCol]);
                }
}

void CTestDlg::BackCardView(int iRow, int iCol, int iNum)
{
        CClientDC pDC(this);
        CDC memDC;
        memDC.CreateCompatibleDC(&pDC);
        CBitmap        *oldbm=memDC.SelectObject(&m_bitBackCard);
        pDC.BitBlt(40+iCol*60, 40+iRow*85, 50, 77, &memDC, 0, 0, SRCCOPY);
        memDC.SelectObject(oldbm);
}

void CTestDlg::ClearCard(int iRow, int iCol)
{
        CClientDC pDC(this);
        CPen pen;
        CBrush br;

        pen.CreatePen(PS_SOLID, 1, GetSysColor(COLOR_3DFACE));
        br.CreateSolidBrush(GetSysColor(COLOR_3DFACE));

        CPen *oldp=pDC.SelectObject(&pen);
        CBrush *oldb=pDC.SelectObject(&br);
        pDC.Rectangle(40+iCol*60, 40+iRow*85, 40+iCol*60+100, 40+iRow*85);

        pDC.SelectObject(oldp);
        pDC.SelectObject(oldb);
}

Âü°í·Î...ÀÖ´Â ¼Ò½º ¾ø´Â ¼Ò½º ´Ù ³Ö¾î¼­..®½À´Ï´Ù..¤Ð
hacker_guta@nate.com ³×ÀÌÆ®ÇϽøé ÂÊÁö³ª ´ëÈ­Á» °É¾îÁÖ¼¼¿ä..¤Ð

  Hit : 7417     Date : 2009/05/10 06:23



    
3204   Ä¡Æ®¿£Áø °í¼öºÐ °è½Ç±î¿ä[1]     rjsdudals123
02/15 229
3203   ¿À·ù Á» ã¾ÆÁÖ¼¼¿ä [1]     marunim
05/30 956
3202   c¾ð¾î segmentation fault:11 ¿À·ù Áú¹®µå¸³´Ï´Ù![2]     leebk1124
05/21 2034
3201   C++ÇÔ¼ö°ü·Ã Áú¹®ÀÌ¿¡¿ë!![3]     1999dylee
05/11 1862
3200   ÆÄÀ̽ã Áö¹® µå¸³´Ï´Ù.[1]     kksh1107
04/24 1602
3199   ¸®¹ö½ÌÀÇ ¼¼¹ø¤Š ²É - ¿ª¶û-     nninni79
04/20 2308
3198   ´Þ°í³ª ¹®¼­ ½©ÄÚµå[1]     ghjk645
03/24 1625
3197 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î ¼Ò¼ö °ª     adwefq
04/29 1
3196   C¾ð¾î ¼Ò½ºÁú¹®ÀÔ´Ï´Ù![5]     an0088
01/05 5191
3195   C++ /// ºôµå ¿¡·¯ ¤Ð¤Ð[1]     guichanta
08/23 2413
3194 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î µµ¿ÍÁÖ¼¼¿ä¤Ð¤Ð     su6339
04/06 0
3193   ÇØÅ·À» ¹è¿ì·Á°íÇϴµ¥[3]     zoodem04
03/26 4191
3192   c¾ð¾î¸¦ ¹è¿ì°í½Í¾î¿ä ![7]     dwc07238
02/11 4105
3191   ½ºÅÃÀÌ ½×ÀÌ´Â ¹æÇâ¿¡ °üÇؼ­!![1]     hackxx123
12/10 3539
3190   ÇØÅ·Åø¿¡¼­ ip ¾øÀÌ Çϵ忡 ½É´Â°Å¿¡´Â ¾î¶²°Ô ÀÖÀ»±î¿ä?[2]     aowlrgmlals
11/27 4334
3189   C¾ð¾î Çϴµ¥ double ½Ç¼ö¸¦ ³ÖÀºµ¥ ÀÚ²Ù 0.0ÀÌ ³ª¿Í¿ä[2]     fatou10336
11/20 3800
3188   dumpcode.h ÀÌÇØÁ» µµ¿ÍÁÖ¼¼¿ä .[1]     cm6418
11/06 3769
3187   c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.[3]     alstn8150
10/12 3776
3186     [re] c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.     dafher
05/13 1602
3185   c¾ð¾î ¼Ò½º Áú¹® ¹¹°¡ ¹®Á¦ÀÎÁö¤Ì¤Ì¤Ì¤Ì[2]     sjjh96
05/23 4311
1 [2][3][4][5][6][7][8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org