123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599 |
- // 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;i<CONCTROLLER_NUM_MAX;i++ )
- {
- g_Controller[i].nID = -1;
- g_Controller[i].nWordMode = WORDMODE_485;
- g_Controller[i].nOperterType = OPERATE_Moniter;
- g_Controller[i].SEventBagId = 0;
- g_Controller[i].SEventCount = 0;
- for( int m=1;m<9;m++ )
- g_Controller[i].Card2Door[m].nCardCount = 0;
-
- m_pThread_Controller[i] = NULL;
- }
- for( int i=0;i<CARD_NUM_MAX;i++ )
- {
- g_Card[i].nID = -1;
- }
- for( int i=0;i<COM_NUM_MAX;i++ )
- {
- g_COM[i].nStatus = 0;
- g_COM[i].sPortName.Format("COM%d",i+1);
- }
- m_nShowIndex = -1;
- g_nControllerOpenCount = 0;
- g_bIsInsertReconnectInfo = true;
- m_pDlgZK = NULL;
- }
- CDlg_Frame::~CDlg_Frame()
- {
- //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;
- //ADOCtrl.ADOClose();
- }
- void CDlg_Frame::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_BTN_MONITER, m_Btn_Moniter);
- DDX_Control(pDX, IDC_BTN_CONTROLLER, m_Btn_Controller);
- DDX_Control(pDX, IDC_BTN_RECORD, m_Btn_Record);
- DDX_Control(pDX, IDC_BTN_LIMITS, m_Btn_Permit);
- DDX_Control(pDX, IDC_BTN_CARD, m_Btn_Card);
- }
- BEGIN_MESSAGE_MAP(CDlg_Frame, CDialog)
- ON_BN_CLICKED(IDC_BTN_MONITER, OnBnClickedBtnMoniter)
- ON_BN_CLICKED(IDC_BTN_CONTROLLER, OnBnClickedBtnController)
- ON_BN_CLICKED(IDC_BTN_RECORD, OnBnClickedBtnRecord)
- ON_BN_CLICKED(IDC_BTN_LIMITS, OnBnClickedBtnLimits)
- ON_BN_CLICKED(IDC_BTN_CARD, OnBnClickedBtnCard)
- ON_WM_CTLCOLOR()
- ON_WM_ERASEBKGND()
- ON_WM_CLOSE()
- END_MESSAGE_MAP()
- void CDlg_Frame::Resoure()
- {
- for( int i=0;i<CONCTROLLER_NUM_MAX;i++ )
- {
- if( m_pThread_Controller[i] )
- {
- m_pThread_Controller[i]->StopThread();
- 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<CONCTROLLER_NUM_MAX;i++ )
- {
- if( g_Controller[i].nID>=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;i<CONCTROLLER_NUM_MAX;i++ )
- {
- if( m_pThread_Controller[i] )
- {
- if( m_pThread_Controller[i]->m_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();
- }
|