< »óÅÂ ¹Ù >

WTL¿¡¼­ °ø¿ë ÄÁÆ®·ÑÀÇ »óÅ ¹Ù ÄÁÆ®·ÑÀ» CStatusBarCtrlT À̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼­ ĸ½¶È­Çϰí ÀÖ½À´Ï´Ù.  ÅÛÇø´ Àμö¿¡´Â Ŭ·¡½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù¸¸  ±× Ŭ·¡½º´Â CStatusBarCtrlT Ŭ·¡½ºÀÇ base class·Î¼­ »ç¿ëµË´Ï´Ù.  atlctrls.h Çì´õ¿¡¼­´Â typedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.

// atlctrls.h

typedef CStatusBarCtrlT<ATL::CWindow>   CStatusBarCtrl;

                      


À̰ÍÀº CStatusBarCtrl Ŭ·¡½º´Â CWindow Ŭ·¡½ºÀÇ »ó¼Ó Ŭ·¡½ºÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

¡¡WTL
ÀÇ CStatusBarCtrlŬ·¡½º´Â MFCÀÇ µ¿¸íÀÇ Å¬·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CStatusBarCtrlŬ·¡½º¸¦ »ç¿ëÇÏ´Â ¿¹ÀÔ´Ï´Ù. ÇÁ·¹ÀÓ À©µµ¿ì¸¦ ÀÛ¼ºÇØ »óÅ ¹Ù¸¦ Ãß°¡ÇÏ°í ±× »óÅ ¹ÙÀÇ  2¹øÂ° ÀÇ ÆäÀο¡ ÇÁ·¹ÀÓ À©µµ¿ìÀÇ Å¬¶óÀÌ¾ðÆ® ¿µ¿ª»óÀÇ ¸¶¿ì½º ÁÂÇ¥¸¦ Ç¥½ÃÇÕ´Ï´Ù.

 

// stdafx.h

#include <atlbase.h>

#include <atlapp.h>

extern CAppModule _Module;

#include <atlwin.h>

 

#include <atlcrack.h>

#include <atlmisc.h>

#include <atlctrls.h>

#include <atlframe.h>

                      

 

// mainfrm.h

class CMainFrame : public CFrameWindowImpl<CMainFrame>,

    public CUpdateUI<CMainFrame>, public CMessageFilter, public CIdleHandler

{

public:

    DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)

 

    virtual BOOL PreTranslateMessage(MSG* pMsg){

        return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg);

    }

 

    virtual BOOL OnIdle(){

        UIUpdateStatusBar();

        return FALSE;

    }

 

    BEGIN_UPDATE_UI_MAP(CMainFrame)

        // ¿£Æ®¸® ¾øÀ½

    END_UPDATE_UI_MAP()

 

    BEGIN_MSG_MAP_EX(CMainFrame)

        MSG_WM_MOUSEMOVE(OnMouseMove)

        MSG_WM_SIZE(OnSize)

        MSG_WM_CREATE(OnCreate)

        COMMAND_ID_HANDLER_EX(ID_APP_EXIT, OnMenuExit)

        CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)

        CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)

    END_MSG_MAP()

 

    LRESULT OnCreate(LPCREATESTRUCT lpcs){

        // »óÅ ¹Ù¸¦ ÀÛ¼º

        CreateSimpleStatusBar();

        UIAddStatusBar(m_hWndStatusBar);

 

        // ¸Þ½ÃÁö ·çÇÁ¿¡ ¸Þ¼¼Áö ÇÊÅÍ¿Í ¾ÆÀ̵¹ Çڵ鷯¸¦ Ãß°¡

        CMessageLoop* pLoop = _Module.GetMessageLoop();

        pLoop->AddMessageFilter(this);

        pLoop->AddIdleHandler(this);

 

        return 0;

    }

 

    void OnSize(UINT uType, CSize size){

        // ¸¶¿ì½º ÁÂÇ¥¸¦ Ç¥½ÃÇÏ´Â ÆäÀÎÀÇ Æø

        int cxPosPane = 90;

 

        // µ¥Æ÷¸£Æ®ÆäÀÎÀÇ Æø

        CRect rcClient;

        GetClientRect(rcClient);

        int cxDefaultPane = rcClient.right - cxPosPane

            - ::GetSystemMetrics(SM_CXVSCROLL) - ::GetSystemMetrics(SM_CXEDGE);

 

        // »óÅ ¹Ù¿¡ ÆäÀÎÀ» ¼³Á¤

        CStatusBarCtrl bar = m_hWndStatusBar;

        int nPanes[] = {cxDefaultPane, cxDefaultPane + cxPosPane};

        bar.SetParts(sizeof(nPanes)/sizeof(nPanes[0]), nPanes);

 

        // base classÀÇWM_SIZE¸Þ¼¼Áö Çڵ鷯µµ È£ÃâÇϱâ (À§ÇØ)¶§¹®¿¡

        SetMsgHandled(false);

    }

 

    void OnMouseMove(UINT uFlags, CPoint ptClient){

        CString strPos;

        strPos.Format(_T("X:%d, Y:%d"), ptClient.x, ptClient.y);

 

        CStatusBarCtrl bar = m_hWndStatusBar;

        bar.SetText(1, strPos);

    }

 

    void OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){

        PostMessage(WM_CLOSE);

    }

};

                      

 

