#include "stdafx.h" #include "GLJCDlg.h" #include "JCXCDlg.h" #include "JCLQDlg.h" IMPLEMENT_DYNAMIC(CGLJCDlg, CDialog) CGLJCDlg::CGLJCDlg(CWnd* pParent ) : CDialog(CGLJCDlg::IDD, pParent) , m_pWndJCLQ(NULL) , m_pWndJCXC(NULL) , m_pNodeJCLQ(NULL) , m_pNodeJCXC(NULL) { m_pWndJCXC = new CJCXCDlg(); m_pWndJCLQ = new CJCLQDlg(); } CGLJCDlg::~CGLJCDlg() { if (m_pWndJCXC) { m_pWndJCXC->DestroyWindow(); DELETE_PTR(m_pWndJCXC); m_pWndJCXC = NULL; } if (m_pWndJCLQ) { m_pWndJCLQ->DestroyWindow(); DELETE_PTR(m_pWndJCLQ); m_pWndJCLQ = NULL; } } void CGLJCDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TAB, m_wndTabCtrl); } BOOL CGLJCDlg::OnInitDialog() { CDialog::OnInitDialog(); initTabCtrl(); return TRUE; } void CGLJCDlg::initTabCtrl() { if (!m_pNodeJCLQ || !m_pNodeJCXC) return; m_wndTabCtrl.InsertItem(0, _T("交叉下沉")); m_wndTabCtrl.InsertItem(1, _T("交叉隆起")); m_wndTabCtrl.HighlightItem(0); m_wndTabCtrl.HighlightItem(1); m_pWndJCXC->SetFnctNode(m_pNodeJCXC); m_pWndJCLQ->SetFnctNode(m_pNodeJCLQ); m_pWndJCXC->Create(IDD_JCXC_DLG, &m_wndTabCtrl); m_pWndJCLQ->Create(IDD_JCLQ_DLG, &m_wndTabCtrl); DWORD styleJCXC = ::GetWindowLong(m_pWndJCXC->GetSafeHwnd(), GWL_STYLE); DWORD exStyleJCXC = ::GetWindowLong(m_pWndJCXC->GetSafeHwnd(), GWL_EXSTYLE); styleJCXC &= ~WS_DLGFRAME; styleJCXC &= ~WS_POPUP; styleJCXC &= ~WS_BORDER; styleJCXC &= ~DS_3DLOOK; styleJCXC &= ~DS_MODALFRAME; exStyleJCXC &= ~WS_EX_DLGMODALFRAME; styleJCXC |= WS_CHILD; ::SetWindowLong(m_pWndJCXC->GetSafeHwnd(), GWL_STYLE, styleJCXC); ::SetWindowLong(m_pWndJCXC->GetSafeHwnd(), GWL_EXSTYLE, exStyleJCXC); DWORD styleJCLQ = ::GetWindowLong(m_pWndJCLQ->GetSafeHwnd(), GWL_STYLE); DWORD exStyleJCLQ = ::GetWindowLong(m_pWndJCLQ->GetSafeHwnd(), GWL_EXSTYLE); styleJCLQ &= ~WS_DLGFRAME; styleJCLQ &= ~WS_POPUP; styleJCLQ &= ~WS_BORDER; styleJCLQ &= ~DS_3DLOOK; styleJCLQ &= ~DS_MODALFRAME; exStyleJCLQ &= ~WS_EX_DLGMODALFRAME; styleJCLQ |= WS_CHILD; ::SetWindowLong(m_pWndJCLQ->GetSafeHwnd(), GWL_STYLE, styleJCLQ); ::SetWindowLong(m_pWndJCLQ->GetSafeHwnd(), GWL_EXSTYLE, exStyleJCLQ); m_pWndJCLQ->SetParent(&m_wndTabCtrl); m_pWndJCXC->SetParent(&m_wndTabCtrl); m_pWndJCXC->ShowWindow(SW_SHOW); m_pWndJCLQ->ShowWindow(SW_HIDE); AdjustSize(); } void CGLJCDlg::AdjustSize() { //左右边距 7 Tab 页高度 一般 20 CRect rcDlg; GetWindowRect(&rcDlg); CRect rcTabTitle; m_wndTabCtrl.GetItemRect(0,rcTabTitle); CRect rcJcXc; m_pWndJCXC->GetWindowRect(&rcJcXc); int nDW = rcDlg.Width(); int nDh = rcDlg.Height(); rcDlg.InflateRect(0,0,rcJcXc.Width() - nDW + 14,rcJcXc.Height() - nDh + 7 + rcTabTitle.Height()); MoveWindow(rcDlg); CenterWindow(); CRect rcTab; GetClientRect(&rcTab); rcTab.DeflateRect(7,7,7,7); m_wndTabCtrl.MoveWindow(rcTab); CRect rcWnd; m_wndTabCtrl.GetClientRect(&rcWnd); rcWnd.DeflateRect(0,rcTabTitle.Height(),0,0); m_pWndJCXC->MoveWindow(rcWnd); m_pWndJCLQ->MoveWindow(rcWnd); CRect rcOk,rcCan; m_pWndJCXC->GetDlgItem(IDOK)->GetWindowRect(&rcOk); m_pWndJCXC->GetDlgItem(IDCANCEL)->GetWindowRect(&rcCan); m_pWndJCLQ->ScreenToClient(rcOk); m_pWndJCLQ->ScreenToClient(rcCan); m_pWndJCLQ->GetDlgItem(IDOK)->MoveWindow(&rcOk); m_pWndJCLQ->GetDlgItem(IDCANCEL)->MoveWindow(&rcCan); } void CGLJCDlg::SetCrossSectionScr(LPCTSTR src) { m_pWndJCLQ->SetCrossSectionScr(src); m_pWndJCXC->SetCrossSectionScr(src); } BEGIN_MESSAGE_MAP(CGLJCDlg, CDialog) ON_NOTIFY(TCN_SELCHANGE, IDC_TAB, &CGLJCDlg::OnTcnSelchangeTab) END_MESSAGE_MAP() void CGLJCDlg::OnTcnSelchangeTab(NMHDR *pNMHDR, LRESULT *pResult) { *pResult = 0; int nCul = m_wndTabCtrl.GetCurSel(); if (nCul == 0) // 交叉下沉 { m_pWndJCXC->ShowWindow(SW_SHOW); m_pWndJCLQ->ShowWindow(SW_HIDE); } else { m_pWndJCXC->ShowWindow(SW_HIDE); m_pWndJCLQ->ShowWindow(SW_SHOW); } }