// MainDlg.cpp : implementation of the CMainDlg class
//
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "resource.h"
#include "aboutdlg.h"
#include "MainDlg.h"
#include ".\maindlg.h"
BOOL CMainDlg::PreTranslateMessage(MSG* pMsg)
{
return CWindow::IsDialogMessage(pMsg);
}
BOOL CMainDlg::OnIdle()
{
return FALSE;
}
LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{
// center the dialog on the screen
CenterWindow();
// set icons
HICON hIcon = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXICON), ::GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
SetIcon(hIcon, TRUE);
HICON hIconSmall = (HICON)::LoadImage(_Module.GetResourceInstance(), MAKEINTRESOURCE(IDR_MAINFRAME),
IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
SetIcon(hIconSmall, FALSE);
// register object for message filtering and idle updates
CMessageLoop* pLoop = _Module.GetMessageLoop();
ATLASSERT(pLoop != NULL);
pLoop->AddMessageFilter(this);
pLoop->AddIdleHandler(this);
UIAddChildWindowContainer(m_hWnd);
if (RA_CheckProcessWasRestarted())
SetDlgItemText(IDC_MSG, _T("We was restarted!"));
else
SetDlgItemText(IDC_MSG, _T("We are first!"));
return TRUE;
}
LRESULT CMainDlg::OnAppAbout(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CAboutDlg dlg;
dlg.DoModal();
return 0;
}
LRESULT CMainDlg::OnOK(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
// TODO: Add validation code
CloseDialog(wID);
return 0;
}
LRESULT CMainDlg::OnCancel(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
CloseDialog(wID);
return 0;
}
void CMainDlg::CloseDialog(int nVal)
{
if (IDC_RESTART == nVal)
{
GetDlgItem(IDOK).EnableWindow(FALSE);
GetDlgItem(IDCANCEL).EnableWindow(FALSE);
GetDlgItem(IDC_RESTART).EnableWindow(FALSE);
GetDlgItem(ID_APP_ABOUT).EnableWindow(FALSE);
GetDlgItem(IDC_PROGRESS).ShowWindow(SW_SHOW);
SendDlgItemMessage(IDC_PROGRESS, PBM_SETRANGE, 0, MAKELPARAM (0, 100));
SendDlgItemMessage(IDC_PROGRESS, PBM_SETSTEP, 1, 0);
for (int i = 0; i < 100; i++)
{
TCHAR szText[100];
wsprintf(szText, _T("Terminating %d remains..."), 100-i);
SetDlgItemText(IDC_MSG, szText);
SendDlgItemMessage(IDC_PROGRESS, PBM_STEPIT, 0, 0);
MSG msg;
if (PeekMessage(&msg,0,0,0,PM_REMOVE))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
Sleep(10);
}
}
DestroyWindow();
::PostQuitMessage(nVal);
}
LRESULT CMainDlg::OnBnClickedRestart(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
{
if (!RA_ActivateRestartProcess())
{
::MessageBox(NULL, _T("Something Wrong"), _T("Restart App"), MB_OK|MB_ICONEXCLAMATION);
return 0;
}
CloseDialog(IDC_RESTART);
return 0;
}