// app.cpp

#include "stdafx.h"

 

#include "resource.h"

 

#include "mainfrm.h"

 

CAppModule _Module;

 

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nCmdShow)

{

    HRESULT hRes = ::CoInitialize(NULL);

    ATLASSERT(SUCCEEDED(hRes));

 

    ::DefWindowProc(NULL, 0, 0, 0L);

 

    AtlInitCommonControls(ICC_COOL_CLASSES | ICC_WIN95_CLASSES);

 

    hRes = _Module.Init(NULL, hInstance);

    ATLASSERT(SUCCEEDED(hRes));

 

    int nRet = 0;

    // BLOCK: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà

    {

        CMessageLoop theLoop;

        _Module.AddMessageLoop(&theLoop);

 

        CMainFrame wnd;

        wnd.CreateEx();

        wnd.ShowWindow(nCmdShow);

        wnd.UpdateWindow();

 

        nRet = theLoop.Run();

 

        _Module.RemoveMessageLoop();

    }

 

    _Module.Term();

    ::CoUninitialize();

 

    return nRet;

}

                      


¡¡
¿ì¼± stdafx.h ¿¡¼­´Â CStatusBarCtrlŬ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ­ atlctrls.h Çì´õ¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù.

¡¡
CMainFrame Ŭ·¡½º¿¡¼­´Â ÀϹÝÀûÀÎ ÇÁ·¹ÀÓ À©µµ¿ì¸¦ ÀÛ¼ºÇØ  WM_CREATE ¸Þ¼¼Áö Çڵ鷯·Î CreateSimpleStatusBar()¸¦ È£ÃâÇØ »óÅ ¹Ù¸¦ ÀÛ¼ºÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ  ÇÁ·¹ÀÓ À©µµ¿ìÀÇ ¸â¹ö º¯¼öÀÎ m_hWndStatusBar¿¡ »óÅ ¹ÙÀÇ ÇÚµéÀÌ ¼³Á¤µË´Ï´Ù.

¡¡
´ÙÀ½¿¡ WM_SIZE ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÏ°í »óÅ ¹Ù¿¡ 2°³ÀÇ ÆäÀÎÀ» Ãß°¡ÇÕ´Ï´Ù. 1¹øÂ° ´Â ÇÁ·¹ÀÓ À©µµ¿ìÀÇ Å©±â¿¡ ¸ÂÃß¾î ÆøÀ» Á¶Á¤ÇÏ´Â µ¥Æ÷¸£Æ® ÆäÀÎ,  2¹øÂ° ´Â ÇÁ·¹ÀÓ À©µµ¿ìÀÇ Å¬¶óÀÌ¾ðÆ® ¿µ¿ª»óÀÇ ¸¶¿ì½º ÁÂÇ¥¸¦ Ç¥½ÃÇÏ´Â ÆäÀÎÀÔ´Ï´Ù.  ÆäÀÎÀ» ¼³Á¤ÇÏ·Á¸é SetParts()¸¦ È£ÃâÇÕ´Ï´Ù.  Á¦1Àμö¿¡´Â ÆäÀÎÀÇ ¼ö, Á¦2Àμö¿¡´Â ÆäÀÎÀÇ ¿ì´ÜÀÇ ÁÂÇ¥¸¦ ¿ä¼Ò·Î ÇÏ´Â ¹è¿­¿¡ÀÇ Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÕ´Ï´Ù. µ¡ºÙ¿© WM_SIZE ¸Þ¼¼Áö´Â base classÀÎ CFrameWindowImplŬ·¡½º³»¿¡¼­µµ ¸ÅÇÎ µÇ°í Àֱ⠶§¹®¿¡ ¸¶Áö¸·¿¡ SetMsgHandled(false)¸¦ È£ÃâÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

