// MainFrm.cpp : CMainFrame Ŭ·¡½ºÀÇ ±¸Çö // #include "stdafx.h" #include "PLCConnector.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWndEx) const int iMaxUserToolbars = 10; const UINT uiFirstUserToolBarId = AFX_IDW_CONTROLBAR_FIRST + 40; const UINT uiLastUserToolBarId = uiFirstUserToolBarId + iMaxUserToolbars - 1; BEGIN_MESSAGE_MAP(CMainFrame, CFrameWndEx) ON_WM_CREATE() ON_COMMAND(ID_VIEW_CUSTOMIZE, &CMainFrame::OnViewCustomize) ON_MESSAGE(UM_TRAY, &CMainFrame::OnTray) ON_REGISTERED_MESSAGE(AFX_WM_CREATETOOLBAR, &CMainFrame::OnToolbarCreateNew) ON_COMMAND_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnApplicationLook) ON_UPDATE_COMMAND_UI_RANGE(ID_VIEW_APPLOOK_WIN_2000, ID_VIEW_APPLOOK_OFF_2007_AQUA, &CMainFrame::OnUpdateApplicationLook) ON_WM_DESTROY() ON_WM_CLOSE() ON_COMMAND(ID_APP_EXIT, &CMainFrame::OnAppExit) ON_COMMAND(ID_APP_SHOWAPPLICATION, &CMainFrame::OnAppShowapplication) END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // »óÅ Á٠ǥ½Ã±â ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; // CMainFrame »ý¼º/¼Ò¸ê CMainFrame::CMainFrame() { // TODO: ¿©±â¿¡ ¸â¹ö ÃʱâÈ­ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. theApp.m_nAppLook = theApp.GetInt(_T("ApplicationLook"), ID_VIEW_APPLOOK_VS_2005); } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWndEx::OnCreate(lpCreateStruct) == -1) return -1; /* BOOL bNameValid; // º¸°üµÈ °ª¿¡ µû¶ó ºñÁÖ¾ó °ü¸®ÀÚ ¹× ½ºÅ¸ÀÏÀ» ¼³Á¤ÇÕ´Ï´Ù. OnApplicationLook(theApp.m_nAppLook); if (!m_wndMenuBar.Create(this)) { return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY); // ¸Þ´º ¸ðÀ½À» Ȱ¼ºÈ­Çصµ Æ÷Ä¿½º°¡ À̵¿ÇÏÁö ¾Ê°Ô ÇÕ´Ï´Ù. CMFCPopupMenu::SetForceMenuFocus(FALSE); if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_wndToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)) { return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } CString strToolBarName; bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD); ASSERT(bNameValid); m_wndToolBar.SetWindowText(strToolBarName); CString strCustomize; bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); ASSERT(bNameValid); m_wndToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); // »ç¿ëÀÚ Á¤ÀÇ µµ±¸ ¸ðÀ½ ÀÛ¾÷À» Çã¿ëÇÕ´Ï´Ù. InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId); if (!m_wndStatusBar.Create(this)) { return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); // TODO: µµ±¸ ¸ðÀ½ ¹× ¸Þ´º ¸ðÀ½À» µµÅ·ÇÒ ¼ö ¾ø°Ô ÇÏ·Á¸é ÀÌ ´Ù¼¸ ÁÙÀ» »èÁ¦ÇϽʽÿÀ. m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY); m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockPane(&m_wndMenuBar); DockPane(&m_wndToolBar); // Visual Studio 2005 ½ºÅ¸ÀÏ µµÅ· â µ¿ÀÛÀ» Ȱ¼ºÈ­ÇÕ´Ï´Ù. CDockingManager::SetDockingMode(DT_SMART); // Visual Studio 2005 ½ºÅ¸ÀÏ µµÅ· â ÀÚµ¿ ¼û±è µ¿ÀÛÀ» Ȱ¼ºÈ­ÇÕ´Ï´Ù. EnableAutoHidePanes(CBRS_ALIGN_ANY); // µµ±¸ ¸ðÀ½ ¹× µµÅ· â ¸Þ´º ¹Ù²Ù±â¸¦ Ȱ¼ºÈ­ÇÕ´Ï´Ù. EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR); // ºü¸¥( ۸¦ ´©¸¥ ä ²ø±â) µµ±¸ ¸ðÀ½ »ç¿ëÀÚ ÁöÁ¤À» Ȱ¼ºÈ­ÇÕ´Ï´Ù. CMFCToolBar::EnableQuickCustomization(); if (CMFCToolBar::GetUserImages() == NULL) { // »ç¿ëÀÚ Á¤ÀÇ µµ±¸ ¸ðÀ½ À̹ÌÁö¸¦ ·ÎµåÇÕ´Ï´Ù. if (m_UserImages.Load(_T(".\\UserImages.bmp"))) { m_UserImages.SetImageSize(CSize(16, 16), FALSE); CMFCToolBar::SetUserImages(&m_UserImages); } } // ¸Þ´º °³ÀÎ ¼³Á¤À» Ȱ¼ºÈ­ÇÕ´Ï´Ù(°¡Àå ÃÖ±Ù¿¡ »ç¿ëÇÑ ¸í·É). // TODO: »ç¿ëÀÚÀÇ ±âº» ¸í·ÉÀ» Á¤ÀÇÇÏ¿© °¢ Ç®´Ù¿î ¸Þ´º¿¡ Çϳª ÀÌ»óÀÇ ±âº» ¸í·ÉÀ» Æ÷ÇÔ½Ãŵ´Ï´Ù. CList lstBasicCommands; lstBasicCommands.AddTail(ID_FILE_NEW); lstBasicCommands.AddTail(ID_FILE_OPEN); lstBasicCommands.AddTail(ID_FILE_SAVE); lstBasicCommands.AddTail(ID_FILE_PRINT); lstBasicCommands.AddTail(ID_APP_EXIT); lstBasicCommands.AddTail(ID_EDIT_CUT); lstBasicCommands.AddTail(ID_EDIT_PASTE); lstBasicCommands.AddTail(ID_EDIT_UNDO); lstBasicCommands.AddTail(ID_APP_ABOUT); lstBasicCommands.AddTail(ID_VIEW_STATUS_BAR); lstBasicCommands.AddTail(ID_VIEW_TOOLBAR); lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2003); lstBasicCommands.AddTail(ID_VIEW_APPLOOK_VS_2005); lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLUE); lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_SILVER); lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_BLACK); lstBasicCommands.AddTail(ID_VIEW_APPLOOK_OFF_2007_AQUA); CMFCToolBar::SetBasicCommands(lstBasicCommands); */ GotoTray(); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWndEx::PreCreateWindow(cs) ) return FALSE; cs.style = cs.style & ~FWS_ADDTOTITLE; cs.lpszName = _T("PLCConnector"); this->SetTitle(_T("PLCConnector")); // TODO: CREATESTRUCT cs¸¦ ¼öÁ¤ÇÏ¿© ¿©±â¿¡¼­ // Window Ŭ·¡½º ¶Ç´Â ½ºÅ¸ÀÏÀ» ¼öÁ¤ÇÕ´Ï´Ù. return TRUE; } // CMainFrame Áø´Ü #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWndEx::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWndEx::Dump(dc); } #endif //_DEBUG // CMainFrame ¸Þ½ÃÁö 󸮱â void CMainFrame::OnViewCustomize() { CMFCToolBarsCustomizeDialog* pDlgCust = new CMFCToolBarsCustomizeDialog(this, TRUE /* ¸Þ´º¸¦ °Ë»öÇÕ´Ï´Ù. */); pDlgCust->EnableUserDefinedToolbars(); pDlgCust->Create(); } LRESULT CMainFrame::OnToolbarCreateNew(WPARAM wp,LPARAM lp) { LRESULT lres = CFrameWndEx::OnToolbarCreateNew(wp,lp); if (lres == 0) { return 0; } CMFCToolBar* pUserToolbar = (CMFCToolBar*)lres; ASSERT_VALID(pUserToolbar); BOOL bNameValid; CString strCustomize; bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); ASSERT(bNameValid); pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); return lres; } void CMainFrame::OnApplicationLook(UINT id) { CWaitCursor wait; theApp.m_nAppLook = id; switch (theApp.m_nAppLook) { case ID_VIEW_APPLOOK_WIN_2000: CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManager)); break; case ID_VIEW_APPLOOK_OFF_XP: CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOfficeXP)); break; case ID_VIEW_APPLOOK_WIN_XP: CMFCVisualManagerWindows::m_b3DTabsXPTheme = TRUE; CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows)); break; case ID_VIEW_APPLOOK_OFF_2003: CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2003)); CDockingManager::SetDockingMode(DT_SMART); break; case ID_VIEW_APPLOOK_VS_2005: CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerVS2005)); CDockingManager::SetDockingMode(DT_SMART); break; default: switch (theApp.m_nAppLook) { case ID_VIEW_APPLOOK_OFF_2007_BLUE: CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_LunaBlue); break; case ID_VIEW_APPLOOK_OFF_2007_BLACK: CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_ObsidianBlack); break; case ID_VIEW_APPLOOK_OFF_2007_SILVER: CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Silver); break; case ID_VIEW_APPLOOK_OFF_2007_AQUA: CMFCVisualManagerOffice2007::SetStyle(CMFCVisualManagerOffice2007::Office2007_Aqua); break; } CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerOffice2007)); CDockingManager::SetDockingMode(DT_SMART); } RedrawWindow(NULL, NULL, RDW_ALLCHILDREN | RDW_INVALIDATE | RDW_UPDATENOW | RDW_FRAME | RDW_ERASE); theApp.WriteInt(_T("ApplicationLook"), theApp.m_nAppLook); } void CMainFrame::OnUpdateApplicationLook(CCmdUI* pCmdUI) { pCmdUI->SetRadio(theApp.m_nAppLook == pCmdUI->m_nID); } BOOL CMainFrame::LoadFrame(UINT nIDResource, DWORD dwDefaultStyle, CWnd* pParentWnd, CCreateContext* pContext) { // ±âº» Ŭ·¡½º°¡ ½ÇÁ¦ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. if (!CFrameWndEx::LoadFrame(nIDResource, dwDefaultStyle, pParentWnd, pContext)) { return FALSE; } // ¸ðµç »ç¿ëÀÚ µµ±¸ ¸ðÀ½¿¡ »ç¿ëÀÚ ÁöÁ¤ ´ÜÃ߸¦ Ȱ¼ºÈ­ÇÕ´Ï´Ù. BOOL bNameValid; CString strCustomize; bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); ASSERT(bNameValid); for (int i = 0; i < iMaxUserToolbars; i ++) { CMFCToolBar* pUserToolbar = GetUserToolBarByIndex(i); if (pUserToolbar != NULL) { pUserToolbar->EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); } } return TRUE; } void CMainFrame::GotoTray(void) { NOTIFYICONDATA nid; ::ZeroMemory(&nid, sizeof(nid)); nid.cbSize = sizeof(nid); nid.hWnd = m_hWnd; nid.uID = IDR_MAINFRAME; nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP; nid.uCallbackMessage = UM_TRAY; nid.hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); wsprintf(nid.szTip, _T("%s"), _T("PLCConnector")); ::Shell_NotifyIcon(NIM_ADD, &nid); } void CMainFrame::OnDestroy() { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); nid.hWnd = m_hWnd; nid.uID = IDR_MAINFRAME; ::Shell_NotifyIcon(NIM_DELETE, &nid); CFrameWndEx::OnDestroy(); // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. } void CMainFrame::OnClose() { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. ShowWindow(SW_HIDE); //CFrameWndEx::OnClose(); } LRESULT CMainFrame::OnTray(WPARAM wParam, LPARAM lParam) { if(lParam == WM_RBUTTONDOWN) { SetCapture(); } else if(lParam == WM_RBUTTONUP) { CMenu menu, *pMenu = NULL; CPoint pt; menu.LoadMenu(IDR_Tray); pMenu = menu.GetSubMenu(0); GetCursorPos(&pt); SetForegroundWindow(); pMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this); ::PostMessage(m_hWnd, WM_NULL, 0, 0); ReleaseCapture(); } else if(lParam == WM_LBUTTONDBLCLK) { ShowWindow(SW_SHOW); SetForegroundWindow(); } return 0; } void CMainFrame::OnAppExit() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CFrameWndEx::OnClose(); } void CMainFrame::OnAppShowapplication() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. ShowWindow(SW_SHOW); }