// [!output MAIN_FRAME_IMPL] : [!output MAIN_FRAME_CLASS] Ŭ·¡½ºÀÇ ±¸Çö // #include "stdafx.h" #include "[!output APP_HEADER]" #include "[!output MAIN_FRAME_HEADER]" [!if PROJECT_STYLE_EXPLORER] [!if APP_TYPE_SDI || APP_TYPE_MTLD] #include "[!output TREE_VIEW_HEADER]" #include "[!output VIEW_HEADER]" [!endif] [!endif] #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output MAIN_FRAME_CLASS] [!if APP_TYPE_MDI || !DOCVIEW] IMPLEMENT_DYNAMIC([!output MAIN_FRAME_CLASS], [!output MAIN_FRAME_BASE_CLASS]) [!else] IMPLEMENT_DYNCREATE([!output MAIN_FRAME_CLASS], [!output MAIN_FRAME_BASE_CLASS]) [!endif] BEGIN_MESSAGE_MAP([!output MAIN_FRAME_CLASS], [!output MAIN_FRAME_BASE_CLASS]) [!if DOCKING_TOOLBAR || STATUS_BAR] ON_WM_CREATE() [!else] [!if APP_TYPE_SDI && !DOCVIEW] ON_WM_CREATE() [!endif] [!endif] [!if APP_TYPE_SDI] [!if !DOCVIEW] ON_WM_SETFOCUS() [!endif] [!endif] [!if APP_TYPE_MTLD] ON_COMMAND(ID_FILE_CLOSE, &[!output MAIN_FRAME_CLASS]::OnFileClose) [!if !DOCVIEW] ON_WM_CLOSE() [!endif] [!endif] [!if CONTEXT_HELP] // Àü¿ª µµ¿ò¸» ¸í·É ON_COMMAND(ID_HELP_FINDER, &[!output MAIN_FRAME_BASE_CLASS]::OnHelpFinder) ON_COMMAND(ID_HELP, &[!output MAIN_FRAME_BASE_CLASS]::OnHelp) ON_COMMAND(ID_CONTEXT_HELP, &[!output MAIN_FRAME_BASE_CLASS]::OnContextHelp) ON_COMMAND(ID_DEFAULT_HELP, &[!output MAIN_FRAME_BASE_CLASS]::OnHelpFinder) [!endif] [!if PROJECT_STYLE_EXPLORER] [!if APP_TYPE_SDI || APP_TYPE_MTLD] [!if LIST_VIEW] ON_UPDATE_COMMAND_UI_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, &[!output MAIN_FRAME_CLASS]::OnUpdateViewStyles) ON_COMMAND_RANGE(AFX_ID_VIEW_MINIMUM, AFX_ID_VIEW_MAXIMUM, &[!output MAIN_FRAME_CLASS]::OnViewStyle) [!endif] [!endif] [!endif] END_MESSAGE_MAP() [!if STATUS_BAR] static UINT indicators[] = { ID_SEPARATOR, // »óÅ Á٠ǥ½Ã±â [!if DO_KANA] ID_INDICATOR_KANA, [!endif] ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; [!endif] // [!output MAIN_FRAME_CLASS] »ý¼º/¼Ò¸ê [!output MAIN_FRAME_CLASS]::[!output MAIN_FRAME_CLASS]() { [!if ACCESSIBILITY] EnableActiveAccessibility(); [!endif] // TODO: ¿©±â¿¡ ¸â¹ö ÃʱâÈ­ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } [!output MAIN_FRAME_CLASS]::~[!output MAIN_FRAME_CLASS]() { } [!if DOCKING_TOOLBAR || STATUS_BAR] int [!output MAIN_FRAME_CLASS]::OnCreate(LPCREATESTRUCT lpCreateStruct) { if ([!output MAIN_FRAME_BASE_CLASS]::OnCreate(lpCreateStruct) == -1) return -1; [!if APP_TYPE_SDI] [!if !DOCVIEW] // ÇÁ·¹ÀÓÀÇ Å¬¶óÀÌ¾ðÆ® ¿µ¿ªÀ» Â÷ÁöÇÏ´Â ºä¸¦ ¸¸µì´Ï´Ù. if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) { TRACE0("ºä âÀ» ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; } [!endif] [!endif] [!if DOCKING_TOOLBAR] [!if TOOLBAR_STYLE_REBAR] if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT) || [!else] if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || [!endif] !m_wndToolBar.LoadToolBar(IDR_MAINFRAME)) { TRACE0("µµ±¸ ¸ðÀ½À» ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } [!if TOOLBAR_STYLE_REBAR] [!if CONTAINER || CONTAINER_SERVER] m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() & ~CBRS_HIDE_INPLACE); [!endif] if (!m_wndDlgBar.Create(this, IDR_MAINFRAME, CBRS_ALIGN_TOP, AFX_IDW_DIALOGBAR)) { TRACE0("´ëÈ­ »óÀÚ ¸ðÀ½À» ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } if (!m_wndReBar.Create(this) || !m_wndReBar.AddBar(&m_wndToolBar) || !m_wndReBar.AddBar(&m_wndDlgBar)) { TRACE0("Å©±â Á¶Á¤ ¸·´ë¸¦ ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } [!if CONTAINER || CONTAINER_SERVER] m_wndReBar.SetBarStyle(m_wndReBar.GetBarStyle() & ~CBRS_HIDE_INPLACE); [!endif] [!endif] [!endif] [!if STATUS_BAR] if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("»óÅ ǥ½ÃÁÙÀ» ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } [!endif] [!if DOCKING_TOOLBAR] [!if TOOLBAR_STYLE_REBAR] // TODO: µµ±¸ ¼³¸íÀ» Ç¥½ÃÇÏÁö ¾ÊÀ¸·Á¸é ÀÌ ÁÙÀ» Á¦°ÅÇϽʽÿÀ. m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY); [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER] m_wndDlgBar.SetBarStyle(m_wndDlgBar.GetBarStyle() | CBRS_TOOLTIPS | CBRS_FLYBY); [!endif] [!else] // TODO: µµ±¸ ¸ðÀ½À» µµÅ·ÇÒ ¼ö ¾ø°Ô ÇÏ·Á¸é ÀÌ ¼¼ ÁÙÀ» »èÁ¦ÇϽʽÿÀ. m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); [!endif] [!endif] return 0; } [!else] [!if APP_TYPE_SDI && !DOCVIEW] int [!output MAIN_FRAME_CLASS]::OnCreate(LPCREATESTRUCT lpCreateStruct) { if ([!output MAIN_FRAME_BASE_CLASS]::OnCreate(lpCreateStruct) == -1) return -1; // ÇÁ·¹ÀÓÀÇ Å¬¶óÀÌ¾ðÆ® ¿µ¿ªÀ» Â÷ÁöÇÏ´Â ºä¸¦ ¸¸µì´Ï´Ù. if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW, CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL)) { TRACE0("ºä âÀ» ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; } return 0; } [!endif] [!endif] [!if SPLITTER || PROJECT_STYLE_EXPLORER] [!if APP_TYPE_SDI || APP_TYPE_MTLD] BOOL [!output MAIN_FRAME_CLASS]::OnCreateClient(LPCREATESTRUCT /*lpcs*/, CCreateContext* pContext) { [!if PROJECT_STYLE_EXPLORER] // ºÐÇÒ Ã¢À» ¸¸µì´Ï´Ù. if (!m_wndSplitter.CreateStatic(this, 1, 2)) return FALSE; if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS([!output TREE_VIEW_CLASS]), CSize(100, 100), pContext) || !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS([!output VIEW_CLASS]), CSize(100, 100), pContext)) { m_wndSplitter.DestroyWindow(); return FALSE; } return TRUE; [!else] [!if HTML_VIEW || HTML_EDITVIEW] return m_wndSplitter.Create(this, 2, 2, // TODO: Çà ¹× ¿­ÀÇ °³¼ö¸¦ Á¶Á¤ÇÕ´Ï´Ù. CSize(10, 10), // TODO: ÃÖ¼Ò Ã¢ Å©±â¸¦ Á¶Á¤ÇÕ´Ï´Ù. pContext, WS_CHILD | WS_VISIBLE | SPLS_DYNAMIC_SPLIT); [!else] return m_wndSplitter.Create(this, 2, 2, // TODO: Çà ¹× ¿­ÀÇ °³¼ö¸¦ Á¶Á¤ÇÕ´Ï´Ù. CSize(10, 10), // TODO: ÃÖ¼Ò Ã¢ Å©±â¸¦ Á¶Á¤ÇÕ´Ï´Ù. pContext); [!endif] [!endif] } [!endif] [!endif] BOOL [!output MAIN_FRAME_CLASS]::PreCreateWindow(CREATESTRUCT& cs) { if( ![!output MAIN_FRAME_BASE_CLASS]::PreCreateWindow(cs) ) return FALSE; // TODO: CREATESTRUCT cs¸¦ ¼öÁ¤ÇÏ¿© ¿©±â¿¡¼­ // Window Ŭ·¡½º ¶Ç´Â ½ºÅ¸ÀÏÀ» ¼öÁ¤ÇÕ´Ï´Ù. [!if !MAIN_FRAME_DEFAULT_STYLES] cs.style = WS_OVERLAPPED | WS_CAPTION | FWS_ADDTOTITLE [!output MAIN_FRAME_STYLE_FLAGS]; [!endif] [!if APP_TYPE_SDI] [!if !DOCVIEW] cs.dwExStyle &= ~WS_EX_CLIENTEDGE; cs.lpszClass = AfxRegisterWndClass(0); [!endif] [!endif] return TRUE; } // [!output MAIN_FRAME_CLASS] Áø´Ü #ifdef _DEBUG void [!output MAIN_FRAME_CLASS]::AssertValid() const { [!output MAIN_FRAME_BASE_CLASS]::AssertValid(); } void [!output MAIN_FRAME_CLASS]::Dump(CDumpContext& dc) const { [!output MAIN_FRAME_BASE_CLASS]::Dump(dc); } #endif //_DEBUG // [!output MAIN_FRAME_CLASS] ¸Þ½ÃÁö 󸮱â [!if APP_TYPE_SDI] [!if !DOCVIEW] void [!output MAIN_FRAME_CLASS]::OnSetFocus(CWnd* /*pOldWnd*/) { // ºä âÀ¸·Î Æ÷Ä¿½º¸¦ À̵¿ÇÕ´Ï´Ù. m_wndView.SetFocus(); } BOOL [!output MAIN_FRAME_CLASS]::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { // ºä¿¡¼­ ù° Å©·¢ÀÌ ÇØ´ç ¸í·É¿¡ ³ªÅ¸³ªµµ·Ï ÇÕ´Ï´Ù. if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo)) return TRUE; // ±×·¸Áö ¾ÊÀ¸¸é ±âº» ó¸®ÇÕ´Ï´Ù. return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); } [!endif] [!endif] [!if APP_TYPE_SDI || APP_TYPE_MTLD] [!if PROJECT_STYLE_EXPLORER] [!if LIST_VIEW] [!output VIEW_CLASS]* [!output MAIN_FRAME_CLASS]::GetRightPane() { CWnd* pWnd = m_wndSplitter.GetPane(0, 1); [!output VIEW_CLASS]* pView = DYNAMIC_DOWNCAST([!output VIEW_CLASS], pWnd); return pView; } void [!output MAIN_FRAME_CLASS]::OnUpdateViewStyles(CCmdUI* pCmdUI) { if (!pCmdUI) return; // TODO: ÀÌ Äڵ带 »ç¿ëÀÚ ÁöÁ¤Çϰųª È®ÀåÇÏ¿© º¸±â ¸Þ´º¿¡¼­ÀÇ ¼±ÅÃÀ» ó¸®ÇÕ´Ï´Ù. [!output VIEW_CLASS]* pView = GetRightPane(); // ¿À¸¥ÂÊ Ã¢ÀÌ ¸¸µé¾îÁöÁö ¾Ê¾Ò°Å³ª ºä°¡ ¾Æ´Ñ °æ¿ì // ÇØ´ç ¹üÀ§¿¡ ÀÖ´Â ¸í·ÉÀ» ºñȰ¼ºÈ­ÇÕ´Ï´Ù. if (pView == NULL) pCmdUI->Enable(FALSE); else { DWORD dwStyle = pView->GetStyle() & LVS_TYPEMASK; // ¸í·ÉÀÌ ID_VIEW_LINEUPÀ̸é // LVS_ICON ¶Ç´Â LVS_SMALLICON ¸ðµåÀÎ °æ¿ì¿¡¸¸ ÀÌ ¸í·ÉÀ» Ȱ¼ºÈ­ÇÕ´Ï´Ù. if (pCmdUI->m_nID == ID_VIEW_LINEUP) { if (dwStyle == LVS_ICON || dwStyle == LVS_SMALLICON) pCmdUI->Enable(); else pCmdUI->Enable(FALSE); } else { // ±×·¸Áö ¾ÊÀ¸¸é Á¡À» »ç¿ëÇÏ¿© ºäÀÇ ½ºÅ¸ÀÏÀ» ¹Ý¿µÇÕ´Ï´Ù. pCmdUI->Enable(); BOOL bChecked = FALSE; switch (pCmdUI->m_nID) { case ID_VIEW_DETAILS: bChecked = (dwStyle == LVS_REPORT); break; case ID_VIEW_SMALLICON: bChecked = (dwStyle == LVS_SMALLICON); break; case ID_VIEW_LARGEICON: bChecked = (dwStyle == LVS_ICON); break; case ID_VIEW_LIST: bChecked = (dwStyle == LVS_LIST); break; default: bChecked = FALSE; break; } pCmdUI->SetRadio(bChecked ? 1 : 0); } } } void [!output MAIN_FRAME_CLASS]::OnViewStyle(UINT nCommandID) { // TODO: ÀÌ Äڵ带 »ç¿ëÀÚ ÁöÁ¤Çϰųª È®ÀåÇÏ¿© º¸±â ¸Þ´º¿¡¼­ÀÇ ¼±ÅÃÀ» ó¸®ÇÕ´Ï´Ù. [!output VIEW_CLASS]* pView = GetRightPane(); // ¿À¸¥ÂÊ Ã¢ÀÌ ¸¸µé¾îÁ³°í [!output VIEW_CLASS]À̸é // ¸Þ´º ¸í·ÉÀ» ó¸®ÇÕ´Ï´Ù. if (pView != NULL) { DWORD dwStyle = -1; switch (nCommandID) { case ID_VIEW_LINEUP: { // list ÄÁÆ®·ÑÀ» ¸ð´«¿¡ ¸ÂÃä´Ï´Ù. CListCtrl& refListCtrl = pView->GetListCtrl(); refListCtrl.Arrange(LVA_SNAPTOGRID); } break; // ´Ù¸¥ ¸í·É¿¡¼­ list ÄÁÆ®·ÑÀÇ ½ºÅ¸ÀÏÀ» º¯°æÇÕ´Ï´Ù. case ID_VIEW_DETAILS: dwStyle = LVS_REPORT; break; case ID_VIEW_SMALLICON: dwStyle = LVS_SMALLICON; break; case ID_VIEW_LARGEICON: dwStyle = LVS_ICON; break; case ID_VIEW_LIST: dwStyle = LVS_LIST; break; } // ½ºÅ¸ÀÏÀ» º¯°æÇÕ´Ï´Ù. âÀÌ ÀÚµ¿À¸·Î ´Ù½Ã ±×·ÁÁý´Ï´Ù. if (dwStyle != -1) pView->ModifyStyle(LVS_TYPEMASK, dwStyle); } } [!endif] [!endif] [!endif] [!if APP_TYPE_MTLD] BOOL [!output MAIN_FRAME_CLASS]::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // ±âº» Ŭ·¡½º°¡ ½ÇÁ¦ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. if (!CFrameWnd::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) { return FALSE; } CWinApp* pApp = AfxGetApp(); if (pApp->m_pMainWnd == NULL) pApp->m_pMainWnd = this; // ÆÄÀÏ ¸Þ´ºÀÇ ³¡³»±â ¿É¼ÇÀ» º¸Á¶ âÀÇ ´Ý±â ¿É¼ÇÀ¸·Î ¹Ù²ß´Ï´Ù. if (AfxGetApp()->m_pMainWnd != this) { CMenu *pMenu = GetMenu(); ASSERT(pMenu); pMenu->ModifyMenu(ID_APP_EXIT, MF_BYCOMMAND | MF_STRING, ID_FILE_CLOSE, _T("´Ý±â(&C)")); } return TRUE; } void [!output MAIN_FRAME_CLASS]::OnFileClose() { DestroyWindow(); } [!if !DOCVIEW] void [!output MAIN_FRAME_CLASS]::OnClose() { [!output APP_CLASS] *pApp = reinterpret_cast<[!output APP_CLASS]*>(AfxGetApp()); // ÁÖ Ã¢ÀÌ ´ÝÈ÷¹Ç·Î Á¤¸® ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. if (pApp->m_pMainWnd == this) { for (int iCntr=0; iCntr < pApp->m_aryFrames.GetSize(); iCntr++) { HWND hFrame = pApp->m_aryFrames.GetAt(iCntr); if (::IsWindow(hFrame)) ::SendMessage(hFrame, WM_CLOSE, 0, 0); } } CFrameWnd::OnClose(); } [!endif] [!endif]