¡¡
´ÙÀ½À¸·Î WM_MOUSEMOVE ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù. ¿©±â¿¡¼­´Â Ŭ¶óÀÌ¾ðÆ® ÁÂÇ¥¸¦ SetText()¿¡ ÀÇÇØ »óÅ ¹ÙÀÇ  2¹øÂ°ÀÇ  ÆäÀÎ(À妽º´Â1) ¿¡ Ç¥½ÃÇϰí ÀÖ½À´Ï´Ù.

¡¡
¸¶Áö¸·À¸·Î _tWinMain()¾È¿¡¼­ ICC_WIN95_CLASSES Ç÷¡±×¸¦ ÁöÁ¤ÇØ AtlInitCommonControls()¸¦ È£ÃâÇÕ´Ï´Ù.  À̰Ϳ¡ ÀÇÇØ »óÅ ¹Ù ÄÁÆ®·ÑÀÌ »ç¿ë °¡´ÉÇÏ°Ô µË´Ï´Ù.



¸ÖƼ ÆäÀÎ ½ºÅ×ÀÌÅͽº ¹Ù

¡¡À§ÀÇ ¿¹¿¡¼­´Â »óÅ ¹Ù¿¡ º¹¼öÀÇ ÆäÀÎ(¸ÖƼ ÆäÀÎ) À» ¼³Á¤Çϱâ À§Çؼ­ WM_SIZE ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇØ SetParts()¸¦ È£ÃâÇß½À´Ï´Ù.  WTLÀº ÀÌ·¯ÇÑ ÀÛ¾÷À» °£·«È­Çϱâ À§Çؼ­ CMultiPaneStatusBarCtrl¶ó°í Çϴ Ŭ·¡½º¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù.  CMultiPaneStatusBarCtrl Ŭ·¡½º´Â CStatusBarCtrl Ŭ·¡½ºÀÇ »ó¼Ó Ŭ·¡½º·Î  atlctrlx.h Çì´õ¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵǰí ÀÖ½À´Ï´Ù.

// atlctrlx.h

template <class T, class TBase = CStatusBarCtrl>

class ATL_NO_VTABLE CMultiPaneStatusBarCtrlImpl : public ATL::CWindowImpl< T, TBase >

{

    ...

    ...

};

 

class CMultiPaneStatusBarCtrl

    : public CMultiPaneStatusBarCtrlImpl<CMultiPaneStatusBarCtrl>

{

public:

    DECLARE_WND_SUPERCLASS(_T("WTL_MultiPaneStatusBar"), GetWndClassName())

};

                      


¡¡
´ÙÀ½¿¡ ³ªÅ¸³»´Â °ÍÀº Àü¼úÀÇ ÇÁ·Î±×·¥À» CMultiPaneStatusBarCtrlŬ·¡½º¸¦ »ç¿ëÇØ °íÃÄ ¾²´Â ¿¹ÀÔ´Ï´Ù.

// stdafx.h

#include <atlbase.h>

#include <atlapp.h>

extern CAppModule _Module;

#include <atlwin.h>

 

#include <atlcrack.h>

#include <atlmisc.h>

#include <atlctrls.h>

#include <atlctrlx.h>  // CMultiPaneStatusBarCtrlŬ·¡½º¸¦ »ç¿ëÇϱâ À§ÇØ

#include <atlframe.h>

                      

 

// mainfrm.h

class CMainFrame : public CFrameWindowImpl<CMainFrame>,

    public CUpdateUI<CMainFrame>, public CMessageFilter, public CIdleHandler

