// BoounionPLCDlg.cpp : ʵÏÖÎļþ // #include "stdafx.h" #include "BoounionPLC.h" #include "BoounionPLCDlg.h" #include "afxdialogex.h" #include "Common.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // ÓÃÓÚÓ¦ÓóÌÐò¡°¹ØÓÚ¡±²Ëµ¥ÏîµÄ CAboutDlg ¶Ô»°¿ò class CAboutDlg : public CDialogEx { public: CAboutDlg(); // ¶Ô»°¿òÊý¾Ý #ifdef AFX_DESIGN_TIME enum { IDD = IDD_ABOUTBOX }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV Ö§³Ö // ʵÏÖ protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CBoounionPLCDlg ¶Ô»°¿ò CBoounionPLCDlg::CBoounionPLCDlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_BOOUNIONPLC_DIALOG, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_pTopToolbar = nullptr; m_crBkgnd = APP_MAIN_DLG_BACKGROUND; m_hbrBkgnd = nullptr; } void CBoounionPLCDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CBoounionPLCDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_WM_DESTROY() ON_WM_SIZE() ON_WM_CTLCOLOR() END_MESSAGE_MAP() // CBoounionPLCDlg ÏûÏ¢´¦Àí³ÌÐò BOOL CBoounionPLCDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // ½«¡°¹ØÓÚ...¡±²Ëµ¥ÏîÌí¼Óµ½ÏµÍ³²Ëµ¥ÖС£ // IDM_ABOUTBOX ±ØÐëÔÚϵͳÃüÁΧÄÚ¡£ ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // ÉèÖô˶Ի°¿òµÄͼ±ê¡£ µ±Ó¦ÓóÌÐòÖ÷´°¿Ú²»ÊǶԻ°¿òʱ£¬¿ò¼Ü½«×Ô¶¯ // Ö´Ðд˲Ù×÷ SetIcon(m_hIcon, TRUE); // ÉèÖôóͼ±ê SetIcon(m_hIcon, FALSE); // ÉèÖÃСͼ±ê // toolbar m_pTopToolbar = new CTopToolbar(); m_pTopToolbar->Create(IDD_TOP_TOOLBAR, this); m_pTopToolbar->ShowWindow(SW_SHOW); HMENU hMenu = m_pTopToolbar->GetOperatorMenu(); ASSERT(hMenu); ::EnableMenuItem(hMenu, ID_OPEATOR_SWITCH, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); // page plc list m_pPagePlcList = new CPagePlcList(); m_pPagePlcList->Create(IDD_PAGE_PLC_LIST, this); m_pPagePlcList->ShowWindow(SW_SHOW); ShowWindow(SW_MAXIMIZE); Resize(); return TRUE; // ³ý·Ç½«½¹µãÉèÖõ½¿Ø¼þ£¬·ñÔò·µ»Ø TRUE } void CBoounionPLCDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // Èç¹ûÏò¶Ô»°¿òÌí¼Ó×îС»¯°´Å¥£¬ÔòÐèÒªÏÂÃæµÄ´úÂë // À´»æÖƸÃͼ±ê¡£ ¶ÔÓÚʹÓÃÎĵµ/ÊÓͼģÐ굀 MFC Ó¦ÓóÌÐò£¬ // Õ⽫ÓÉ¿ò¼Ü×Ô¶¯Íê³É¡£ void CBoounionPLCDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // ÓÃÓÚ»æÖƵÄÉ豸ÉÏÏÂÎÄ SendMessage(WM_ICONERASEBKGND, reinterpret_cast(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 CBoounionPLCDlg::OnQueryDragIcon() { return static_cast(m_hIcon); } void CBoounionPLCDlg::OnDestroy() { CDialogEx::OnDestroy(); if (m_pTopToolbar != nullptr) { m_pTopToolbar->DestroyWindow(); delete m_pTopToolbar; m_pTopToolbar = nullptr; } if (m_pPagePlcList != nullptr) { m_pPagePlcList->DestroyWindow(); delete m_pPagePlcList; m_pPagePlcList = nullptr; } if (m_hbrBkgnd != nullptr) { ::DeleteObject(m_hbrBkgnd); m_hbrBkgnd = nullptr; } } void CBoounionPLCDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); if (m_pTopToolbar == nullptr || !::IsWindow(m_pTopToolbar->m_hWnd)) return; Resize(); } #define TOOLBAR_HEIGHT 78 #define PAGE_PLC_LIST_WIDTH 218 void CBoounionPLCDlg::Resize() { CRect rcClient, rcItem; GetClientRect(&rcClient); int y = 0; m_pTopToolbar->MoveWindow(0, 0, rcClient.Width(), TOOLBAR_HEIGHT); y += TOOLBAR_HEIGHT; m_pPagePlcList->MoveWindow(0, y, PAGE_PLC_LIST_WIDTH, rcClient.Height() - y - 2); } HBRUSH CBoounionPLCDlg::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; }