// Dlg_Frame.cpp : 实现文件 // #include "stdafx.h" #include "StoneU_Door.h" #include "Dlg_Frame.h" #include ".\dlg_frame.h" #include "Global.h" #include "KingKey\\Acs_Import.h" #include "DBConnection.h" int g_nControllerOpenCount; //控制器打开总数 HINSTANCE hACSDLL; //DLL handle void OnConnect(unsigned long LineID);//回调函数原型 void OnDisConnect(unsigned long LineID); void CtrlOnReceConfigData (unsigned long LineID, BYTE *pDataBuf,unsigned long DataLength); void CtrlOnSwitchChange(unsigned long LineID,unsigned long PortNum, unsigned long Value); // CDlg_Frame 对话框 IMPLEMENT_DYNAMIC(CDlg_Frame, CDialog) CDlg_Frame::CDlg_Frame(CWnd* pParent /*=NULL*/) : CDialog(CDlg_Frame::IDD, pParent) { m_bStopRun1 = false; for( int i=0;iStopThread(); delete m_pThread_Controller[i]; m_pThread_Controller[i] = NULL; } } delete m_pDlg_Controller; m_pDlg_Controller = NULL; delete m_pDlg_Record; m_pDlg_Record = NULL; delete m_pDlg_Permit; m_pDlg_Permit = NULL; delete m_pDlg_Moniter; m_pDlg_Moniter = NULL; delete m_pDlg_Card; m_pDlg_Card = NULL; if( m_pDlgZK ) { delete m_pDlgZK; m_pDlgZK = NULL; } //释放DLL FreeLibrary(hACSDLL); hACSDLL = NULL; DBConnectionThreadEnd(); } // CDlg_Frame 消息处理程序 BOOL CDlg_Frame::OnInitDialog() { CDialog::OnInitDialog(); CHAR strFile[MAX_PATH + 1] = ""; CHAR strValue[MAX_PATH + 1] = ""; int iPosFile = 0; int iLenghtFile = 0; GetModuleFileName(AfxGetApp()->m_hInstance, g_strDirectory, MAX_PATH); iLenghtFile = strlen(g_strDirectory); for (iPosFile = iLenghtFile - 1; iPosFile >= 0; iPosFile--) { if (g_strDirectory[iPosFile] == '\\') { g_strDirectory[iPosFile] = '\0'; break; } } // TODO: 在此添加额外的初始化 DBConnectionThreadStart(); m_Btn_Moniter.SetIcon(IDI_MONITER); m_Btn_Moniter.DrawBorder(FALSE); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Moniter.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_Controller.SetIcon(IDI_CONTROLLER); m_Btn_Controller.DrawBorder(FALSE); m_Btn_Controller.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Controller.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Controller.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Controller.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_Record.SetIcon(IDI_RECORD); m_Btn_Record.DrawBorder(FALSE); m_Btn_Record.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Record.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Record.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Record.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_Permit.SetIcon(IDI_PERMIT); m_Btn_Permit.DrawBorder(FALSE); m_Btn_Permit.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Permit.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Permit.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Permit.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_Card.SetIcon(IDI_CARD); m_Btn_Card.DrawBorder(FALSE); m_Btn_Card.SetColor(CButtonST::BTNST_COLOR_NOTCHOOSE, g_Color1); m_Btn_Card.SetColor(CButtonST::BTNST_COLOR_CHOOSE, g_Color2); m_Btn_Card.SetColor(CButtonST::BTNST_COLOR_BK_IN, g_Color2); m_Btn_Card.SetColor(CButtonST::BTNST_COLOR_BK_FOCUS, g_Color2); m_Btn_Card.SetAlign(CButtonST::ST_ALIGN_HORIZ); CRect rc( 0,0,g_nFrameWeight,g_nFrameHeight ); this->MoveWindow( rc ); //调整控件位置 SetPos(); g_GetResourceString(); InitChildWindow(); // TODO: Add extra initialization her ////加载DLL // hACSDLL = LoadLibrary("TC3XY.dll"); //if (hACSDLL == NULL) //{ // MessageBox("Load DLL false", "information", MB_OK); // return false; //} //DLLFunNT_Innitialize NT_Innitialize = (DLLFunNT_Innitialize)GetProcAddress(hACSDLL,"NT_Innitialize"); //if (!NT_Innitialize()) // return false; SetCombDoor( &m_pDlg_Record->m_Comb_Door ); OnBnClickedBtnMoniter(); //////// CString sPathName = "C:\\log4c.txt"; CStdioFile File; if(File.Open(sPathName,CFile::modeRead)) { File.Close(); DeleteFile( sPathName ); } for( int i=0;i=0 && !g_Controller[i].bForbid ) { if( m_pThread_Controller[i]==NULL ) { m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] ); m_pThread_Controller[i]->StartThread(); Sleep( 1000); } } } return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlg_Frame::OnBnClickedBtnMoniter() { if( m_nShowIndex==0 ) return; m_nShowIndex = 0; InitMoniterRect(); m_Btn_Moniter.m_nIsChoose = 1; } void CDlg_Frame::OnBnClickedBtnController() { if( m_nShowIndex==1 ) return; m_nShowIndex = 1; InitControllerRect(); m_Btn_Controller.m_nIsChoose = 1; } void CDlg_Frame::OnBnClickedBtnCard() { if( m_nShowIndex==2 ) return; m_nShowIndex = 2; InitCardRect(); m_Btn_Card.m_nIsChoose = 1; } void CDlg_Frame::OnBnClickedBtnLimits() { //if( m_nShowIndex==3 ) // return; //m_nShowIndex = 3; //InitPermitRect(); //m_Btn_Permit.m_nIsChoose = 1; } void CDlg_Frame::OnBnClickedBtnRecord() { if( m_nShowIndex==3 ) return; m_nShowIndex = 3; InitRecordRect(); m_Btn_Record.m_nIsChoose = 1; } void CDlg_Frame::InitChildWindow(void) { CRect rect; GetDlgItem( IDC_STATIC_RECT )->GetWindowRect( rect ); ScreenToClient( &rect ); m_pDlg_Controller = new CDlg_Controller; m_pDlg_Controller->Create(IDD_DLG_CONTROLLER,this); m_pDlg_Controller->SetPos( rect ); m_pDlg_Controller->ShowWindow(SW_HIDE); m_pDlg_Record = new CDlg_Record; m_pDlg_Record->Create(IDD_DLG_RECORD, this); m_pDlg_Record->SetPos( rect ); m_pDlg_Record->ShowWindow(SW_HIDE); m_pDlg_Permit = new CDlg_Permit; m_pDlg_Permit->Create(IDD_DLG_PERMIT, this); m_pDlg_Permit->SetPos( rect ); m_pDlg_Permit->ShowWindow(SW_HIDE); m_pDlg_Moniter = new CDlg_Moniter; m_pDlg_Moniter->Create(IDD_DLG_MONITER, this); m_pDlg_Moniter->SetPos( rect ); m_pDlg_Moniter->ShowWindow(SW_HIDE); m_pDlg_Card = new CDlg_Card; m_pDlg_Card->Create(IDD_DLG_CARD, this); m_pDlg_Card->SetPos( rect ); m_pDlg_Card->ShowWindow(SW_HIDE); } void CDlg_Frame::HighAllDlg() { m_Btn_Moniter.m_nIsChoose = -1; m_Btn_Controller.m_nIsChoose = -1; m_Btn_Record.m_nIsChoose = -1; m_Btn_Permit.m_nIsChoose = -1; m_Btn_Card.m_nIsChoose = -1; m_pDlg_Controller->ShowWindow(SW_HIDE); m_pDlg_Record->ShowWindow(SW_HIDE); m_pDlg_Permit->ShowWindow(SW_HIDE); m_pDlg_Moniter->ShowWindow(SW_HIDE); m_pDlg_Card->ShowWindow(SW_HIDE); CRect rect; GetWindowRect(&rect); ScreenToClient(&rect); rect.bottom = 80; InvalidateRect(rect); } void CDlg_Frame::InitControllerRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pDlg_Controller->MoveWindow(&rc,TRUE); m_pDlg_Controller->ShowWindow(SW_SHOW); } void CDlg_Frame::InitRecordRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pDlg_Record->MoveWindow(&rc,TRUE); m_pDlg_Record->ShowWindow(SW_SHOW); } void CDlg_Frame::InitPermitRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pDlg_Permit->MoveWindow(&rc,TRUE); m_pDlg_Permit->ShowWindow(SW_SHOW); } void CDlg_Frame::InitMoniterRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pDlg_Moniter->MoveWindow(&rc,TRUE); m_pDlg_Moniter->ShowWindow(SW_SHOW); } void CDlg_Frame::InitCardRect() { HighAllDlg(); CRect rc(0,0,0,0); GetDlgItem(IDC_STATIC_RECT)->GetWindowRect( rc ); ScreenToClient( &rc ); m_pDlg_Card->MoveWindow(&rc,TRUE); m_pDlg_Card->ShowWindow(SW_SHOW); } void CDlg_Frame::SetPos() { CRect rMain; this->GetWindowRect( rMain ); ScreenToClient( &rMain ); CRect rect; int nBtnW=0,nBtnH=60; int nSpace=10; nBtnW = int( float(rMain.Width()-6*nSpace)/4 ); rect.left = nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_Moniter.MoveWindow( rect ); rect.left = rect.right+nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_Controller.MoveWindow( rect ); rect.left = rect.right+nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_Card.MoveWindow( rect ); //rect.left = rect.right+nSpace; //rect.right = rect.left+nBtnW; //rect.top = nSpace; //rect.bottom = rect.top+nBtnH; //m_Btn_Permit.MoveWindow( rect ); rect.left = rect.right+nSpace; rect.right = rect.left+nBtnW; rect.top = nSpace; rect.bottom = rect.top+nBtnH; m_Btn_Record.MoveWindow( rect ); rect.left = rMain.left + 10; rect.right = rMain.right - 10; rect.top = 90; rect.bottom = rMain.bottom - 10; GetDlgItem(IDC_STATIC_RECT)->MoveWindow( rect ); } HBRUSH CDlg_Frame::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何属性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔 return hbr; } BOOL CDlg_Frame::OnEraseBkgnd(CDC* pDC) { CBrush br1,br2; CRect rect, rect2; GetWindowRect(&rect); ScreenToClient(&rect); br1.CreateSolidBrush(g_Color1); br2.CreateSolidBrush(g_Color2); pDC->FillRect(rect,&br2); rect.bottom = 80; pDC->FillRect(rect,&br1); CRect rc; switch( m_nShowIndex ) { case 0: m_Btn_Moniter.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 10,10,5,10 ); pDC->FillRect(rc,&br2); break; case 1: m_Btn_Controller.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 5,10,5,10 ); pDC->FillRect(rc,&br2); break; case 2: m_Btn_Card.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 5,10,5,10 ); pDC->FillRect(rc,&br2); break; //case 3: // m_Btn_Permit.GetWindowRect( rc );ScreenToClient( &rc ); // rc.InflateRect( 5,10,5,10 ); // pDC->FillRect(rc,&br2); // break; case 3: m_Btn_Record.GetWindowRect( rc );ScreenToClient( &rc ); rc.InflateRect( 5,10,30,10 ); pDC->FillRect(rc,&br2); break; } DeleteObject( br1 ); DeleteObject( br2 ); return TRUE; //return CDialog::OnEraseBkgnd(pDC); } LRESULT CDlg_Frame::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: 在此添加专用代码和/或调用基类 switch( message ) { case WM_RECONNECT: { CString str = ( char *)wParam; for( int i=0;im_Controller.sName==str ) { if( m_pThread_Controller[i] ) { m_pThread_Controller[i]->StopThread(); delete m_pThread_Controller[i]; m_pThread_Controller[i] = NULL; } if( m_pThread_Controller[i]==NULL ) { m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] ); m_pThread_Controller[i]->StartThread(); } break; } /*else if( g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoor[2]==m_sCurrentDoorName ) { if( g_pDlgMain->m_pThread_Controller[i] ) { g_pDlgMain->m_pThread_Controller[i]->StopThread(); delete g_pDlgMain->m_pThread_Controller[i]; g_pDlgMain->m_pThread_Controller[i] = NULL; } if( g_pDlgMain->m_pThread_Controller[i]==NULL ) { g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] ); g_pDlgMain->m_pThread_Controller[i]->StartThread(); } break; } else if( g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoor[3]==m_sCurrentDoorName ) { if( g_pDlgMain->m_pThread_Controller[i] ) { g_pDlgMain->m_pThread_Controller[i]->StopThread(); delete g_pDlgMain->m_pThread_Controller[i]; g_pDlgMain->m_pThread_Controller[i] = NULL; } if( g_pDlgMain->m_pThread_Controller[i]==NULL ) { g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] ); g_pDlgMain->m_pThread_Controller[i]->StartThread(); } break; } else if( g_pDlgMain->m_pThread_Controller[i]->m_Controller.sDoor[4]==m_sCurrentDoorName ) { if( g_pDlgMain->m_pThread_Controller[i] ) { g_pDlgMain->m_pThread_Controller[i]->StopThread(); delete g_pDlgMain->m_pThread_Controller[i]; g_pDlgMain->m_pThread_Controller[i] = NULL; } if( g_pDlgMain->m_pThread_Controller[i]==NULL ) { g_pDlgMain->m_pThread_Controller[i] = new CThread_Controller( g_Controller[i] ); g_pDlgMain->m_pThread_Controller[i]->StartThread(); } break; }*/ } } } break; } return CDialog::WindowProc(message, wParam, lParam); } void CDlg_Frame::OnClose() { // TODO: 在此添加消息处理程序代码和/或调用默认值 CDialog::OnClose(); }