// MainFrm.cpp : CMainFrame Ŭ·¡½ºÀÇ ±¸Çö // #include "stdafx.h" #include "LogView.h" #include "MainFrm.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CMainFrame IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd) BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd) ON_WM_CREATE() ON_WM_CLOSE() ON_WM_DESTROY() ON_MESSAGE(UM_TRAY, &CMainFrame::OnTray) ON_COMMAND(ID_TRAYMENU_SHOWAPPLICATION, &CMainFrame::OnTraymenuShowapplication) ON_COMMAND(ID_TRAYMENU_EXIT, &CMainFrame::OnTraymenuExit) ON_COMMAND(ID_ViewAlwaysOnTop, &CMainFrame::OnViewalwaysontop) END_MESSAGE_MAP() static UINT indicators[] = { ID_SEPARATOR, // »óÅ Á٠ǥ½Ã±â ID_INDICATOR_CAPS, ID_INDICATOR_NUM, ID_INDICATOR_SCRL, }; // CMainFrame »ý¼º/¼Ò¸ê CMainFrame::CMainFrame() { // TODO: ¿©±â¿¡ ¸â¹ö ÃʱâÈ­ Äڵ带 Ãß°¡ÇÕ´Ï´Ù. m_uShellRestart = ::RegisterWindowMessage(__TEXT("TaskbarCreated")); m_bOnTop = false; } CMainFrame::~CMainFrame() { } int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; /* 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(IDR_MAINFRAME)) { TRACE0("µµ±¸ ¸ðÀ½À» ¸¸µéÁö ¸øÇß½À´Ï´Ù.\n"); return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } */ if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("StatusBar Error.\n"); return -1; // ¸¸µéÁö ¸øÇß½À´Ï´Ù. } // TODO: µµ±¸ ¸ðÀ½À» µµÅ·ÇÒ ¼ö ¾ø°Ô ÇÏ·Á¸é ÀÌ ¼¼ ÁÙÀ» »èÁ¦ÇϽʽÿÀ. /*m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY); EnableDocking(CBRS_ALIGN_ANY); DockControlBar(&m_wndToolBar); */ GoTray(); return 0; } BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { if( !CFrameWnd::PreCreateWindow(cs) ) return FALSE; // TODO: CREATESTRUCT cs¸¦ ¼öÁ¤ÇÏ¿© ¿©±â¿¡¼­ // Window Ŭ·¡½º ¶Ç´Â ½ºÅ¸ÀÏÀ» ¼öÁ¤ÇÕ´Ï´Ù. cs.style = WS_OVERLAPPED | WS_CAPTION | WS_THICKFRAME | WS_SYSMENU | WS_MINIMIZEBOX; cs.lpszName = _T("LogView"); return TRUE; } // CMainFrame Áø´Ü #ifdef _DEBUG void CMainFrame::AssertValid() const { CFrameWnd::AssertValid(); } void CMainFrame::Dump(CDumpContext& dc) const { CFrameWnd::Dump(dc); } #endif //_DEBUG // CMainFrame ¸Þ½ÃÁö 󸮱â void CMainFrame::GoTray(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("LogViewer")); ::Shell_NotifyIcon(NIM_ADD, &nid); } void CMainFrame::OnClose() { // TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù. ShowWindow(SW_HIDE); //CFrameWnd::OnClose(); } void CMainFrame::OnDestroy() { NOTIFYICONDATA nid; nid.cbSize = sizeof(nid); nid.hWnd = m_hWnd; nid.uID = IDR_MAINFRAME; ::Shell_NotifyIcon(NIM_DELETE, &nid); CFrameWnd::OnDestroy(); } 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::OnTraymenuShowapplication() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. ShowWindow(SW_SHOW); } void CMainFrame::OnTraymenuExit() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CFrameWnd::OnClose(); } LRESULT CMainFrame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: ¿©±â¿¡ Ư¼öÈ­µÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù. if(message == m_uShellRestart) GoTray(); return CFrameWnd::WindowProc(message, wParam, lParam); } void CMainFrame::OnViewalwaysontop() { // TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù. CMenu *m_pMenu; m_pMenu = this->GetMenu(); if(m_bOnTop) { m_pMenu->CheckMenuItem(ID_ViewAlwaysOnTop, MF_UNCHECKED); SetWindowPos(&wndNoTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); m_bOnTop = !m_bOnTop; } else { m_pMenu->CheckMenuItem(ID_ViewAlwaysOnTop,MF_CHECKED); SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); m_bOnTop = !m_bOnTop; } }