{

public:

    DECLARE_FRAME_WND_CLASS(NULL, IDR_MAINFRAME)

 

    CMultiPaneStatusBarCtrl m_wndStatusBar;

 

    virtual BOOL PreTranslateMessage(MSG* pMsg){

        return CFrameWindowImpl<CMainFrame>::PreTranslateMessage(pMsg);

    }

 

    virtual BOOL OnIdle(){

        UIUpdateStatusBar();

        return FALSE;

    }

 

    BEGIN_UPDATE_UI_MAP(CMainFrame)

        // ¿£Æ®¸® ¾øÀ½

    END_UPDATE_UI_MAP()

 

    BEGIN_MSG_MAP_EX(CMainFrame)

        MSG_WM_MOUSEMOVE(OnMouseMove)

        MSG_WM_CREATE(OnCreate)

        COMMAND_ID_HANDLER_EX(ID_APP_EXIT, OnMenuExit)

        CHAIN_MSG_MAP(CUpdateUI<CMainFrame>)

        CHAIN_MSG_MAP(CFrameWindowImpl<CMainFrame>)

    END_MSG_MAP()

 

    LRESULT OnCreate(LPCREATESTRUCT lpcs){

        // »óÅ ¹Ù¸¦ ÀÛ¼º

        m_hWndStatusBar = m_wndStatusBar.Create(m_hWnd);

        UIAddStatusBar(m_hWndStatusBar);

 

        // »óÅ ¹Ù¿¡ ÆäÀÎÀ» ¼³Á¤

        int nPanes[] = {ID_DEFAULT_PANE, IDS_PANE_POS};

        m_wndStatusBar.SetPanes(nPanes, sizeof(nPanes)/sizeof(nPanes[0]));

 

        // ¸Þ½ÃÁö ·çÇÁ¿¡ ¸Þ¼¼Áö ÇÊÅÍ¿Í ¾ÆÀ̵¹ Çڵ鷯¸¦ Ãß°¡

        CMessageLoop* pLoop = _Module.GetMessageLoop();

        pLoop->AddMessageFilter(this);

        pLoop->AddIdleHandler(this);

 

        return 0;

    }

 

    void OnMouseMove(UINT uFlags, CPoint ptClient){

        CString strPos;

        strPos.Format(_T("X:%d, Y:%d"), ptClient.x, ptClient.y);

        m_wndStatusBar.SetPaneText(IDS_PANE_POS, strPos);

    }

 

    void OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl){

        PostMessage(WM_CLOSE);

    }

};

                      

 

// Control.cpp

#include "stdafx.h"

 

#include "resource.h"

 

#include "mainfrm.h"

 

CAppModule _Module;

 

int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpCmdLine, int nCmdShow)

{

    HRESULT hRes = ::CoInitialize(NULL);

    ATLASSERT(SUCCEEDED(hRes));

 

    ::DefWindowProc(NULL, 0, 0, 0L);

 

    AtlInitCommonControls(ICC_COOL_CLASSES | ICC_WIN95_CLASSES);

 

    hRes = _Module.Init(NULL, hInstance);

    ATLASSERT(SUCCEEDED(hRes));

 

    int nRet = 0;

    // BLOCK: ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇà

    {

        CMessageLoop theLoop;

        _Module.AddMessageLoop(&theLoop);

 

        CMainFrame wnd;

        wnd.CreateEx();

        wnd.ShowWindow(nCmdShow);

        wnd.UpdateWindow();

 

        nRet = theLoop.Run();

 

        _Module.RemoveMessageLoop();

    }

 

    _Module.Term();

    ::CoUninitialize();

 

    return nRet;

}

                      


¡¡
¿ì¼± stdafx.h ¿¡¼­´Â CMultiPaneStatusBarCtrlŬ·¡½º¸¦ »ç¿ëÇϱâ À§Çؼ­ atlctrlx.h Çì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.

¡¡
CMainFrame Ŭ·¡½º¿¡¼­´Â CMultiPaneStatusBarCtrl Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸â¹ö º¯¼ö·Î¼­ ¼±¾ðÇÏ°í  WM_CREATE ¸Þ¼¼Áö Çڵ鷯·Î Create() ¸¦ È£ÃâÇÏ´Â °Í¿¡ ÀÇÇØ ¸ÖƼ ÆäÀÎ ½ºÅ×ÀÌÅͽº ¹Ù¸¦ ÀÛ¼ºÇÕ´Ï´Ù. Create()´Â ¹Ýȯ °ª À¸·Î¼­ »óÅ ¹ÙÀÇ ÇÚµéÀ» µ¹·ÁÁֹǷΠ±×°ÍÀ» ÇÁ·¹ÀÓ À©µµ¿ìÀÇ ¸â¹ö º¯¼öÀÎ m_hWndStatusBar¿¡ ´ëÀÔÇÕ´Ï´Ù.

µ¡ºÙ¿© Create()¿¡´Â 2°³ÀÇ ¹öÁ¯ÀÌ ÀÖ¾î ÇÑÂÊÀº Á¦2Àμö¿¡ ij¸¯ÅÍ ¶óÀÎÀ» ÁöÁ¤ÇÏ´Â °Í,  ¶Ç ÇÑÂÊÀº Á¦2Àμö¿¡ ij¸¯ÅÍ ¶óÀÎ ¸®¼Ò½º ID¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÔ´Ï´Ù.  Á¦2Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â ÈÄÀÚÀÇ Create()°¡ ºÒ·ÁÁ® µðÆúÆ®ÀÇ Ä³¸¯ÅÍ ¶óÀÎ ¸®¼Ò½º IDÀ¸·Î¼­ ATL_IDS_IDLEMESSAGE°¡ ÁöÁ¤µË´Ï´Ù. ¾ç ¹öÁ¯ ¸ðµÎ Á¦1Àμö¿¡ ºÎ¸ð À©µµ¿ì ÇÚµéÀ» ÁöÁ¤ÇÏ¸ç  Á¦3Àμö¿¡´Â ½ºÅ¸ÀÏ,  Á¦4Àμö¿¡´Â ID¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.  Á¦3Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â µðÆúÆ® ½ºÅ¸ÀϷμ­ WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS | SBARS_SIZEGRIP °¡ ÁöÁ¤µÇ¾î Á¦4Àμö¸¦ »ý·« ÇßÀ» °æ¿ì´Â µðÆúÆ®ID·Î¼­ ATL_IDW_STATUS_BAR°¡ ÁöÁ¤µË´Ï´Ù.

