// CHomeDialog.cpp: 实现文件 // #include "stdafx.h" #include "BondServo.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); }