// OLSynOperato.cpp : 实现文件 // #include "stdafx.h" #include "GeoMative.h" #include "OLSynOperato.h" #include "afxdialogex.h" // COLSynOperato 对话框 extern CGeoMativeApp theApp; extern int g_iUILanguage; extern int g_UIOffset; BEGIN_EASYSIZE_MAP(COLSynOperato) // EASYSIZE(control,left,top,right,bottom,options) EASYSIZE(IDC_STATIC_DEV_SN, ES_BORDER, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) EASYSIZE(IDC_TD_DESN_OL, ES_BORDER, ES_BORDER, ES_BORDER, ES_KEEPSIZE, 0) EASYSIZE(IDC_OP_SYN_TAB_OL, ES_BORDER, IDC_STATIC_DEV_SN, ES_BORDER, ES_BORDER, 0) //EASYSIZE(IDD_OP_SYN_TD_OL, ES_BORDER, ES_BORDER, ES_BORDER, ES_BORDER, 0) END_EASYSIZE_MAP IMPLEMENT_DYNAMIC(COLSynOperato, CDialog) COLSynOperato::COLSynOperato(_ConnectionPtr& pConnection, CWnd* pParent) : CDialog(COLSynOperato::IDD, pParent) { ASSERT(NULL != pConnection); m_pConnection = pConnection; } COLSynOperato::~COLSynOperato() { } void COLSynOperato::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TD_DESN_OL, m_cbDevSN); DDX_Control(pDX, IDC_OP_SYN_TAB_OL, m_synTab); } BEGIN_MESSAGE_MAP(COLSynOperato, CDialog) ON_NOTIFY(TCN_SELCHANGE, IDC_OP_SYN_TAB_OL, &COLSynOperato::OnTcnSelchangeOpSynTabOl) ON_CBN_SELCHANGE(IDC_TD_DESN_OL, &COLSynOperato::OnCbnSelchangeTdDesnOl) ON_WM_SIZE() ON_WM_SIZING() END_MESSAGE_MAP() // COLSynOperato 消息处理程序 void COLSynOperato::OnTcnSelchangeOpSynTabOl(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 *pResult = 0; int iCurSel = VAL_MINUS_ONE; iCurSel = m_synTab.GetCurSel(); switch (iCurSel) { case TAB_INDEX_DMS: m_SynDevDlg.ShowWindow(true); m_SynTdDlg.ShowWindow(false); m_SynDevDlg.OnInitLocalList(); m_SynDevDlg.OnSynAndInitSevDevList(); m_SynDevDlg.OnSynAndInitSevCableList(); break; case TAB_INDEX_SPT: m_SynDevDlg.ShowWindow(false); m_SynTdDlg.ShowWindow(true); m_SynTdDlg.OnInitLocalList(); m_SynTdDlg.OnSynAndInitSevTdList(); break; default: break; } m_synTab.SetFocus(); } void COLSynOperato::OnCbnSelchangeTdDesnOl() { // TODO: 在此添加控件通知处理程序代码 //根据重选的设备号进行设置 m_SynTdDlg.m_uiPlcID = m_uiPlcId; CString Str; int nIndex = m_cbDevSN.GetCurSel(); if (CB_ERR != nIndex) { m_cbDevSN.GetLBText(nIndex, m_SynTdDlg.m_szDeSN); m_cbDevSN.GetLBText(nIndex, m_SynDevDlg.m_szDeSN); } else { GetDlgItem(IDC_TD_DESN_OL)->GetWindowText(m_SynTdDlg.m_szDeSN); GetDlgItem(IDC_TD_DESN_OL)->GetWindowText(m_SynDevDlg.m_szDeSN); } m_SynDevDlg.OnInitLocalList(); m_SynDevDlg.OnSynAndInitSevDevList(); m_SynDevDlg.OnSynAndInitSevCableList(); } void COLSynOperato::InitialDevShow() { if (m_cbDevSN.GetCount() > 0) { m_cbDevSN.SetCurSel(0); OnCbnSelchangeTdDesnOl(); } } BOOL COLSynOperato::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 // TODO: Add extra initialization here if (LANG_ZHCN == g_iUILanguage) { SetWindowText(_T("同步")); GetDlgItem(IDC_STATIC_DEV_SN)->SetWindowText(_T("已连接上的主机设备")); } CString szLabel; CTabCtrl* pSynTab = NULL; szLabel.Empty(); if (LANG_ZHCN == g_iUILanguage) { szLabel += _T("设备信息");//IDS_SYN_TD + g_UIOffset); } else { szLabel += _T("Device info");//IDS_SYN_TD + g_UIOffset); } ASSERT(!szLabel.IsEmpty()); m_synTab.InsertItem(TAB_INDEX_DMS, szLabel); szLabel.Empty(); szLabel.LoadString(IDS_SYN_TD + g_UIOffset); ASSERT(!szLabel.IsEmpty()); m_synTab.InsertItem(TAB_INDEX_SPT, szLabel); m_SynDevDlg.Create(IDD_OP_SYN_DEV_OL, GetDlgItem(IDC_OP_SYN_TAB_OL)); m_SynTdDlg.Create(IDD_OP_SYN_TD_OL, GetDlgItem(IDC_OP_SYN_TAB_OL)); pSynTab = (CTabCtrl*)GetDlgItem(IDC_OP_SYN_TAB_OL); INIT_EASYSIZE; ShowWindow(SW_MAXIMIZE); if ((NULL != pSynTab) && (VAL_ZERO != m_SynDevDlg.GetSafeHwnd()) && (VAL_ZERO != m_SynTdDlg.GetSafeHwnd())) { CRect rect; pSynTab->GetClientRect(&rect); rect.top += 23; rect.bottom -= 2; rect.left += 2; rect.right -= 2; m_SynDevDlg.MoveWindow(&rect); m_SynTdDlg.MoveWindow(&rect); //m_SynTdDlg.ShowWindow(SW_MAXIMIZE); //m_SynDevDlg.ShowWindow(SW_MAXIMIZE); } pSynTab = NULL; m_SynTdDlg.m_pConnection = m_pConnection; m_SynDevDlg.ShowWindow(true); m_SynTdDlg.ShowWindow(false); //ModifyStyle(0, WS_SIZEBOX); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void COLSynOperato::OnSize(UINT nType, int cx, int cy) { CDialog::OnSize(nType, cx, cy); UPDATE_EASYSIZE; //当界面变化时更新CTabCtrl控件中的对话框大小 CTabCtrl* pSynTab = NULL; pSynTab = (CTabCtrl*)GetDlgItem(IDC_OP_SYN_TAB); if ((NULL != pSynTab) && (VAL_ZERO != m_SynTdDlg.GetSafeHwnd()) && (VAL_ZERO != m_SynDevDlg.GetSafeHwnd())) { CRect rect; pSynTab->GetClientRect(&rect); rect.top += 23; rect.bottom -= 2; rect.left += 2; rect.right -= 2; m_SynTdDlg.MoveWindow(&rect); m_SynDevDlg.MoveWindow(&rect); } pSynTab = NULL; // TODO: 在此处添加消息处理程序代码 } void COLSynOperato::OnSizing(UINT fwSide, LPRECT pRect) { CDialog::OnSizing(fwSide, pRect); EASYSIZE_MINSIZE(650, 550, fwSide, pRect); // TODO: 在此处添加消息处理程序代码 }