// DCOverrollDlg.cpp : 实现文件 // #include "stdafx.h" #include "DCOverrollDlg.h" #include "afxdialogex.h" // DCOverrollDlg 对话框 IMPLEMENT_DYNAMIC(DCOverrollDlg, CDialogEx) DCOverrollDlg::DCOverrollDlg(CWnd* pParent /*=NULL*/) : CDialogEx(DCOverrollDlg::IDD, pParent) { //m_bkBrush.CreateSolidBrush(BKGCLR); m_CurSelect = 99; } DCOverrollDlg::~DCOverrollDlg() { /*关闭定时器*/ DelateTimer(); } //定时器回调函数 void FAR PASCAL m_DCOverrollTimer(WORD IDEvent, WORD uReserved, DWORD dwUser, DWORD dwReserved1, DWORD dwReserve2) { DCOverrollDlg *m_pView = (DCOverrollDlg *)dwUser; m_pView->DC0verrollStep(dwUser); } void DCOverrollDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); //DDX_Control(pDX, IDC_STATIC_DC, m_DCFrameInfoTab); DDX_Control(pDX, IDC_STATIC_DC, m_ShowPosition); } BEGIN_MESSAGE_MAP(DCOverrollDlg, CDialogEx) //ON_COMMAND(ID_13Ins, &DCOverrollDlg::OnUpdate13Ins) //ON_UPDATE_COMMAND_UI(ID_WHTJ, &DCOverrollDlg::OnUpdateWHTJ) ON_WM_CTLCOLOR() ON_WM_CLOSE() ON_BN_CLICKED(IDC_BTN_SHOW, &DCOverrollDlg::OnBnClickedBtnShow) ON_CBN_SELCHANGE(IDC_DC_CHOSET, &DCOverrollDlg::OnCbnSelchangeDcChoset) ON_BN_CLICKED(IDC_RADIO1, &DCOverrollDlg::OnBnClickedRadio1) ON_BN_CLICKED(IDC_RADIO2, &DCOverrollDlg::OnBnClickedRadio2) ON_MESSAGE(WM_PROCESS_DC_CMD, ProcessDCCMD) END_MESSAGE_MAP() HBRUSH DCOverrollDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 /* if(nCtlColor==CTLCOLOR_STATIC) { pDC->SetBkColor(RGB(0,0,0)); pDC->SetTextColor(TXTCLR); pDC->SetBkMode(TRANSPARENT); }*/ // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return m_bkBrush; } // DCOverrollDlg 消息处理程序 BOOL DCOverrollDlg::OnInitDialog() { CDialogEx::OnInitDialog(); DlgDCOverroll_Hwnd = GetSafeHwnd();//获得自身的窗口句柄 //CRect m_crect; //GetDlgItem(IDC_STATIC_DC_PUBLCI)->GetWindowRect(m_crect); //ScreenToClient(&m_crect); //this->MoveWindow(m_crect.left, m_crect.top, m_crect.Width()*1.05, m_crect.Height()*12); this->CenterWindow(); ///*根据屏幕分辨率最大化显示*/ //int cx = 0.65*GetSystemMetrics(SM_CXMAXIMIZED); //int cy = 0.5*GetSystemMetrics(SM_CYMAXIMIZED); //CRect rcRect(0,0,cx,cy); //this->MoveWindow(rcRect,true); //this->CenterWindow(); //CSize tabSize(180,25); //m_DCFrameInfoTab.SetItemSize(tabSize); //m_DCFrameInfoTab.SetNormalColor(RGB(230,230,230)); //m_DCFrameInfoTab.SetSelectedColor(0x32CD32); CreateAllDlg(); ((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->InsertString(0, "13所吊舱控制"); ((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->InsertString(1, "天进吊舱控制"); ((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->SetCurSel(1); ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(true); /*启动定时器*/ //先关闭 DelateTimer(); //再启动 if((DCDC0verrollTimerId = timeSetEvent(20, 10, (LPTIMECALLBACK)m_DCOverrollTimer, (DWORD)this, TIME_PERIODIC)) == 0) { MessageBox( "通用控制吊舱定时器启动错误!" ); } return 0; } BOOL DCOverrollDlg::CreateAllDlg() { CRect m_crect; GetDlgItem(IDC_STATIC_DC_PUBLCI)->GetWindowRect(m_crect);//获得IDC_STATIC_DC_PUBLCI的位置 ScreenToClient(&m_crect); CRect m_crect2; GetDlgItem(IDC_STATIC_DC)->GetWindowRect(m_crect2);//获得IDC_STATIC_DC的位置 ScreenToClient(&m_crect2); //吊舱新的控制方式 默认不显示 if(!m_13InstituteDCNewDlg.GetSafeHwnd()) { m_13InstituteDCNewDlg.Create(IDD_DIALOG_DC_13INSTITUTE_NEW,this); } m_13InstituteDCNewDlg.MoveWindow(m_crect2);//将IDD_DIALOG_DC_13INSTITUTE_NEW移到IDC_STATIC_DC_PUBLCI所在的位置 m_13InstituteDCNewDlg.ShowWindow(SW_HIDE); //默认显示 if(!m_WHTJDCNewDlg.GetSafeHwnd()) { m_WHTJDCNewDlg.Create(IDD_DIALOG_DC_WuHanTJ_NEW,this); } m_WHTJDCNewDlg.MoveWindow(m_crect2);//将IDD_DIALOG_DC_13INSTITUTE_NEW移到IDC_STATIC_DC_PUBLCI所在的位置 m_WHTJDCNewDlg.ShowWindow(SW_SHOW); CRect m_RectShow; //显示部分的面积区域 GetWindowRect(&m_RectLarge); GetDlgItem(IDC_STATIC_DC_PUBLCI)->GetWindowRect(&m_RectShow); m_RectSmall.left = m_RectLarge.left; m_RectSmall.top = m_RectLarge.top; m_RectSmall.right = m_RectShow.right; m_RectSmall.bottom = m_RectLarge.bottom; SetWindowPos(NULL,0,0,m_RectSmall.Width(),m_RectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER); return true; } //定时器处理函数 void DCOverrollDlg::DC0verrollStep(DWORD) { } void DCOverrollDlg::DelateTimer() { if(DCDC0verrollTimerId!=0) { timeKillEvent(DCDC0verrollTimerId); DCDC0verrollTimerId = 0; } } void DCOverrollDlg::OnClose() { // TODO: 在此添加消息处理程序代码和/或调用默认值 /*关闭定时器*/ DelateTimer(); m_CurSelect = 99; CDialogEx::OnClose(); } void DCOverrollDlg::OnBnClickedBtnShow() { // TODO: 在此添加控件通知处理程序代码 CString str; GetDlgItemText(IDC_BTN_SHOW, str); if(str == _T("扩展显示>>")) { SetDlgItemText(IDC_BTN_SHOW, _T("隐藏显示<<")); SetWindowPos(NULL, 0, 0, m_RectLarge.Width(), m_RectLarge.Height(),SWP_NOMOVE|SWP_NOZORDER); } else if(str == _T("隐藏显示<<")) { SetDlgItemText(IDC_BTN_SHOW, _T("扩展显示>>")); SetWindowPos(NULL, 0, 0, m_RectSmall.Width(), m_RectSmall.Height(),SWP_NOMOVE|SWP_NOZORDER); } } //LRESULT DCOverrollDlg::ProcessDCCMD(WPARAM wParam, LPARAM lParam) //{ // if(!gCurGCSCtrlFlag) // { // return 0; // } // if(m_CurSelect == 1) // { // m_WHTJDCNewDlg.UpdateTJDCAction((int)lParam); // } // else if(m_CurSelect == 0 || m_CurSelect == 99)//默认控制13所吊舱 // { // m_13InstituteDCNewDlg.UpdateDC13Action((int)lParam); // } // // return 0; //} void DCOverrollDlg::OnCbnSelchangeDcChoset() { // TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码 //int a = m_DCFrameInfoTab.GetCurSel(); UpdateData( true ); int iCount =((CComboBox *)GetDlgItem(IDC_DC_CHOSET))->GetCurSel(); if(m_CurSelect != iCount) { m_CurSelect = iCount; if(m_CurSelect == 0) { /* //吊舱旧的控制方式 //删除天进吊舱对话框 m_WuHanTJDCDlg.ShowWindow(SW_HIDE); m_WuHanTJDCDlg.DelateTimer(); m_WuHanTJDCDlg.m_DCCommonDateProcess.DelateTimer(); //显示13所吊舱控制对话框 m_13InstituteDCDlg.ShowWindow(SW_SHOW); m_13InstituteDCDlg.InitializeTimer(); */ //吊舱新的控制方式 //显示13所吊舱控制对话框 m_13InstituteDCNewDlg.ShowWindow(SW_SHOW); //隐藏天进吊舱控制对话框 m_WHTJDCNewDlg.ShowWindow(SW_HIDE); Sleep(120); } if(m_CurSelect == 1) { /* //吊舱旧的控制方式 //删除13所吊舱对话框 m_13InstituteDCDlg.ShowWindow(SW_HIDE); m_13InstituteDCDlg.DelateTimer(); m_13InstituteDCDlg.m_DCCommonDateProcess.DelateTimer(); //显示天进吊舱控制对话框 m_WuHanTJDCDlg.ShowWindow(SW_SHOW); m_WuHanTJDCDlg.InitializeTimer(); */ //吊舱新的控制方式 //隐藏13所吊舱控制对话框 m_13InstituteDCNewDlg.ShowWindow(SW_HIDE); //显示天进吊舱控制对话框 m_WHTJDCNewDlg.ShowWindow(SW_SHOW); Sleep(120); } if(m_CurSelect == 99)//默认显示13所吊舱 { /* //吊舱旧的控制方式 m_WuHanTJDCDlg.DelateTimer(); m_WuHanTJDCDlg.ShowWindow(SW_HIDE); m_WuHanTJDCDlg.m_DCCommonDateProcess.DelateTimer(); m_13InstituteDCDlg.DelateTimer(); m_13InstituteDCDlg.ShowWindow(SW_HIDE); m_13InstituteDCDlg.m_DCCommonDateProcess.DelateTimer(); */ //吊舱新的控制方式 //隐藏13所吊舱控制对话框 m_13InstituteDCNewDlg.ShowWindow(SW_HIDE); //隐藏天进吊舱控制对话框 m_WHTJDCNewDlg.ShowWindow(SW_HIDE); Sleep(120); } } } void DCOverrollDlg::OnBnClickedRadio1() { m_CurSelect = 0; //显示13所吊舱控制对话框 m_13InstituteDCNewDlg.ShowWindow(SW_SHOW); //隐藏天进吊舱控制对话框 m_WHTJDCNewDlg.ShowWindow(SW_HIDE); Sleep(120); } void DCOverrollDlg::OnBnClickedRadio2() { m_CurSelect = 1; //隐藏13所吊舱控制对话框 m_13InstituteDCNewDlg.ShowWindow(SW_HIDE); //显示天进吊舱控制对话框 m_WHTJDCNewDlg.ShowWindow(SW_SHOW); Sleep(120); } LRESULT DCOverrollDlg::ProcessDCCMD(WPARAM wParam, LPARAM lParam) { if(m_CurSelect == 1) { m_WHTJDCNewDlg.UpdateTJDCAction((int)lParam); } //else if(m_CurSelect == 0 || m_CurSelect == 99)//默认控制13所吊舱 //{ // m_13InstituteDCNewDlg.UpdateDC13Action((int)lParam); //} return 0; }