Files
envi-code/SourceCode/Code2026/EarthWormCmd/GLJCDlg.cpp
T
2026-09-28 15:28:50 +08:00

162 lines
3.8 KiB
C++

#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);
}
}