// Dlg_EditView.cpp : 实现文件 // #include "stdafx.h" #include "Dlg_EditView.h" #include ".\dlg_editview.h" #include #include "shlwapi.h" #define FILE_NAME "sort.txt" // CDlg_EditView 对话框 IMPLEMENT_DYNAMIC(CDlg_EditView, CDialog) CDlg_EditView::CDlg_EditView(CWnd* pParent /*=NULL*/) : CDialog(CDlg_EditView::IDD, pParent) { } CDlg_EditView::~CDlg_EditView() { } void CDlg_EditView::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_ListView); } BEGIN_MESSAGE_MAP(CDlg_EditView, CDialog) ON_BN_CLICKED(IDC_BTN_DEL, OnBnClickedBtnDel) ON_BN_CLICKED(IDC_BTN_UP, OnBnClickedBtnUp) ON_BN_CLICKED(IDC_BTN_DOWN, OnBnClickedBtnDown) ON_BN_CLICKED(IDC_BTN_ALLSHOW, OnBnClickedBtnAllShow) ON_BN_CLICKED(IDC_BTN_ALLHIDE, OnBnClickedBtnAllHide) ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel) ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnNMDblclkList1) END_MESSAGE_MAP() // CDlg_EditView 消息处理程序 BOOL CDlg_EditView::OnInitDialog() { CDialog::OnInitDialog(); // TODO: 在此添加额外的初始化 m_ListView.InsertColumn(0, "画面名称"); m_ListView.SetColumnWidth(0, 1000); m_ListView.SetExtendedStyle(m_ListView.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); //////////////////// char szPicDir[MAX_PATH] = {0}; strcpy(szPicDir, g_strDirectory); strcat(szPicDir, "\\"); strcat(szPicDir, _PICTUREDIR); m_sPath.Format( "%s",szPicDir ); ReadALlView(); //CButtonST m_btnDel,m_btnUp,m_btnDown,m_btnShow,m_btnHide,m_btnSave,m_btnExit; m_btnShow.SubclassDlgItem(IDC_BTN_ALLSHOW, this); m_btnShow.SetBitmaps(IDB_EDIT, RGB(255, 0, 255)); m_btnShow.SetFlat(FALSE); m_btnShow.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnHide.SubclassDlgItem(IDC_BTN_ALLHIDE, this); m_btnHide.SetBitmaps(IDB_COPY , RGB(192, 192, 192)); m_btnHide.SetFlat(FALSE); m_btnHide.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnSave.SubclassDlgItem(IDOK, this); m_btnSave.SetBitmaps(IDB_SAVE, RGB(255,0 , 255)); m_btnSave.SetFlat(FALSE); m_btnSave.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnDel.SubclassDlgItem(IDC_BTN_DEL, this); m_btnDel.SetBitmaps(IDB_DEL, RGB(255,0 , 255)); m_btnDel.SetFlat(FALSE); m_btnDel.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnExit.SubclassDlgItem(IDCANCEL, this); m_btnExit.SetBitmaps(IDB_EXIT, RGB(192, 192, 192)); m_btnExit.SetFlat(FALSE); m_btnExit.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnUp.SubclassDlgItem(IDC_BTN_UP, this); m_btnUp.SetIcon(IDI_ICON_UP); m_btnUp.SetFlat(FALSE); m_btnUp.SetAlign(CButtonST::ST_ALIGN_HORIZ); m_btnDown.SubclassDlgItem(IDC_BTN_DOWN, this); m_btnDown.SetIcon(IDI_ICON_DOWN); m_btnDown.SetFlat(FALSE); m_btnDown.SetAlign(CButtonST::ST_ALIGN_HORIZ); return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE } void CDlg_EditView::OnBnClickedBtnDel() { m_ListView.SetFocus(); int iListCount = m_ListView.GetItemCount(); POSITION pos = m_ListView.GetFirstSelectedItemPosition(); int nListSel = m_ListView.GetNextSelectedItem(pos); if(nListSel>=iListCount || nListSel==-1 ) { return; } m_ListView.DeleteItem( nListSel ); } void CDlg_EditView::OnBnClickedBtnUp() { m_ListView.SetFocus(); int iListCount = m_ListView.GetItemCount(); POSITION pos = m_ListView.GetFirstSelectedItemPosition(); int nListSel = m_ListView.GetNextSelectedItem(pos); if(nListSel>=iListCount || nListSel==-1 || nListSel==0 ) { return; } CString str1,str2,s1,s2; str1 = m_ListView.GetItemText( nListSel,0 ); str2 = m_ListView.GetItemText( nListSel-1,0 ); m_ListView.SetItemText( nListSel,0,str2 ); m_ListView.SetItemText( nListSel-1,0,str1 ); m_ListView.SetItemState( nListSel,0,LVIS_SELECTED|LVIS_FOCUSED ); m_ListView.SetItemState( nListSel-1,LVIS_SELECTED, LVIS_SELECTED|LVIS_FOCUSED ); } void CDlg_EditView::OnBnClickedBtnDown() { m_ListView.SetFocus(); int iListCount = m_ListView.GetItemCount(); POSITION pos = m_ListView.GetFirstSelectedItemPosition(); int nListSel = m_ListView.GetNextSelectedItem(pos); if(nListSel>=iListCount-1 || nListSel==-1 ) { return; } CString str1,str2,s; str1 = m_ListView.GetItemText( nListSel,0 ); str2 = m_ListView.GetItemText( nListSel+1,0 ); m_ListView.SetItemText( nListSel,0,str2 ); m_ListView.SetItemText( nListSel+1,0,str1 ); m_ListView.SetItemState(nListSel,0,LVIS_SELECTED|LVIS_FOCUSED); m_ListView.SetItemState( nListSel+1,LVIS_SELECTED, LVIS_SELECTED|LVIS_FOCUSED ); } void CDlg_EditView::OnBnClickedBtnAllShow() { m_ListView.SetFocus(); ShowAll(); } void CDlg_EditView::OnBnClickedBtnAllHide() { m_ListView.SetFocus(); HideAll(); } void CDlg_EditView::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 ShowAll(); char szPicDir[MAX_PATH] = {0}; strcpy(szPicDir, g_strDirectory); strcat(szPicDir, "\\"); strcat(szPicDir, _PICTUREDIR); strcat(szPicDir, FILE_NAME); if( PathFileExists( szPicDir ) ) DeleteFile( szPicDir ); if( m_ListView.GetItemCount()==0 ) return; CString strTemp; CStdioFile MyFile; MyFile.Open(szPicDir,CFile::modeCreate|CFile::modeWrite); for( int i=0;i=0;i-- ) { str1 = m_ListView.GetItemText( i,0 ); bool bExist = false; for( int m=0;m=0;i-- ) { str = m_ListView.GetItemText( i,0 ); if( str.Find( s1 )==0 ) { nInsert = i+1; break; } } m_ListView.InsertItem( nInsert,sContent ); } } int CDlg_EditView::GetLevel( CString sContent ) { int nRet=0; for( int i=0;i=0;i-- ) { if( sContent[i]=='\\' ) { sRet = sContent.Left( i ); break; } } return sRet; } void CDlg_EditView::ShowAll() { int nSize = m_ListView.GetItemCount(); CString str; for( int i=0;i=0;i-- ) { str = m_ListView.GetItemText( i,0 ); HideOne( "",str,i ); } } void CDlg_EditView::ShowOne( CString sParent,CString sContent,int &iListIndex ) {//A[\a[\1\2]\b[\1\2]] A[\a\b] A[\a\b[\1\2]] int nInsertLastIndex=iListIndex; bool bFirst = true; CString sData,s1,s2; int nStart=-1,nEnd=-1; nStart = sContent.Find("["); if( nStart==-1 ) return; CString str; str = sContent.Left( nStart ); sData = sContent.Mid( nStart+1,sContent.GetLength()-nStart-2 ); //\a[\1\2]\b[\1\2] \a\b \a\b[\1\2] int nPos1=-1,nPos2=-1; nPos1 = sData.Find( "\\",0 ); bool bOK=false; int nLastStatus=0;//0:\ 1:[ 2:] for( int i=1;iiListIndex;i-- ) { m_ListView.DeleteItem( i ); } } } void CDlg_EditView::OnNMDblclkList1(NMHDR *pNMHDR, LRESULT *pResult) { int iListCount = m_ListView.GetItemCount(); POSITION pos = m_ListView.GetFirstSelectedItemPosition(); int nListSel = m_ListView.GetNextSelectedItem(pos); if(nListSel>=iListCount || nListSel==-1) { return; } CString sDesc; sDesc = m_ListView.GetItemText( nListSel,0 ); if( sDesc.Find("[")==-1 ) { HideOne( "",sDesc,nListSel ); } else { ShowOne( "",sDesc,nListSel ); } *pResult = 0; }