ÇÁ·Î±×·¡¹Ö

 3206, 5/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 : 7413     Date : 2009/05/10 06:23



    
3126   CÇÁ·Î±×·¡¹Ö ´äº¯Á»..[1]     knagek
09/04 7426
3125   ¹®¼­¾ÏÈ£ Ǫ´Â¹ý??[1]     laclarte
01/16 7425
  MFC ¦¸ÂÃ߱⠰ÔÀÓ.     hiÂ𱸾ä
05/10 7412
3123   C¾ð¾î ÇÁ·Î±×·¡¹Ö µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð[2]     gxcolin
05/17 7372
3122   ¸ð¸£´Â°Ô À־¿©~~~~~c¾ð¾î Ã¥º¸´Ù°¡¿©~~[3]     mintsky1024
12/26 7333
3121   [C¾ð¾î]µÎ ÀÚ¸® ¼ýÀÚ ÀÚ¸´¼ö ¹Ù²Ù±â[1]     tfvarsity
03/19 7328
3120   OllyDBG »ç¿ë¹ý ¾Ë·ÁÁÖ¼¼¿ë~!!![3]     ¾Æ¸£ºô
09/26 7320
3119   [c¾ð¾î] Stack around the variable 'x' was corrupted[1]     yj6393
10/13 7265
3118   C¾ð¾î ÃÖ´ë°ø¾à¼ö ¹®Á¦[2]     so072941594
07/17 7258
3117   visual c++ 6.0 ¾îµð¼­´Ù¿î¹Þ³ª¿ä??[5]     1234321
02/01 7251
3116   TCP/IP ¼ÒÄÏ ÇÁ·Î±×·¡¹Ö ¿À·ù[3]     whtjdwls151
07/13 7205
3115   c++ ¼ÒÄÏÇÁ·Î±×·¡¹Ö     qaz4564
01/14 7194
3114   °£´ÜÇÑ °ÔÀÓ¼Ò½º C++·Î ¸¸µå´Â °Å..[2]     dmsal154
09/06 7167
3113   visual studio 2010 »ç¿ë¹ýÁ» °¥ÄÑ ÁÖ¼¼¿ä[2]     gkswls123
08/06 7068
3112   ÇÑ ÇÁ·ÎÁ§Æ®¿¡ ¿©·¯ ¼Ò½ºÄڵ带 µÑ¼ö¾ø³ª¿ä?[3]     SeungAh
03/01 7048
3111   ¸®´ª½º c¿Í À©µµ¿ì cÀÇ Â÷ÀÌÁ¡À» ¾Ë·ÁÁÖ¼¼¿ä.,..[1]     Ä«ÀÌÀú9
09/04 7043
3110   ¾È³çÇϼ¼¿ä? ¸ÞƾÀ̶ó´Â °ÔÀÓ¿¡ ¸ÅÅ©·Î ¹®Àǵ帳´Ï´Ù.[6]     ¸ÞƾÇØÄ¿
06/30 7041
3109   [C¾ð¾î] Çì´õÆÄÀÏ, #ifndef, #define Áú¹®ÀÌ¿ä.[2]     ¿µ¿øÇÑ°øºÎ
06/11 6981
3108     [re] ºÒ¹ýÀÎÁö ¾Ë·ÁÁÖ¼¼¿ä     admin
09/05 6939
3107   [C¾ð¾î]ÆÄÀÏÀÔÃâ·Â¿¡¼­ fwrite, fclose Áú¹®ÀÔ´Ï´Ù.[3]     bak405
12/12 6938
[1][2][3][4] 5 [6][7][8][9][10]..[161]

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