¡¡
´ÙÀ½À¸·Î SetPanes()¸¦ È£ÃâÇØ »óÅ ¹Ù¿¡ ÆäÀÎÀ» ¼³Á¤ÇÕ´Ï´Ù. Á¦1Àμö¿¡´Â ij¸¯ÅÍ ¶óÀÎ ¸®¼Ò½º ID¸¦ ¿ä¼Ò·Î ÇÑ ¹è¿­¿¡ÀÇ Æ÷ÀÎÅ͸¦ ÁöÁ¤ÇÏ°í  Á¦2Àμö¿¡´Â ÆäÀÎÀÇ ¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù.  SetPanes()´Â ¹è¿­³»ÀÇ Ä³¸¯ÅÍ ¶óÀÎ ¸®¼Ò½º ID ·ÎºÎÅÍ Ä³¸¯ÅÍ ¶óÀÎÀ» ÃëµæÇØ ±× ij¸¯ÅÍ ¶óÀÎÀÇ Æø°ú °°Àº Å©±âÀÇ ÆäÀÎÀ» ÀÛ¼ºÇÕ´Ï´Ù. ¿©±â¿¡¼­´Â ¸¶¿ì½º ÁÂÇ¥¸¦ Ç¥½ÃÇϱâ À§Çؼ­ ID°¡ IDS_PANE_POS ¶ó°í Çϴ ij¸¯ÅÍ ¶óÀÎ ÀÚ¿øÀ» ÁغñÇØ ĸ¼ÇÀ¸·Î¼­  ¡¸X: 0000, Y: 0000¡¹À» ¼³Á¤ÇÕ´Ï´Ù.  À̰ÍÀº Æø°ú ³ôÀ̰¡ °¢°¢  4ÀÚ¸®¼ö±îÁö Ç¥½ÃÇÒ ¼ö ÀÖ´Â »çÀÌÁîÀÇ ÆäÀÎÀ» ÀÛ¼ºÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù.



µ¡ºÙ¿© ¹è¿­ÀÇ 1¹øÂ°·Î ÁöÁ¤ÇØ ID_DEFAULT_PANE´Â WTLÀÌ ÁغñÇØ ÀÖ´Â ID·Î  ÇÁ·¹ÀÓ À©µµ¿ìÀÇ »çÀÌÁî°¡ º¯°æµÉ ¶§¸¶´Ù °Å±â¿¡ ¸ÂÃß¾î Å©±â°¡ Á¶Á¤µÇ´Â ÆäÀÎÀ» ÀǹÌÇÕ´Ï´Ù.

¡¡
´ÙÀ½¿¡ WM_MOUSEMOVE ¸Þ¼¼Áö Çڵ鷯¿¡¼­´Â  SetPaneText¿¡ ÀÇÇØ »óÅ ¹ÙÀÇ ID°¡ IDS_PANE_POSÀÇ  ÆäÀο¡ Ŭ¶óÀÌ¾ðÆ® ÁÂÇ¥¸¦ Ç¥½ÃÇϰí ÀÖ½À´Ï´Ù.

¡¡
ÀÌ ¿¹¿¡¼­´Â WM_SIZE ¸Þ¼¼Áö Çڵ鷯¸¦ ÀÛ¼ºÇÏÁö ¾Ê½À´Ï´Ù. À̰ÍÀº CMultiPaneStatusBarCtrlŬ·¡½º ³»¿¡´Â WM_SIZE ¸Þ¼¼Áö Çڵ鷯°¡ ÀÖÀ¸¸ç ÇÁ·¹ÀÓ À©µµ¿ìÀÇ »çÀÌÁ º¯°æÇÒ ¶§¸¶´Ù »óÅ ¹ÙÀÇ ÆäÀÎÀÌ ÀÚµ¿ÀûÀ¸·Î Á¶ÀýµÇ±â ¶§¹®ÀÔ´Ï´Ù.