487 lines
12 KiB
C++
487 lines
12 KiB
C++
// MainFrm.cpp : implementation of the CMainFrame class
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "ServiceMonitor.h"
|
|
#include "MainFrm.h"
|
|
#include "BasePartitionView.h"
|
|
#include "BaseMonitorView.h"
|
|
#include "BaseInformationView.h"
|
|
#include "BaseErrorLogView.h"
|
|
#include "ConfigMngr.h"
|
|
#include "NetConnection.h"
|
|
|
|
#define DNPRJSAFE // DNPrjSafe.h Á¦¿Ü
|
|
#include "CriticalSection.h"
|
|
#include "DNPacket.h"
|
|
#include "DNServerDef.h"
|
|
#include "DNServerPacket.h"
|
|
#include "ConnectionInfoMngr.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
|
|
// CMainFrame
|
|
|
|
IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
|
|
|
|
BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
|
|
ON_WM_CREATE()
|
|
ON_WM_SIZE()
|
|
ON_COMMAND(ID_POPUP_RESTORE, &CMainFrame::OnPopupRestore)
|
|
ON_COMMAND(ID_POPUP_MINIMIZE, &CMainFrame::OnPopupMinimize)
|
|
ON_COMMAND(ID_POPUP_EXIT, &CMainFrame::OnPopupExit)
|
|
ON_COMMAND(ID_POPUP_ABOUT, &CMainFrame::OnPopupAbout)
|
|
ON_WM_CLOSE()
|
|
ON_COMMAND(ID_VIEW_TOTALSTATUSBAR, &CMainFrame::OnViewTotalStatusBar)
|
|
ON_UPDATE_COMMAND_UI(ID_VIEW_TOTALSTATUSBAR, &CMainFrame::OnUpdateViewTotalStatusBar)
|
|
ON_WM_TIMER()
|
|
ON_WM_DESTROY()
|
|
ON_COMMAND(ID_SETTING_CONNECTION, &CMainFrame::OnSettingConnection)
|
|
ON_UPDATE_COMMAND_UI(ID_SETTING_CONNECTION, &CMainFrame::OnUpdateSettingConnection)
|
|
ON_COMMAND(ID_CONTROL_CONNECTIONFROMFILE, &CMainFrame::OnConnectionFromFile)
|
|
ON_COMMAND(ID_SETTING_CONFIG, &CMainFrame::OnSettingConfig)
|
|
ON_UPDATE_COMMAND_UI(ID_SETTING_CONFIG, &CMainFrame::OnUpdateSettingConfig)
|
|
ON_COMMAND(IDC_MDB_ERRORLOGBUTTON, &CMainFrame::OnButtonErrorLog)
|
|
ON_UPDATE_COMMAND_UI(IDC_MDB_ERRORLOGBUTTON, &CMainFrame::OnUpdateButtonErrorLog)
|
|
ON_COMMAND(IDC_MDB_REFRESHWORLDINFO, &CMainFrame::OnButtonRefreshWorldInfo)
|
|
ON_UPDATE_COMMAND_UI(IDC_MDB_REFRESHWORLDINFO, &CMainFrame::OnUpdateButtonRefreshWorldInfo)
|
|
ON_WM_WINDOWPOSCHANGED()
|
|
ON_WM_GETMINMAXINFO()
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
// CMainFrame construction/destruction
|
|
|
|
CMainFrame::CMainFrame()
|
|
{
|
|
// TODO: add member initialization code here
|
|
|
|
CServiceMonitorApp* aWinApp = static_cast<CServiceMonitorApp*>(::AfxGetApp());
|
|
ASSERT(NULL != aWinApp);
|
|
aWinApp->SetMainFrame(this);
|
|
|
|
m_DoAlert = FALSE;
|
|
for (int aIndex = 0 ; EV_SBT_CNT > aIndex ; ++aIndex) {
|
|
m_TabIconTick[aIndex] = 0;
|
|
}
|
|
}
|
|
|
|
CMainFrame::~CMainFrame()
|
|
{
|
|
}
|
|
|
|
|
|
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
if( !CFrameWnd::PreCreateWindow(cs) )
|
|
return FALSE;
|
|
// TODO: Modify the Window class or styles here by modifying
|
|
// the CREATESTRUCT cs
|
|
|
|
cs.style &= ~FWS_ADDTOTITLE; // ÇöÀç ºä¿Í ¿¬°áµÈ µµÅ¥¸àÆ® À̸§À» ÇÁ·¹ÀÓ Å¸ÀÌÆ²¹Ù¿¡ Ãâ·ÂÇÏÁö ¾ÊÀ½
|
|
cs.style &= ~(WS_HSCROLL | WS_VSCROLL);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
// CMainFrame diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CMainFrame::AssertValid() const
|
|
{
|
|
CFrameWnd::AssertValid();
|
|
}
|
|
|
|
void CMainFrame::Dump(CDumpContext& dc) const
|
|
{
|
|
CFrameWnd::Dump(dc);
|
|
}
|
|
|
|
#endif //_DEBUG
|
|
|
|
|
|
void CMainFrame::ToggleConnectionDialog()
|
|
{
|
|
if (!::IsWindow(m_ConnectionDialog.GetSafeHwnd())) {
|
|
m_ConnectionDialog.Create(IDD_CNNTDLG, this);
|
|
}
|
|
|
|
m_ConnectionDialog.ShowWindow((!m_ConnectionDialog.IsWindowVisible())?(SW_NORMAL):(SW_HIDE));
|
|
}
|
|
|
|
|
|
void CMainFrame::ShowConnectionDialog(int nCmdShow)
|
|
{
|
|
if (!::IsWindow(m_ConnectionDialog.GetSafeHwnd())) {
|
|
m_ConnectionDialog.Create(IDD_CNNTDLG, this);
|
|
}
|
|
|
|
m_ConnectionDialog.ShowWindow(nCmdShow);
|
|
}
|
|
|
|
void CMainFrame::ShowControlDialog(int nCmdShow)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DWORD CMainFrame::GetTickTerm(DWORD dwOldTick, DWORD dwCurTick)
|
|
{
|
|
return((dwCurTick >= dwOldTick)?(dwCurTick - dwOldTick):(ULONG_MAX - dwOldTick + dwCurTick));
|
|
}
|
|
|
|
int CMainFrame::GetActivePageIndex() const
|
|
{
|
|
return(m_PartitionTabView.GetActivePageIndex());
|
|
}
|
|
|
|
void CMainFrame::SetPageImageIndex(int pPageIndex, int pImageIndex)
|
|
{
|
|
m_PartitionTabView.SetPageImageIndex(pPageIndex, pImageIndex);
|
|
}
|
|
|
|
void CMainFrame::ForceAllTabViewActivate()
|
|
{
|
|
if (m_PartitionTabView.GetPageCount() > 0)
|
|
{
|
|
// COX3DTabViewContainer Àá±è ¹æÁö
|
|
int aActivePageIndex = m_PartitionTabView.GetActivePageIndex();
|
|
for (int aIndex = 0 ; m_PartitionTabView.GetPageCount() > aIndex ; ++aIndex)
|
|
m_PartitionTabView.SetActivePageIndex(aIndex);
|
|
|
|
m_PartitionTabView.SetActivePageIndex((0 <= aActivePageIndex)?(aActivePageIndex):(0));
|
|
}
|
|
|
|
}
|
|
// CMainFrame message handlers
|
|
|
|
|
|
|
|
|
|
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
// TODO: ¿©±â¿¡ Ư¼öÈµÈ ÀÛ¼º Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
CCreateContext *aCreateContext = static_cast<CCreateContext*>(lpCreateStruct->lpCreateParams);
|
|
ASSERT(NULL != aCreateContext);
|
|
|
|
CRect aRect;
|
|
GetClientRect(&aRect);
|
|
|
|
// ÃßÈÄ À©µµ¿ì À§Ä¡»óÅ ÀúÀåÀÌ µé¾î°¡°Ô µÇ¸é ¿©±â¿¡¼ ó¸®
|
|
CenterWindow();
|
|
|
|
|
|
// ¾ÆÀÌÄÜ ¼³Á¤
|
|
{
|
|
SetIcon(::LoadIcon(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)), TRUE); // Å« ¾ÆÀÌÄÜ
|
|
SetIcon(::LoadIcon(::AfxGetInstanceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME)), FALSE); // ÀÛÀº ¾ÆÀÌÄÜ
|
|
}
|
|
// Window Position
|
|
{
|
|
|
|
/*
|
|
SetWindowPlacement()
|
|
|
|
- flags
|
|
> WPF_ASYNCWINDOWPLACEMENT :
|
|
> WPF_SETMINPOSITION : ¾ÆÀÌÄÜÈµÈ Ã¢ÀÇ x, y ÁÂÇ¥°¡ ptMaxPosition ¸â¹ö¿¡ ÁöÁ¤µÇ¾î ÀÖÀ½.
|
|
> WPF_RESTORETOMAXIMIZED : ¾ÆÀÌÄÜȵDZâ Àü »óÅ¿¡ °ü°è¾øÀÌ È¸éº¹±Í ½Ã ÃÖ´ëÈ µÇ¾î¾ß ÇÔ.
|
|
|
|
- UINT showCmd
|
|
> SW_HIDE : âÀ» ¼û±â°í ´Ù¸¥ âÀ» Ȱ¼ºÈ½ÃŲ´Ù.
|
|
> SW_MINIMIZE : âÀ» ¾ÆÀÌÄÜÈ ½ÃŲ´Ù. ÀÌ ¶§ ´Ù¸¥ âÀÌ È°¼ºÈ µÈ´Ù.
|
|
> SW_RESTORE : âÀ» Ȱ¼ºÈ½ÃŲ´Ù. ±× Àü¿¡ ¾ÆÀÌÄÜ ¶Ç´Â ÃÖ´ë »óÅ¿´´Ù¸é ¿ø·¡ »óÅ´ë·Î º¹¿øµÈ´Ù.
|
|
> SW_SHOW : ÀÌÀü À§Ä¡, Å©±â´ë·Î º¸ÀÌ°Ô Çϰí Ȱ¼ºÈ ½ÃŲ´Ù.
|
|
> SW_SHOWMAXIMIZED : Ȱ¼ºÈÇϰí ÃÖ´ëÈ ½ÃŲ´Ù.
|
|
> SW_SHOWMINIMIZED : Ȱ¼ºÈÇϰí ÃÖ¼ÒÈ ½ÃŲ´Ù.
|
|
> SW_SHOWNA : âÀ» ÇöÀç »óÅ´ë·Î Ȱ¼ºÈ ½ÃŲ´Ù.
|
|
> SW_SHOWNOACTIVATE : âÀ» °¡Àå ÃÖ±Ù »óÅ·ΠȰ¼ºÈ ½ÃŲ´Ù.
|
|
> SW_SHOWNORMAL : ÀÌ´Â SW_RESTORE¿Í °°À½.
|
|
*/
|
|
|
|
if (0 != CConfigMngr::GetInstancePtr()->m_WindowPlacement.rcNormalPosition.top ||
|
|
0 != CConfigMngr::GetInstancePtr()->m_WindowPlacement.rcNormalPosition.left ||
|
|
0 != CConfigMngr::GetInstancePtr()->m_WindowPlacement.rcNormalPosition.bottom ||
|
|
0 != CConfigMngr::GetInstancePtr()->m_WindowPlacement.rcNormalPosition.right
|
|
)
|
|
{
|
|
SetWindowPlacement(&CConfigMngr::GetInstancePtr()->m_WindowPlacement);
|
|
}
|
|
|
|
if (SW_MINIMIZE == CConfigMngr::GetInstancePtr()->m_WindowPlacement.showCmd ||
|
|
SW_SHOWMINIMIZED == CConfigMngr::GetInstancePtr()->m_WindowPlacement.showCmd ||
|
|
SW_FORCEMINIMIZE == CConfigMngr::GetInstancePtr()->m_WindowPlacement.showCmd
|
|
)
|
|
{
|
|
ShowWindow(SW_RESTORE);
|
|
}
|
|
|
|
if (SW_MAXIMIZE == CConfigMngr::GetInstancePtr()->m_WindowPlacement.showCmd ||
|
|
SW_SHOWMAXIMIZED == CConfigMngr::GetInstancePtr()->m_WindowPlacement.showCmd
|
|
)
|
|
{
|
|
ShowWindow(SW_SHOWMAXIMIZED);
|
|
// CFrameWnd::ActivateFrame(SW_SHOWMAXIMIZED);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
// Open Connection Dialog
|
|
OnSettingConnection();
|
|
|
|
return 0;
|
|
}
|
|
|
|
CBasePartitionView* CMainFrame::AddPartition (CNetConnection* pConnection, ULONG uIpAddress)
|
|
{
|
|
CCreateContext aCreateContext;
|
|
::memset(&aCreateContext, 0, sizeof(aCreateContext));
|
|
aCreateContext.m_pNewViewClass = RUNTIME_CLASS(CMainFrame);
|
|
|
|
SOCKADDR_IN stSockAddrIn;
|
|
stSockAddrIn.sin_family = AF_INET;
|
|
stSockAddrIn.sin_addr.s_addr = uIpAddress;
|
|
|
|
WCHAR wszAddress[20];
|
|
_swprintf(wszAddress, L"%S", inet_ntoa(stSockAddrIn.sin_addr));
|
|
|
|
if (!m_PartitionTabView.AddPage(RUNTIME_CLASS(CBasePartitionView), &aCreateContext, wszAddress, EV_IML_PARTITION))
|
|
{
|
|
TRACE0("Failed to add page m_MainTabView ¡çCBasePartitionView\n");
|
|
return NULL; // fail to create
|
|
}
|
|
|
|
INT nIndex = m_PartitionTabView.GetPageCount();
|
|
if(nIndex <= 0) return NULL;
|
|
|
|
CBasePartitionView* pPartitionView = static_cast<CBasePartitionView*>(m_PartitionTabView.GetPage(nIndex - 1));
|
|
ASSERT(NULL != pPartitionView);
|
|
|
|
pPartitionView->Set(nIndex - 1);
|
|
pPartitionView->Start (pConnection);
|
|
|
|
// App¿¡ ÆÄƼ¼Ç°ú ¼¼¼Ç µî·Ï
|
|
CServiceMonitorApp* aWinApp = static_cast<CServiceMonitorApp*>(::AfxGetApp());
|
|
aWinApp->SetPartitionView(uIpAddress, pPartitionView);
|
|
|
|
return pPartitionView;
|
|
}
|
|
|
|
void CMainFrame::RemovePartition (CBasePartitionView* pPartition)
|
|
{
|
|
ULONG nConID = pPartition->GetConnectionID();
|
|
CNetConnectionMgr::GetInstancePtr()->RemoveConnection(nConID);
|
|
|
|
pPartition->Close ();
|
|
|
|
// ÆäÀÌÁö À妽º°¡ ÀÚµ¿Á¤·ÄµÇÁö ¾Ê¾Æ ÀÏ´Ü ¸·´Â´Ù.
|
|
m_PartitionTabView.DeletePage (pPartition->GetPageIndex());
|
|
|
|
}
|
|
|
|
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpCreateStruct, CCreateContext* /*pContext*/)
|
|
{
|
|
// º» ¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵ù ÇÏ¸é ±âº» ºä (CMainView) ¸¦ »ý¼º ¾ÊÇÔ
|
|
|
|
CCreateContext *aCreateContext = static_cast<CCreateContext*>(lpCreateStruct->lpCreateParams);
|
|
ASSERT(NULL != aCreateContext);
|
|
|
|
CRect aRect;
|
|
GetClientRect(&aRect);
|
|
|
|
if (!m_PartitionTabView.Create(this, aRect,
|
|
WS_VISIBLE | WS_CHILD | TCS_FOCUSNEVER | TCS_MULTILINE | TCS_FIXEDWIDTH | TCS_HOTTRACK,
|
|
AFX_IDW_PANE_FIRST
|
|
))
|
|
{
|
|
TRACE0("Failed to create tabview container m_MainTabView\n");
|
|
return -1; // fail to create
|
|
}
|
|
m_PartitionTabView.SetOffsetExternal(0); // ÅÇ ºä¿Í ºÎ¸ð ÇÁ·¹ÀÓ »çÀÌÀÇ °£°Ý
|
|
m_PartitionTabView.SetOffsetInternal(0); // ÅÇ ºä¿Í ÀÚ½Ä ºä¿Í »çÀÌÀÇ °£°Ý
|
|
m_PartitionTabView.SetActivePageIndex(0);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
void CMainFrame::OnSize(UINT nType, int cx, int cy)
|
|
{
|
|
CFrameWnd::OnSize(nType, cx, cy);
|
|
|
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
if(SIZE_MINIMIZED == nType)
|
|
ShowWindow(SW_MINIMIZE);
|
|
|
|
}
|
|
|
|
void CMainFrame::OnPopupRestore()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
SetForegroundWindow();
|
|
PostMessage(WM_SYSCOMMAND, SC_RESTORE);
|
|
ShowWindow(SW_SHOW);
|
|
}
|
|
|
|
void CMainFrame::OnPopupMinimize()
|
|
{
|
|
ShowWindow(SW_SHOWMINIMIZED);
|
|
}
|
|
|
|
void CMainFrame::OnPopupExit()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
PostMessage(WM_CLOSE);
|
|
}
|
|
|
|
void CMainFrame::OnPopupAbout()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
PostMessage(WM_COMMAND, ID_APP_ABOUT);
|
|
}
|
|
|
|
void CMainFrame::OnClose()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
|
|
|
|
if (IDYES != ::AfxMessageBox(_T("Are you sure to quit ?"), MB_ICONQUESTION | MB_YESNO)) {
|
|
return;
|
|
}
|
|
|
|
// Save Config
|
|
{
|
|
{
|
|
|
|
}
|
|
|
|
// Window Position
|
|
{
|
|
GetWindowPlacement(&CConfigMngr::GetInstancePtr()->m_WindowPlacement);
|
|
|
|
CConfigMngr::GetInstancePtr()->Flush();
|
|
}
|
|
}
|
|
|
|
CFrameWnd::OnClose();
|
|
}
|
|
|
|
void CMainFrame::OnViewTotalStatusBar()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
}
|
|
|
|
void CMainFrame::OnUpdateViewTotalStatusBar(CCmdUI *pCmdUI)
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É ¾÷µ¥ÀÌÆ® UI 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
}
|
|
|
|
void CMainFrame::OnSettingConnection()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
ToggleConnectionDialog();
|
|
}
|
|
|
|
void CMainFrame::OnConnectionFromFile()
|
|
{
|
|
CConnectionInfoMngr::GetInstancePtr()->ConnectToServerManager();
|
|
}
|
|
|
|
void CMainFrame::OnUpdateSettingConnection(CCmdUI *pCmdUI)
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É ¾÷µ¥ÀÌÆ® UI 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
pCmdUI->SetCheck(::IsWindow(m_ConnectionDialog.GetSafeHwnd()) && m_ConnectionDialog.IsWindowVisible());
|
|
}
|
|
|
|
void CMainFrame::OnSettingConfig()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
|
|
}
|
|
|
|
void CMainFrame::OnUpdateSettingConfig(CCmdUI *pCmdUI)
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É ¾÷µ¥ÀÌÆ® UI 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
pCmdUI->Enable(FALSE); // ÇöÀç ¹ÌÁö¿ø
|
|
// pCmdUI->SetCheck(::IsWindow(m_ControlDialog.GetSafeHwnd()) && m_ControlDialog.IsWindowVisible()); // Å×½ºÆ® - »èÁ¦µÇ¾î¾ß ÇÔ !!!
|
|
}
|
|
|
|
void CMainFrame::OnTimer(UINT_PTR nIDEvent)
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº»°ªÀ» È£ÃâÇÕ´Ï´Ù.
|
|
CFrameWnd::OnTimer(nIDEvent);
|
|
}
|
|
|
|
void CMainFrame::OnDestroy()
|
|
{
|
|
CFrameWnd::OnDestroy();
|
|
|
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
KillTimer(EV_TMD_REFRESHSERVICESTATUS);
|
|
}
|
|
|
|
void CMainFrame::OnWindowPosChanged(WINDOWPOS* lpwndpos)
|
|
{
|
|
CFrameWnd::OnWindowPosChanged(lpwndpos);
|
|
|
|
// TODO: ¿©±â¿¡ ¸Þ½ÃÁö 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
if (lpwndpos->flags & SWP_SHOWWINDOW) {
|
|
// À©µµ¿ì º¸ÀÓ ½Ã ÅëÁö
|
|
|
|
ForceAllTabViewActivate(); // COX3DTabViewContainer Àá±è ¹æÁö
|
|
}
|
|
|
|
if (lpwndpos->flags & SWP_HIDEWINDOW) {
|
|
// À©µµ¿ì ¼û±è ½Ã ÅëÁö
|
|
|
|
|
|
}
|
|
}
|
|
|
|
BOOL CMainFrame::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
// TODO: ¿©±â¿¡ Ư¼öÈµÈ Äڵ带 Ãß°¡ ¹×/¶Ç´Â ±âº» Ŭ·¡½º¸¦ È£ÃâÇÕ´Ï´Ù.
|
|
|
|
return CFrameWnd::PreTranslateMessage(pMsg);
|
|
}
|
|
|
|
|
|
void CMainFrame::OnButtonErrorLog()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
}
|
|
|
|
void CMainFrame::OnUpdateButtonErrorLog(CCmdUI *pCmdUI)
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É ¾÷µ¥ÀÌÆ® UI 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
|
|
pCmdUI->Enable(TRUE);
|
|
}
|
|
|
|
void CMainFrame::OnButtonRefreshWorldInfo()
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
}
|
|
|
|
void CMainFrame::OnUpdateButtonRefreshWorldInfo(CCmdUI *pCmdUI)
|
|
{
|
|
// TODO: ¿©±â¿¡ ¸í·É ¾÷µ¥ÀÌÆ® UI 󸮱â Äڵ带 Ãß°¡ÇÕ´Ï´Ù.
|
|
}
|