// Dlg_GroupManage.cpp : 实现文件 // #include "stdafx.h" #include "Dlg_GroupManage.h" #include "Dlg_AddGroup.h" // CDlg_GroupManage 对话框 IMPLEMENT_DYNAMIC(CDlg_GroupManage, CDialog) CDlg_GroupManage::CDlg_GroupManage(CWnd* pParent /*=NULL*/) : CDialog(CDlg_GroupManage::IDD, pParent) { m_hRoot = NULL; m_hCurretItem = NULL; m_bIsLookStatus = false; } CDlg_GroupManage::~CDlg_GroupManage() { } void CDlg_GroupManage::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_TREE_GROUP, m_wndTree); DDX_Control(pDX, IDC_LIST_SRC, m_ctrlListBoxSrc); DDX_Control(pDX, IDC_LIST_DEST, m_ctrlListBoxDest); DDX_Control(pDX, IDC_BTN_SEL_SINGLE, m_btnSetSingle); DDX_Control(pDX, IDC_BTN_SEL_ALL, m_btnSetAll); DDX_Control(pDX, IDC_BTN_REVERSE_SEL_SINGLE, m_btnDelSingle); DDX_Control(pDX, IDC_BTN_REVERSE_SEL_ALL, m_btnDelAll); DDX_Control(pDX, IDC_BTN_ADDGROUP, m_btnAddGroup); DDX_Control(pDX, IDC_BTN_DELGROUP, m_btnDelGroup); } BEGIN_MESSAGE_MAP(CDlg_GroupManage, CDialog) ON_BN_CLICKED(IDC_BTN_ADDGROUP, OnBnClickedBtnAddgroup) ON_BN_CLICKED(IDC_BTN_DELGROUP, OnBnClickedBtnDelgroup) ON_BN_CLICKED(IDC_BTN_SEL_SINGLE, OnBnClickedBtnSelSingle) ON_BN_CLICKED(IDC_BTN_SEL_ALL, OnBnClickedBtnSelAll) ON_BN_CLICKED(IDC_BTN_REVERSE_SEL_SINGLE, OnBnClickedBtnReverseSelSingle) ON_BN_CLICKED(IDC_BTN_REVERSE_SEL_ALL, OnBnClickedBtnReverseSelAll) ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_NOTIFY(NM_DBLCLK, IDC_TREE_GROUP, OnNMDblclkTreeGroup) END_MESSAGE_MAP() // CDlg_GroupManage 消息处理程序 BOOL CDlg_GroupManage::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 InitTreeInfo(); if( -1==PMS_VerifyUserPermit( g_nUserID,PMS_GROUP_INFO_ALLOC,"" ) ) { m_btnSetSingle.ShowWindow( false ); m_btnSetAll.ShowWindow( false ); m_btnDelSingle.ShowWindow( false ); m_btnDelAll.ShowWindow( false ); m_btnAddGroup.ShowWindow( false ); m_btnDelGroup.ShowWindow( false ); GetDlgItem(IDOK)->ShowWindow( false ); m_bIsLookStatus = true; } HTREEITEM hSelectedItem = m_wndTree.GetSelectedItem(); HTREEITEM hParent = m_wndTree.GetParentItem( hSelectedItem ); int nGroupID = 0; CString str="操作员"; CDBInterface::GetInstancePtr()->GetGroupIDByName( str,nGroupID ); m_sCurrentGroupName = str; CDBInterface::GetInstancePtr()->GetGroupPermitByID( &m_ctrlListBoxDest,nGroupID ); CDBInterface::GetInstancePtr()->GetGroupPermitByID( &m_ctrlListBoxSrc,&m_ctrlListBoxDest ); UpdateData( false ); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlg_GroupManage::InitTreeInfo(void) { m_wndTree.ModifyStyle(0, TVS_HASBUTTONS | TVS_LINESATROOT | TVS_HASLINES | TVS_DISABLEDRAGDROP | TVS_SHOWSELALWAYS); m_wndTree.DeleteAllItems(); m_wndTree.SetItemHeight(20); m_wndImageList.DeleteImageList(); m_wndImageList.Create(IDB_LEFT, 16, 1, RGB(255, 0, 255)); m_wndTree.SetImageList(&m_wndImageList, LVSIL_NORMAL); ////插入串口和设备 m_hRoot = m_wndTree.InsertItem(g_strGroup, 0, 0); CDBInterface::GetInstancePtr()->GetAllGroupToTree( &m_wndTree, m_hRoot ); //展开树 m_wndTree.Expand(m_wndTree.GetRootItem(),TVE_EXPAND); HTREEITEM handleTreeItem = m_wndTree.GetRootItem(); while(handleTreeItem) { handleTreeItem = m_wndTree.GetChildItem(handleTreeItem); m_wndTree.Expand(handleTreeItem, TVE_EXPAND); } } void CDlg_GroupManage::OnBnClickedBtnAddgroup() { CDlg_AddGroup dlg; if( dlg.DoModal()==IDOK ) { int nID = 0; CHAR szMaxID[MAX_ID] = {0}; CDBInterface::GetInstancePtr()->GetMaxID("t_user_group", "id", szMaxID); nID = atoi( szMaxID ); CDBInterface::GetInstancePtr()->AddGroup(nID+1, (char *)(LPCTSTR)dlg.m_sEdit_GroupName, ""); m_wndTree.InsertItem(dlg.m_sEdit_GroupName,5,5,m_hRoot); CString sContent; sContent.Format("%s %s< %s >",g_strAdd,g_strGroup,m_sCurrentGroupName ); CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_GROUP_ADD,0,"",(char *)(LPCTSTR)sContent ); } } void CDlg_GroupManage::OnBnClickedBtnDelgroup() { if( m_hCurretItem==NULL ) { MessageBox(g_strDClickFirstOperate, g_strTip, MB_ICONWARNING); return; } CString str; str.Format(g_strDelGroup,m_sCurrentGroupName ); if( MessageBox( str,g_strTip,MB_YESNO )==IDNO ) return; m_wndTree.DeleteItem( m_hCurretItem ); int nGroupID=0; CDBInterface::GetInstancePtr()->GetGroupIDByName( m_sCurrentGroupName,nGroupID ); CDBInterface::GetInstancePtr()->DelGroup( nGroupID ); int nCount=0; nCount = m_ctrlListBoxSrc.GetCount(); for( int i = 0; i < nCount; i++ ) m_ctrlListBoxSrc.DeleteString( i ); nCount = m_ctrlListBoxDest.GetCount(); for( int i = 0; i < nCount; i++ ) m_ctrlListBoxDest.DeleteString( i ); m_hCurretItem = NULL; CString sContent; sContent.Format("%s %s< %s >",g_strDel,g_strGroup,m_sCurrentGroupName ); CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_GROUP_DELETE,0,"",(char *)(LPCTSTR)sContent ); } void CDlg_GroupManage::OnBnClickedBtnSelSingle() { CString str; int nCount, i, nIndex = 0; CArray arrayListSel; nCount = m_ctrlListBoxSrc.GetSelCount(); arrayListSel.SetSize( nCount ); m_ctrlListBoxSrc.GetSelItems( nCount, arrayListSel.GetData() ); for( i = 0; i < nCount; i++ ) { m_ctrlListBoxSrc.GetText( arrayListSel[i] - nIndex, str ); m_ctrlListBoxSrc.DeleteString( arrayListSel[i] - nIndex ); m_ctrlListBoxSrc.SetSel( arrayListSel[i] - nIndex, FALSE ); m_ctrlListBoxDest.AddString( str ); nIndex++; } } void CDlg_GroupManage::OnBnClickedBtnSelAll() { CString str; int i, nCount, nIndex = 0; nCount = m_ctrlListBoxSrc.GetCount(); for( i = 0; i < nCount; i++ ) { m_ctrlListBoxSrc.GetText( i - nIndex, str ); m_ctrlListBoxSrc.DeleteString( i - nIndex ); m_ctrlListBoxDest.AddString( str ); nIndex++; } } void CDlg_GroupManage::OnBnClickedBtnReverseSelSingle() { CString str; int nCount, i, nIndex = 0; CArray arrayListSel; nCount = m_ctrlListBoxDest.GetSelCount(); arrayListSel.SetSize( nCount ); m_ctrlListBoxDest.GetSelItems( nCount, arrayListSel.GetData() ); for( i = 0; i < nCount; i++ ) { m_ctrlListBoxDest.GetText( arrayListSel[i] - nIndex, str ); m_ctrlListBoxDest.DeleteString( arrayListSel[i] - nIndex ); m_ctrlListBoxDest.SetSel( arrayListSel[i] - nIndex, FALSE ); m_ctrlListBoxSrc.AddString( str ); nIndex++; } } void CDlg_GroupManage::OnBnClickedBtnReverseSelAll() { CString str; int i, nCount, nIndex = 0; nCount = m_ctrlListBoxDest.GetCount(); for( i = 0; i < nCount; i++ ) { m_ctrlListBoxDest.GetText( i - nIndex, str ); m_ctrlListBoxDest.DeleteString( i - nIndex ); m_ctrlListBoxSrc.AddString( str ); nIndex++; } } void CDlg_GroupManage::OnBnClickedOk() { CString sGroupPermit; CString str; if( !m_bIsLookStatus ) { int nID=0; int nCount = m_ctrlListBoxDest.GetCount(); for( int i = 0; i < nCount; i++ ) { m_ctrlListBoxDest.GetText( i, str ); CDBInterface::GetInstancePtr()->GetPermitIDByName( str,nID ); str.Format("%d-",nID ); sGroupPermit += str; } sGroupPermit = sGroupPermit.Left( sGroupPermit.GetLength()-1 ); CDBInterface::GetInstancePtr()->ModifyGroup( m_sCurrentGroupName,sGroupPermit ); CString sContent; sContent.Format("%s %s< %s >",g_strEdit,g_strGroup,m_sCurrentGroupName ); CDBInterface::GetInstancePtr()->InsertLogRecord( LOG_GROUP_EDIT,0,"",(char *)(LPCTSTR)sContent ); } OnOK(); } void CDlg_GroupManage::OnNMDblclkTreeGroup(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 HTREEITEM hSelectedItem = m_wndTree.GetSelectedItem(); HTREEITEM hParent = m_wndTree.GetParentItem( hSelectedItem ); int nGroupID = 0; CString str; if( hParent && m_hCurretItem!=hSelectedItem ) { str = m_wndTree.GetItemText( hSelectedItem ); CDBInterface::GetInstancePtr()->GetGroupIDByName( str,nGroupID ); m_sCurrentGroupName = str; m_hCurretItem = hSelectedItem; CDBInterface::GetInstancePtr()->GetGroupPermitByID( &m_ctrlListBoxDest,nGroupID ); CDBInterface::GetInstancePtr()->GetGroupPermitByID( &m_ctrlListBoxSrc,&m_ctrlListBoxDest ); } *pResult = 0; }