// CHomeDialog.cpp: 实现文件
|
//
|
|
#include "stdafx.h"
|
#include "BondEq.h"
|
#include "Common.h"
|
#include "CHomeDialog.h"
|
#include "afxdialogex.h"
|
|
|
// CHomeDialog 对话框
|
|
IMPLEMENT_DYNAMIC(CHomeDialog, CDialogEx)
|
|
CHomeDialog::CHomeDialog(CWnd* pParent /*=nullptr*/)
|
: CDialogEx(IDD_DIALOG_HOME, pParent)
|
{
|
m_pTab = nullptr;
|
m_pPageLogcat = nullptr;
|
m_pPageAlarm = nullptr;
|
m_crBkgnd = HOMEPAGE_BACKGROUND;
|
m_hbrBkgnd = nullptr;
|
}
|
|
CHomeDialog::~CHomeDialog()
|
{
|
}
|
|
void CHomeDialog::DoDataExchange(CDataExchange* pDX)
|
{
|
CDialogEx::DoDataExchange(pDX);
|
}
|
|
|
BEGIN_MESSAGE_MAP(CHomeDialog, CDialogEx)
|
ON_WM_CTLCOLOR()
|
ON_WM_DESTROY()
|
ON_WM_SIZE()
|
ON_NOTIFY(BYHMTAB_SEL_CHANGED, IDC_HMTAB1, &CHomeDialog::OnTabSelChanged)
|
END_MESSAGE_MAP()
|
|
|
// CHomeDialog 消息处理程序
|
|
|
BOOL CHomeDialog::OnInitDialog()
|
{
|
CDialogEx::OnInitDialog();
|
|
|
// 子页面
|
m_pPageAlarm = new CPageAlarm();
|
m_pPageAlarm->Create(IDD_PAGE_ALARM, this);
|
m_pPageLogcat = new CPageLogcat();
|
m_pPageLogcat->Create(IDD_PAGE_LOGCAT, this);
|
|
|
// Tab
|
m_pTab = CHmTab::Hook(GetDlgItem(IDC_HMTAB1)->m_hWnd);
|
m_pTab->SetPaddingLeft(20);
|
m_pTab->SetItemMarginLeft(18);
|
m_pTab->SetBkgndColor(RGB(255, 255, 255));
|
m_pTab->AddItem("警告", FALSE);
|
m_pTab->AddItem("日志", TRUE);
|
m_pTab->SetCurSel(0);
|
|
|
ShowChildPage(0);
|
ShowWindow(SW_MAXIMIZE);
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
// 异常: OCX 属性页应返回 FALSE
|
}
|
|
|
HBRUSH CHomeDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
|
{
|
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
|
|
if (nCtlColor == CTLCOLOR_STATIC) {
|
pDC->SetBkColor(m_crBkgnd);
|
}
|
|
if (m_hbrBkgnd == nullptr) {
|
m_hbrBkgnd = CreateSolidBrush(m_crBkgnd);
|
}
|
|
return m_hbrBkgnd;
|
}
|
|
|
void CHomeDialog::OnDestroy()
|
{
|
CDialogEx::OnDestroy();
|
|
|
if (m_pPageAlarm != nullptr) {
|
m_pPageAlarm->DestroyWindow();
|
delete m_pPageAlarm;
|
m_pPageAlarm = nullptr;
|
}
|
|
if (m_pPageLogcat != nullptr) {
|
m_pPageLogcat->DestroyWindow();
|
delete m_pPageLogcat;
|
m_pPageLogcat = nullptr;
|
}
|
|
if (m_hbrBkgnd != nullptr) {
|
::DeleteObject(m_hbrBkgnd);
|
}
|
}
|
|
|
void CHomeDialog::OnSize(UINT nType, int cx, int cy)
|
{
|
CDialogEx::OnSize(nType, cx, cy);
|
if (GetDlgItem(IDC_HMTAB1) == nullptr) return;
|
Resize();
|
}
|
|
|
void CHomeDialog::ShowChildPage(int index)
|
{
|
ASSERT(0 <= index && index < 2);
|
static CWnd* pPages[] = { m_pPageAlarm, m_pPageLogcat };
|
for (int i = 0; i < 2; i++) {
|
pPages[i]->ShowWindow(i == index ? SW_SHOW : SW_HIDE);
|
}
|
}
|
|
void CHomeDialog::OnTabSelChanged(NMHDR* nmhdr, LRESULT* result)
|
{
|
BYHMTAB_NMHDR* pNmhdrex = (BYHMTAB_NMHDR*)nmhdr;
|
ShowChildPage((int)pNmhdrex->dwData);
|
|
*result = 0;
|
}
|
|
void CHomeDialog::Resize()
|
{
|
CRect rcClient, rcItem;
|
GetClientRect(&rcClient);
|
|
int x = 8;
|
int y = 12;
|
GetDlgItem(IDC_HMTAB1)->GetWindowRect(&rcItem);
|
GetDlgItem(IDC_HMTAB1)->MoveWindow(x, y, rcClient.Width() - x * 2, rcItem.Height());
|
y += rcItem.Height();
|
y += 1;
|
|
m_pPageAlarm->MoveWindow(x, y, rcClient.Width() - x * 2, rcClient.Height() - y);
|
m_pPageLogcat->MoveWindow(x, y, rcClient.Width() - x * 2, rcClient.Height() - y);
|
}
|