<file_sep>
// currentTimeDlg.h : файл заголовка
//

#pragma once


// диалоговое окно CcurrentTimeDlg
class CcurrentTimeDlg : public CDialogEx
{
// Создание
public:
	CcurrentTimeDlg(CWnd* pParent = NULL);	// стандартный конструктор

// Данные диалогового окна
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_CURRENTTIME_DIALOG };
#endif

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// поддержка DDX/DDV


// Реализация
protected:
	HICON m_hIcon;

	// Созданные функции схемы сообщений
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
//	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
//	afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct);
//	afx_msg void OnEnable(BOOL bEnable);
	afx_msg void OnTimer(UINT_PTR nIDEvent);

	void SetFont()
	{
		HFONT hFont = CreateFont(56, 20, 0, 0, FW_BOLD, FALSE, FALSE, FALSE,
			DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
			CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
			DEFAULT_PITCH | FF_DONTCARE, L"Times New Roman");
		CFont *pFont = CFont::FromHandle(hFont);
		GetDlgItem(IDC_STATIC_My)->SetFont(pFont);
	}

	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

	afx_msg void OnClose();
	void StayTopMost();
	void StayLikeOther();
	afx_msg void OnBnClickedCheck1();
};
<file_sep>
// currentTimeDlg.cpp : файл реализации
//

#include "stdafx.h"
#include "currentTime.h"
#include "currentTimeDlg.h"
#include "afxdialogex.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include <string>


// диалоговое окно CcurrentTimeDlg


CcurrentTimeDlg::CcurrentTimeDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_CURRENTTIME_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CcurrentTimeDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CcurrentTimeDlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
ON_WM_TIMER()
ON_WM_CREATE()
ON_WM_CLOSE()
ON_BN_CLICKED(IDC_CHECK_TOP, &CcurrentTimeDlg::OnBnClickedCheck1)
END_MESSAGE_MAP()


// обработчики сообщений CcurrentTimeDlg

BOOL CcurrentTimeDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	// Задает значок для этого диалогового окна.  Среда делает это автоматически,
	//  если главное окно приложения не является диалоговым
	SetIcon(m_hIcon, TRUE);			// Крупный значок
	SetIcon(m_hIcon, FALSE);		// Мелкий значок

	ShowWindow(SW_SHOWNORMAL);

	// TODO: добавьте дополнительную инициализацию
	SetFont();
	CheckDlgButton(IDC_CHECK_TOP, BST_CHECKED);
	StayTopMost();
	return TRUE;  // возврат значения TRUE, если фокус не передан элементу управления
}

// При добавлении кнопки свертывания в диалоговое окно нужно воспользоваться приведенным ниже кодом,
//  чтобы нарисовать значок.  Для приложений MFC, использующих модель документов или представлений,
//  это автоматически выполняется рабочей областью.
void CcurrentTimeDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // контекст устройства для рисования

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// Выравнивание значка по центру клиентского прямоугольника
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Нарисуйте значок
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

// Система вызывает эту функцию для получения отображения курсора при перемещении
//  свернутого окна.
HCURSOR CcurrentTimeDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}






void CcurrentTimeDlg::OnTimer(UINT_PTR nIDEvent)
{
	SYSTEMTIME  curTime;
	::GetLocalTime(&curTime);
	CString StrMilli;
	StrMilli.Format(L"%d", curTime.wMilliseconds);
	CString StrSec;
	StrSec.Format(L"%02d", curTime.wSecond);
	CString StrMin;
	StrMin.Format(L"%02d", curTime.wMinute);
	CString StrHours;
	StrHours.Format(L"%02d", curTime.wHour);
	CString separator (":");
	CString resultString(StrHours + separator + StrMin + separator + StrSec + separator + StrMilli);
	///////////////////////
	SetDlgItemText(IDC_STATIC_My, resultString);
}


int CcurrentTimeDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialogEx::OnCreate(lpCreateStruct) == -1)
		return -1;
	

	if (!SetTimer(1, 1, NULL))

	return 0;
}


void CcurrentTimeDlg::OnClose()
{
	// TODO: Add your message handler code here and/or call default
	KillTimer(1);
	CDialogEx::OnClose();
}
void CcurrentTimeDlg::StayTopMost()
{
	::SetWindowPos(this->m_hWnd,       // handle to window
		HWND_TOPMOST,  // placement-order handle
		0,     // horizontal position
		0,      // vertical position
		0,  // width
		0, // height
		SWP_NOMOVE | SWP_NOSIZE); // window-positioning options);
}
void CcurrentTimeDlg::StayLikeOther()
{
	::SetWindowPos(this->m_hWnd,       // handle to window
		HWND_NOTOPMOST,  // placement-order handle
		0,     // horizontal position
		0,      // vertical position
		0,  // width
		0, // height
		SWP_NOMOVE | SWP_NOSIZE); // window-positioning options);
}


void CcurrentTimeDlg::OnBnClickedCheck1()
{
	if(IsDlgButtonChecked(IDC_CHECK_TOP))
	{
		StayTopMost();
	}
	else
	{
		StayLikeOther();
	}
}
