// [!output APP_IMPL] : ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ëÇÑ Å¬·¡½º µ¿ÀÛÀ» Á¤ÀÇÇÕ´Ï´Ù. // #include "stdafx.h" #include "[!output APP_HEADER]" #include "[!output MAIN_FRAME_HEADER]" [!if APP_TYPE_MDI] #include "[!output CHILD_FRAME_HEADER]" [!endif] [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER] #include "[!output INPLACE_FRAME_HEADER]" [!endif] [!if OLEDB_RECORD_VIEW || ODBC_RECORD_VIEW] #include "[!output ROWSET_HEADER]" [!endif] [!if DOCVIEW] #include "[!output DOC_HEADER]" [!if PROJECT_STYLE_EXPLORER] #include "[!output TREE_VIEW_HEADER]" [!else] #include "[!output VIEW_HEADER]" [!endif] [!endif] #ifdef _DEBUG #define new DEBUG_NEW #endif // [!output APP_CLASS] BEGIN_MESSAGE_MAP([!output APP_CLASS], [!output APP_BASE_CLASS]) ON_COMMAND(ID_APP_ABOUT, &[!output APP_CLASS]::OnAppAbout) [!if APP_TYPE_MTLD] ON_COMMAND(ID_FILE_NEW_FRAME, &[!output APP_CLASS]::OnFileNewFrame) [!if DOCVIEW] ON_COMMAND(ID_FILE_NEW, &[!output APP_CLASS]::OnFileNew) [!endif] [!endif] [!if !DOCVIEW] [!if APP_TYPE_MDI] ON_COMMAND(ID_FILE_NEW, &[!output APP_CLASS]::OnFileNew) [!endif] [!endif] [!if DOCVIEW] [!if !DB_VIEW_NO_FILE] // Ç¥ÁØ ÆÄÀÏÀ» ±âÃÊ·Î ÇÏ´Â ¹®¼­ ¸í·ÉÀÔ´Ï´Ù. [!if !APP_TYPE_MTLD] ON_COMMAND(ID_FILE_NEW, &[!output APP_BASE_CLASS]::OnFileNew) [!endif] ON_COMMAND(ID_FILE_OPEN, &[!output APP_BASE_CLASS]::OnFileOpen) [!endif] [!endif] [!if PRINTING && DOCVIEW] // Ç¥ÁØ Àμ⠼³Á¤ ¸í·ÉÀÔ´Ï´Ù. ON_COMMAND(ID_FILE_PRINT_SETUP, &[!output APP_BASE_CLASS]::OnFilePrintSetup) [!endif] END_MESSAGE_MAP() // [!output APP_CLASS] »ý¼º [!output APP_CLASS]::[!output APP_CLASS]() { [!if CONTEXT_HELP && HELPSTYLE_HTML] EnableHtmlHelp(); [!endif] // TODO: ¿©±â¿¡ »ý¼º Äڵ带 Ãß°¡ÇÕ´Ï´Ù. // InitInstance¿¡ ¸ðµç Áß¿äÇÑ ÃʱâÈ­ ÀÛ¾÷À» ¹èÄ¡ÇÕ´Ï´Ù. } [!if ATL_SUPPORT] // ATL Module °³Ã¼ CComModule _Module; [!endif] // À¯ÀÏÇÑ [!output APP_CLASS] °³Ã¼ÀÔ´Ï´Ù. [!output APP_CLASS] theApp; [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION] // ÀÌ ½Äº°ÀÚ´Â ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ Åë°èÀûÀ¸·Î °íÀ¯ÇÑ °ªÀ» °¡Áöµµ·Ï »ý¼ºµÇ¾ú½À´Ï´Ù. // ƯÁ¤ ½Äº°ÀÚ¸¦ ¼±È£ÇÒ °æ¿ì º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. // {[!output APP_CLSID_REGISTRY_FORMAT]} static const CLSID clsid = [!output APP_CLSID_STATIC_CONST_GUID_FORMAT]; [!endif] [!if AUTOMATION] const GUID CDECL BASED_CODE _tlid = [!output LIBID_STATIC_CONST_GUID_FORMAT]; const WORD _wVerMajor = 1; const WORD _wVerMinor = 0; [!endif] // [!output APP_CLASS] ÃʱâÈ­ BOOL [!output APP_CLASS]::InitInstance() { [!if MANIFEST] // ÀÀ¿ë ÇÁ·Î±×·¥ ¸Å´ÏÆä½ºÆ®°¡ ComCtl32.dll ¹öÀü 6 ÀÌ»óÀ» »ç¿ëÇÏ¿© ºñÁÖ¾ó ½ºÅ¸ÀÏÀ» // »ç¿ëÇϵµ·Ï ÁöÁ¤ÇÏ´Â °æ¿ì, Windows XP »ó¿¡¼­ ¹Ýµå½Ã InitCommonControlsEx()°¡ ÇÊ¿äÇÕ´Ï´Ù. // InitCommonControlsEx()¸¦ »ç¿ëÇÏÁö ¾ÊÀ¸¸é âÀ» ¸¸µé ¼ö ¾ø½À´Ï´Ù. INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); // ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÒ ¸ðµç °ø¿ë ÄÁÆ®·Ñ Ŭ·¡½º¸¦ Æ÷ÇÔÇϵµ·Ï // ÀÌ Ç׸ñÀ» ¼³Á¤ÇϽʽÿÀ. InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); [!endif] [!output APP_BASE_CLASS]::InitInstance(); [!if OLEDB] CoInitialize(NULL); [!endif] [!if SOCKETS] if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return FALSE; } [!endif] [!if CONTAINER || MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION || OLEDB || ACTIVEX_CONTROLS || ACCESSIBILITY] // OLE ¶óÀ̺귯¸®¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. if (!AfxOleInit()) { AfxMessageBox(IDP_OLE_INIT_FAILED); return FALSE; } [!endif] [!if ACTIVEX_CONTROLS] AfxEnableControlContainer(); [!endif] // Ç¥ÁØ ÃʱâÈ­ // ÀÌµé ±â´ÉÀ» »ç¿ëÇÏÁö ¾Ê°í ÃÖÁ¾ ½ÇÇà ÆÄÀÏÀÇ Å©±â¸¦ ÁÙÀÌ·Á¸é // ¾Æ·¡¿¡¼­ ÇÊ¿ä ¾ø´Â ƯÁ¤ ÃʱâÈ­ // ·çƾÀ» Á¦°ÅÇØ¾ß ÇÕ´Ï´Ù. // ÇØ´ç ¼³Á¤ÀÌ ÀúÀåµÈ ·¹Áö½ºÆ®¸® ۸¦ º¯°æÇϽʽÿÀ. // TODO: ÀÌ ¹®ÀÚ¿­À» ȸ»ç ¶Ç´Â Á¶Á÷ÀÇ À̸§°ú °°Àº // ÀûÀýÇÑ ³»¿ëÀ¸·Î ¼öÁ¤ÇØ¾ß ÇÕ´Ï´Ù. SetRegistryKey(_T("·ÎÄà ÀÀ¿ë ÇÁ·Î±×·¥ ¸¶¹ý»ç¿¡¼­ »ý¼ºµÈ ÀÀ¿ë ÇÁ·Î±×·¥")); [!if DOCVIEW] LoadStdProfileSettings([!output MRU_SIZE]); // MRU¸¦ Æ÷ÇÔÇÏ¿© Ç¥ÁØ INI ÆÄÀÏ ¿É¼ÇÀ» ·ÎµåÇÕ´Ï´Ù. [!endif] [!if !DOCVIEW] // ÁÖ Ã¢À» ¸¸µé±â À§ÇØ ÀÌ Äڵ忡¼­´Â »õ ÇÁ·¹ÀÓ Ã¢ °³Ã¼¸¦ // ¸¸µç ´ÙÀ½ À̸¦ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ Ã¢ °³Ã¼·Î ¼³Á¤ÇÕ´Ï´Ù. [!if APP_TYPE_MDI] CMDIFrameWnd* pFrame = new [!output MAIN_FRAME_CLASS]; [!else] [!if !DOCVIEW] CMainFrame* pFrame = new [!output MAIN_FRAME_CLASS]; [!else] CRuntimeClass* pClass = RUNTIME_CLASS(CMainFrame); CFrameWnd* pFrame = (CFrameWnd*) pClass->CreateObject(); ASSERT_KINDOF(CFrameWnd, pFrame); [!endif] [!endif] if (!pFrame) return FALSE; m_pMainWnd = pFrame; [!if APP_TYPE_SDI] [!if DOCVIEW] // ºó ÄÁÅØ½ºÆ®¿¡ ´ëÇØ ÇÁ·¹ÀÓÀ» ·ÎµåÇÕ´Ï´Ù. CCreateContext context; [!else] // ÇÁ·¹ÀÓÀ» ¸¸µé¾î ¸®¼Ò½º¿Í ÇÔ²² ·ÎµåÇÕ´Ï´Ù. [!endif] pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, [!if DOCVIEW] &context); [!else] NULL); [!endif] [!else] // ÁÖ MDI ÇÁ·¹ÀÓ Ã¢À» ¸¸µì´Ï´Ù. if (!pFrame->LoadFrame(IDR_MAINFRAME)) return FALSE; // °øÀ¯ MDI ¸Þ´º ¹× ¾×¼¿·¯·¹ÀÌÅÍ Å° Å×À̺íÀÇ ·Îµå¸¦ ½ÃµµÇÕ´Ï´Ù. //TODO: Ãß°¡ ¸â¹ö º¯¼ö¸¦ Ãß°¡Çϰí ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÇÊ¿äÇÑ Ãß°¡ ¸Þ´º Çü½Ä¿¡ ´ëÇÑ // È£ÃâÀ» ·ÎµåÇÕ´Ï´Ù. HINSTANCE hInst = AfxGetResourceHandle(); m_hMDIMenu = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_[!output SAFE_DOC_TYPE_NAME]TYPE)); m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_[!output SAFE_DOC_TYPE_NAME]TYPE)); [!endif] [!else] // ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¹®¼­ ÅÛÇø´À» µî·ÏÇÕ´Ï´Ù. ¹®¼­ ÅÛÇø´Àº // ¹®¼­, ÇÁ·¹ÀÓ Ã¢ ¹× ºä »çÀÌÀÇ ¿¬°á ¿ªÇÒÀ» ÇÕ´Ï´Ù. [!if APP_TYPE_MDI] CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate(IDR_[!output SAFE_DOC_TYPE_NAME]TYPE, [!else] [!if APP_TYPE_MTLD] CMultiDocTemplate* pDocTemplate; pDocTemplate = new CMultiDocTemplate( IDR_MAINFRAME, [!else] CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, [!endif] [!endif] RUNTIME_CLASS([!output DOC_CLASS]), [!if APP_TYPE_MDI] RUNTIME_CLASS([!output CHILD_FRAME_CLASS]), // »ç¿ëÀÚ ÁöÁ¤ MDI ÀÚ½Ä ÇÁ·¹ÀÓÀÔ´Ï´Ù. [!else] RUNTIME_CLASS([!output MAIN_FRAME_CLASS]), // ÁÖ SDI ÇÁ·¹ÀÓ Ã¢ÀÔ´Ï´Ù. [!endif] [!if PROJECT_STYLE_EXPLORER] RUNTIME_CLASS([!output TREE_VIEW_CLASS])); [!else] RUNTIME_CLASS([!output VIEW_CLASS])); [!endif] if (!pDocTemplate) return FALSE; [!if CONTAINER || CONTAINER_SERVER] [!if APP_TYPE_MDI] pDocTemplate->SetContainerInfo(IDR_[!output SAFE_DOC_TYPE_NAME]TYPE_CNTR_IP); [!else] pDocTemplate->SetContainerInfo(IDR_CNTR_INPLACE); [!endif] [!endif] [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER] pDocTemplate->SetServerInfo( [!if APP_TYPE_MDI] IDR_[!output SAFE_DOC_TYPE_NAME]TYPE_SRVR_EMB, IDR_[!output SAFE_DOC_TYPE_NAME]TYPE_SRVR_IP, [!else] IDR_SRVR_EMBEDDED, IDR_SRVR_INPLACE, [!endif] RUNTIME_CLASS([!output INPLACE_FRAME_CLASS])); [!endif] [!if APP_TYPE_MTLD] m_pDocTemplate = pDocTemplate; [!endif] AddDocTemplate(pDocTemplate); [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION] // COleTemplateServer¸¦ ¹®¼­ ÅÛÇø´¿¡ ¿¬°áÇÕ´Ï´Ù. // COleTemplateServer´Â OLE ÄÁÅ×À̳ʸ¦ ¿äûÇÏ´Â ´ë½Å ¹®¼­ ÅÛÇø´¿¡ // ÁöÁ¤µÈ Á¤º¸¸¦ »ç¿ëÇÏ¿© »õ ¹®¼­¸¦ // ¸¸µì´Ï´Ù. [!if APP_TYPE_MDI || APP_TYPE_MTLD] m_server.ConnectTemplate(clsid, pDocTemplate, FALSE); // ¸ðµç OLE ¼­¹ö ÆÑÅ͸®¸¦ ½ÇÇà ÁßÀ¸·Î µî·ÏÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé // OLE ¶óÀ̺귯¸®°¡ ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ °³Ã¼¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. COleTemplateServer::RegisterAll(); // Âü°í: MDI ÀÀ¿ë ÇÁ·Î±×·¥Àº ¸í·ÉÁÙÀÇ /Embedding ¶Ç´Â /Automation¿¡ // »ó°ü ¾øÀÌ ¸ðµç ¼­¹ö °³Ã¼¸¦ µî·ÏÇÕ´Ï´Ù. [!else] m_server.ConnectTemplate(clsid, pDocTemplate, TRUE); // Âü°í: SDI ÀÀ¿ë ÇÁ·Î±×·¥Àº ¸í·ÉÁÙ¿¡ /Embedding ¶Ç´Â /AutomationÀÌ // ÀÖÀ» °æ¿ì¿¡¸¸ ¼­¹ö °³Ã¼¸¦ µî·ÏÇÕ´Ï´Ù. [!endif] [!endif] [!endif] [!if APP_TYPE_MDI && DOCVIEW] // ÁÖ MDI ÇÁ·¹ÀÓ Ã¢À» ¸¸µì´Ï´Ù. [!output MAIN_FRAME_CLASS]* pMainFrame = new [!output MAIN_FRAME_CLASS]; if (!pMainFrame || !pMainFrame->LoadFrame(IDR_MAINFRAME)) { delete pMainFrame; return FALSE; } m_pMainWnd = pMainFrame; [!if !MINI_SERVER] // Á¢¹Ì»ç°¡ ÀÖÀ» °æ¿ì¿¡¸¸ DragAcceptFiles¸¦ È£ÃâÇÕ´Ï´Ù. // MDI ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­´Â m_pMainWnd¸¦ ¼³Á¤ÇÑ ÈÄ ¹Ù·Î ÀÌ·¯ÇÑ È£ÃâÀÌ ¹ß»ýÇØ¾ß ÇÕ´Ï´Ù. [!if HAS_SUFFIX && !HTML_EDITVIEW] // ²ø¾î¼­ ³õ±â¿¡ ´ëÇÑ ¿­±â¸¦ Ȱ¼ºÈ­ÇÕ´Ï´Ù. m_pMainWnd->DragAcceptFiles(); [!endif] [!endif] [!endif] [!if !MINI_SERVER] [!if HAS_SUFFIX && !HTML_EDITVIEW] // DDE Execute ¿­±â¸¦ Ȱ¼ºÈ­ÇÕ´Ï´Ù. EnableShellOpen(); RegisterShellFileTypes(TRUE); [!endif] [!endif] [!if DOCVIEW] // Ç¥ÁØ ¼Ð ¸í·É, DDE, ÆÄÀÏ ¿­±â¿¡ ´ëÇÑ ¸í·ÉÁÙÀ» ±¸¹® ºÐ¼®ÇÕ´Ï´Ù. CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); [!endif] [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER || AUTOMATION] // ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ /Embedding ¶Ç´Â /Automation ½ºÀ§Ä¡·Î ½ÃÀ۵Ǿú½À´Ï´Ù. // ÀÀ¿ë ÇÁ·Î±×·¥À» ÀÚµ¿È­ ¼­¹ö·Î ½ÇÇàÇÕ´Ï´Ù. if (cmdInfo.m_bRunEmbedded || cmdInfo.m_bRunAutomated) { [!if !APP_TYPE_MDI && !APP_TYPE_MTLD] // ¸ðµç OLE ¼­¹ö ÆÑÅ͸®¸¦ ½ÇÇà ÁßÀ¸·Î µî·ÏÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé // OLE ¶óÀ̺귯¸®°¡ ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ °³Ã¼¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. COleTemplateServer::RegisterAll(); [!endif] // ÁÖ Ã¢À» Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù. return TRUE; } // ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ /Unregserver ¶Ç´Â /Unregister ½ºÀ§Ä¡·Î ½ÃÀ۵Ǿú½À´Ï´Ù. // typelibrary¸¦ µî·Ï Ãë¼ÒÇÕ´Ï´Ù. ´Ù¸¥ µî·Ï Ãë¼Ò´Â ProcessShellCommand()¿¡¼­ ¹ß»ýÇÕ´Ï´Ù. else if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppUnregister) { [!if !MINI_SERVER] [!if HAS_SUFFIX && !HTML_EDITVIEW] UnregisterShellFileTypes(); [!endif] [!endif] [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER] [!if ACTIVE_DOC_SERVER] m_server.UpdateRegistry(OAT_DOC_OBJECT_SERVER, NULL, NULL, FALSE); [!else] m_server.UpdateRegistry(OAT_INPLACE_SERVER, NULL, NULL, FALSE); [!endif] [!else] [!if AUTOMATION] m_server.UpdateRegistry(OAT_DISPATCH_OBJECT, NULL, NULL, FALSE); [!endif] [!endif] [!if AUTOMATION] AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor); [!endif] [!if MINI_SERVER] return FALSE; [!endif] } // ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ µ¶¸³ ½ÇÇàÇüÀ¸·Î ½ÃÀ۵Ǿú°Å³ª ´Ù¸¥ ½ºÀ§Ä¡·Î ½ÃÀ۵Ǿú½À´Ï´Ù(¿¹: /Register // ¶Ç´Â /Regserver). typelibrary¸¦ Æ÷ÇÔÇÏ¿© ·¹Áö½ºÆ®¸® Ç׸ñÀ» ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. else { [!if MINI_SERVER || FULL_SERVER || CONTAINER_SERVER] [!if ACTIVE_DOC_SERVER] m_server.UpdateRegistry(OAT_DOC_OBJECT_SERVER); [!else] m_server.UpdateRegistry(OAT_INPLACE_SERVER); [!endif] [!else] [!if AUTOMATION] m_server.UpdateRegistry(OAT_DISPATCH_OBJECT); [!endif] [!endif] [!if AUTOMATION] COleObjectFactory::UpdateRegistryAll(); AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid); [!endif] [!if MINI_SERVER] if (cmdInfo.m_nShellCommand == CCommandLineInfo::AppRegister) return FALSE; [!endif] } [!endif] [!if MINI_SERVER] // ¹Ì´Ï ¼­¹ö°¡ µ¶¸³ ½ÇÇàÇüÀ¸·Î ½ÇÇàµÉ °æ¿ì ·¹Áö½ºÆ®¸®°¡ ¾÷µ¥ÀÌÆ®µÇ°í // »ç¿ëÀÚ´Â ÄÁÅ×À̳ʿ¡ ÀÖ´Â °³Ã¼ »ðÀÔ ´ëÈ­ »óÀÚ¸¦ »ç¿ëÇÏ¿© ¼­¹ö¸¦ »ç¿ëÇÏ°Ô µË´Ï´Ù. // ¹Ì´Ï ¼­¹ö¿¡´Â µ¶¸³ ½ÇÇàÇü »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º°¡ ¾ø½À´Ï´Ù. AfxMessageBox(IDP_USE_INSERT_OBJECT); return FALSE; [!else] [!if DOCVIEW] // ¸í·ÉÁÙ¿¡ ÁöÁ¤µÈ ¸í·ÉÀ» µð½ºÆÐÄ¡ÇÕ´Ï´Ù. // ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ /RegServer, /Register, /Unregserver ¶Ç´Â /Unregister·Î ½ÃÀÛµÈ °æ¿ì FALSE¸¦ ¹ÝȯÇÕ´Ï´Ù. if (!ProcessShellCommand(cmdInfo)) return FALSE; [!endif] [!if APP_TYPE_MDI] // ÁÖ Ã¢ÀÌ ÃʱâÈ­µÇ¾úÀ¸¹Ç·Î À̸¦ Ç¥½ÃÇÏ°í ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. [!if DOCVIEW] [!if MAIN_FRAME_MAXIMIZED] pMainFrame->ShowWindow(SW_SHOWMAXIMIZED); [!else] [!if MAIN_FRAME_MINIMIZED] pMainFrame->ShowWindow(SW_SHOWMINIMIZED); [!else] [!if APP_TYPE_SDI || APP_TYPE_MTLD] pMainFrame->ShowWindow(SW_SHOW); [!else] pMainFrame->ShowWindow(m_nCmdShow); [!endif] [!endif] [!endif] pMainFrame->UpdateWindow(); [!else] [!if MAIN_FRAME_MAXIMIZED] pFrame->ShowWindow(SW_SHOWMAXIMIZED); [!else] [!if MAIN_FRAME_MINIMIZED] pFrame->ShowWindow(SW_SHOWMINIMIZED); [!else] [!if APP_TYPE_SDI || APP_TYPE_MTLD] pFrame->ShowWindow(SW_SHOW); [!else] pFrame->ShowWindow(m_nCmdShow); [!endif] [!endif] [!endif] pFrame->UpdateWindow(); [!endif] [!endif] [!if APP_TYPE_SDI || APP_TYPE_MTLD] // â Çϳª¸¸ ÃʱâÈ­µÇ¾úÀ¸¹Ç·Î À̸¦ Ç¥½ÃÇÏ°í ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. [!if DOCVIEW] [!if MAIN_FRAME_MAXIMIZED] m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); [!else] [!if MAIN_FRAME_MINIMIZED] m_pMainWnd->ShowWindow(SW_SHOWMINIMIZED); [!else] [!if APP_TYPE_SDI || APP_TYPE_MTLD] m_pMainWnd->ShowWindow(SW_SHOW); [!else] m_pMainWnd->ShowWindow(m_nCmdShow); [!endif] [!endif] [!endif] m_pMainWnd->UpdateWindow(); [!else] [!if MAIN_FRAME_MAXIMIZED] pFrame->ShowWindow(SW_SHOWMAXIMIZED); [!else] [!if MAIN_FRAME_MINIMIZED] pFrame->ShowWindow(SW_SHOWMINIMIZED); [!else] [!if APP_TYPE_SDI || APP_TYPE_MTLD] pFrame->ShowWindow(SW_SHOW); [!else] pFrame->ShowWindow(m_nCmdShow); [!endif] [!endif] [!endif] pFrame->UpdateWindow(); [!endif] // Á¢¹Ì»ç°¡ ÀÖÀ» °æ¿ì¿¡¸¸ DragAcceptFiles¸¦ È£ÃâÇÕ´Ï´Ù. // SDI ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­´Â ProcessShellCommand ÈÄ¿¡ ÀÌ·¯ÇÑ È£ÃâÀÌ ¹ß»ýÇØ¾ß ÇÕ´Ï´Ù. [!if HAS_SUFFIX && !HTML_EDITVIEW] // ²ø¾î¼­ ³õ±â¿¡ ´ëÇÑ ¿­±â¸¦ Ȱ¼ºÈ­ÇÕ´Ï´Ù. m_pMainWnd->DragAcceptFiles(); [!endif] [!endif] return TRUE; [!endif] } [!if !DOCVIEW] // [!output APP_CLASS] ¸Þ½ÃÁö 󸮱â [!if APP_TYPE_MDI] [!if !DOCVIEW] int [!output APP_CLASS]::ExitInstance() { //TODO: Ãß°¡ÇÑ Ãß°¡ ¸®¼Ò½º¸¦ ó¸®ÇÕ´Ï´Ù. if (m_hMDIMenu != NULL) FreeResource(m_hMDIMenu); if (m_hMDIAccel != NULL) FreeResource(m_hMDIAccel); return CWinApp::ExitInstance(); } [!endif] [!endif] [!if APP_TYPE_MDI || DOCVIEW] void [!output APP_CLASS]::OnFileNew() { [!if APP_TYPE_SDI] CString strUntitled; CFrameWnd* pFrameWnd = DYNAMIC_DOWNCAST(CFrameWnd, m_pMainWnd); if (pFrameWnd != NULL) { //TODO: ¸Þ¸ð¸®¿¡¼­ °¡Á®¿Â ÆÄÀÏ¿¡ °üÇÑ µ¥ÀÌÅ͸¦ ´Ý°í ¼Ò¸ê½Ãŵ´Ï´Ù. // ÀÏ´Ü ÀÌ ÀÛ¾÷ÀÌ ¼öÇàµÇ¸é ´ÙÀ½ if ¹®À» ½ÇÇàÇÏ¿© ÇÁ·¹ÀÓ Ã¢ÀÇ Á¦¸ñÀ» // ¿ø·¡´ë·Î ¼³Á¤ÇÕ´Ï´Ù. if (strUntitled.LoadString(AFX_IDS_UNTITLED)) pFrameWnd->UpdateFrameTitleForDocument(strUntitled); else pFrameWnd->UpdateFrameTitleForDocument(NULL); } [!else] [!output MAIN_FRAME_CLASS]* pFrame = STATIC_DOWNCAST([!output MAIN_FRAME_CLASS], m_pMainWnd); // »õ MDI ÀÚ½Ä Ã¢À» ¸¸µì´Ï´Ù. pFrame->CreateNewChild( RUNTIME_CLASS(CChildFrame), IDR_[!output SAFE_DOC_TYPE_NAME]TYPE, m_hMDIMenu, m_hMDIAccel); [!endif] } [!endif] [!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) { [!if ACCESSIBILITY] EnableActiveAccessibility(); [!endif] } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() // ´ëÈ­ »óÀÚ¸¦ ½ÇÇàÇϱâ À§ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ ¸í·ÉÀÔ´Ï´Ù. void [!output APP_CLASS]::OnAppAbout() { CAboutDlg aboutDlg; aboutDlg.DoModal(); } // [!output APP_CLASS] ¸Þ½ÃÁö 󸮱â [!if APP_TYPE_MTLD] [!if DOCVIEW] void [!output APP_CLASS]::OnFileNewFrame() { ASSERT(m_pDocTemplate != NULL); CDocument* pDoc = NULL; CFrameWnd* pFrame = NULL; // m_pDocTemplate ¸â¹ö¿¡¼­ ÂüÁ¶ÇÏ´Â ¹®¼­ÀÇ // »õ ÀνºÅϽº¸¦ ¸¸µì´Ï´Ù. pDoc = m_pDocTemplate->CreateNewDocument(); if (pDoc != NULL) { // ¸¸µé±â°¡ ÀÛµ¿µÇ¸é ÇØ´ç ¹®¼­¿¡ ´ëÇØ »õ ÇÁ·¹ÀÓ ¸¸µé±â¸¦ // »ç¿ëÇÕ´Ï´Ù. pFrame = m_pDocTemplate->CreateNewFrame(pDoc, NULL); if (pFrame != NULL) { // Á¦¸ñÀ» ¼³Á¤ÇÏ°í ¹®¼­¸¦ ÃʱâÈ­ÇÕ´Ï´Ù. // ¹®¼­¸¦ ÃʱâÈ­ÇÏÁö ¸øÇϸé ÇÁ·¹ÀÓ Ã¢°ú ¹®¼­¸¦ // Á¤¸®ÇÕ´Ï´Ù. m_pDocTemplate->SetDefaultTitle(pDoc); if (!pDoc->OnNewDocument()) { pFrame->DestroyWindow(); pFrame = NULL; } else { // ±×·¸Áö ¾ÊÀ¸¸é ÇÁ·¹ÀÓÀ» ¾÷µ¥ÀÌÆ®ÇÕ´Ï´Ù. m_pDocTemplate->InitialUpdateFrame(pFrame, pDoc, TRUE); } } } // ½ÇÆÐÇÒ °æ¿ì ¹®¼­¸¦ Á¤¸®ÇÏ°í »ç¿ëÀÚ¿¡°Ô ¸Þ½ÃÁö¸¦ // º¸¿© ÁÝ´Ï´Ù. if (pFrame == NULL || pDoc == NULL) { delete pDoc; AfxMessageBox(AFX_IDP_FAILED_TO_CREATE_DOC); } } void [!output APP_CLASS]::OnFileNew() { CDocument* pDoc = NULL; CFrameWnd* pFrame; pFrame = DYNAMIC_DOWNCAST(CFrameWnd, CWnd::GetActiveWindow()); if (pFrame != NULL) pDoc = pFrame->GetActiveDocument(); if (pFrame == NULL || pDoc == NULL) { // ù ¹®¼­À̸é ÀÏ¹Ý ¹®¼­·Î ¸¸µì´Ï´Ù. CWinApp::OnFileNew(); } else { // ±×·¸Áö ¾ÊÀ¸¸é ¼öÁ¤ÇÑ ³»¿ëÀ» ÀúÀåÇØ¾ß ÇÏ´ÂÁö È®ÀÎÇÑ ´ÙÀ½ // ¹®¼­°¡ ÀÚüÀûÀ¸·Î ÀçÃʱâÈ­µÇµµ·Ï ¿äûÇÕ´Ï´Ù. if (!pDoc->SaveModified()) return; CDocTemplate* pTemplate = pDoc->GetDocTemplate(); ASSERT(pTemplate != NULL); pTemplate->SetDefaultTitle(pDoc); pDoc->OnNewDocument(); } } [!else] void [!output APP_CLASS]::OnFileNewFrame() { CMainFrame* pFrame = new CMainFrame; pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); pFrame->ShowWindow(SW_SHOW); pFrame->UpdateWindow(); m_aryFrames.Add(pFrame->GetSafeHwnd()); } [!endif] [!endif]