IMPL_LUA_FUNC(LuaCTreeNodeUI, IsHasChild) { try { CTreeNodeUI* self; self = static_cast<CTreeNodeUI*>(LuaStatic::CheckUserData(l, 1)); lua_pushboolean(l,self->IsHasChild() ? 1: 0); return 1; } catch (...) { DuiException(_T("LuaCTreeNodeUI::IsHasChild")); return 0; } }
//************************************ // 函数名称: RemoveAt // 返回类型: bool // 参数信息: CTreeNodeUI * _pTreeNodeUI // 函数说明: //************************************ bool CTreeNodeUI::RemoveAt( CTreeNodeUI* _pTreeNodeUI ) { int nIndex = mTreeNodes.Find(_pTreeNodeUI); CTreeNodeUI* pNode = static_cast<CTreeNodeUI*>(mTreeNodes.GetAt(nIndex)); if(pNode && pNode == _pTreeNodeUI) { while(pNode->IsHasChild()) pNode->RemoveAt(static_cast<CTreeNodeUI*>(pNode->mTreeNodes.GetAt(0))); mTreeNodes.Remove(nIndex); if(pTreeView) pTreeView->Remove(_pTreeNodeUI); return true; } return false; }
//************************************ // 函数名称: GetLastNode // 返回类型: CTreeNodeUI* // 函数说明: //************************************ CTreeNodeUI* CTreeNodeUI::GetLastNode( ) { if(!IsHasChild()) return this; CTreeNodeUI* nRetNode = NULL; for(int nIndex = 0;nIndex < GetTreeNodes().GetSize();nIndex++){ CTreeNodeUI* pNode = static_cast<CTreeNodeUI*>(GetTreeNodes().GetAt(nIndex)); if(!pNode) continue; CDuiString aa = pNode->GetItemText(); if(pNode->IsHasChild()) nRetNode = pNode->GetLastNode(); else nRetNode = pNode; } return nRetNode; }
void MainDialog::Notify(TNotifyUI& msg) { if( msg.sType == _T("windowinit") ) OnPrepare(msg); else if( msg.sType == _T("click") ) { if( msg.pSender == m_pCloseBtn ) { PostQuitMessage(0); return; } else if( msg.pSender == m_pMinBtn ) { SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, 0); return; } else if( msg.pSender == m_pMaxBtn ) { SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, 0); return; } else if( msg.pSender == m_pRestoreBtn ) { SendMessage(WM_SYSCOMMAND, SC_RESTORE, 0); return; } else if (msg.pSender->GetName() == _T("upload")) { } else if (msg.pSender == m_pClose) { } } else if(msg.sType==_T("setfocus")) { } else if( msg.sType == _T("itemexpand") ) { CTreeNodeUI* pNowNode = static_cast<CTreeNodeUI*>(msg.pSender); pNowNode->Select(true); CTreeViewUI* pTree = static_cast<CTreeViewUI*>(m_pm.FindControl(_T("tree"))); CListUI* pList = static_cast<CListUI*>(m_pm.FindControl(_T("file_list"))); g_bUpdateDir = false; if (!pNowNode->IsHasChild()) { g_bUpdateDir = true; } pList->RemoveAll(); WIN32_FIND_DATA FindFileData; HANDLE hListFile; TCHAR szFilePath[MAX_PATH]; lstrcpy(szFilePath,pNowNode->GetUserData()); lstrcat(szFilePath, _T("\\*")); hListFile = FindFirstFile(szFilePath,&FindFileData); if(hListFile==INVALID_HANDLE_VALUE) { return; } else { do { if(lstrcmp(FindFileData.cFileName,TEXT("."))==0|| lstrcmp(FindFileData.cFileName,TEXT(".."))==0) { continue; } SYSTEMTIME st; FileTimeToSystemTime(&FindFileData.ftLastWriteTime,&st); DWORDLONG dwlSize = (DWORDLONG)(FindFileData.nFileSizeHigh * (MAXDWORD+1)) + FindFileData.nFileSizeLow; DWORD dwSize = (DWORD)(dwlSize / 1024); if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if (g_bUpdateDir) { CTreeNodeUI* pNode = new CTreeNodeUI; pNode->SetAttribute(_T("folderattr"),_T("padding=\"0,1,0,0\" width=\"36\" height=\"16\" normalimage=\"file='treeview_b.png' source='0,0,36,16'\" hotimage=\"file='treeview_b.png' source='36,0,72,16'\" selectedimage=\"file='treeview_a.png' source='0,0,36,16' selectedhotimage=\"file='treeview_a.png' source='36,0,72,16'\"")); pNowNode->AddChildNode(pNode); pNode->SetItemText(FindFileData.cFileName); CDuiString szUserData = pNowNode->GetUserData() + _T("\\") + pNode->GetItemText(); pNode->SetUserData(szUserData); } } else { CListTextElementUI* pLine = new CListTextElementUI; pList->Add(pLine); CDuiString szNewName(FindFileData.cFileName); int pos = szNewName.ReverseFind('.'); CDuiString szExt = szNewName.Right(szNewName.GetLength() - pos); SHFILEINFO shfi; memset(&shfi,0,sizeof(shfi)); SHGetFileInfo(szExt, FILE_ATTRIBUTE_NORMAL, &shfi, sizeof(shfi), SHGFI_ICON|SHGFI_USEFILEATTRIBUTES); pLine->SetIcon(0,shfi.hIcon); pLine->SetText(0,szNewName); SYSTEMTIME st; FileTimeToSystemTime(&FindFileData.ftLastWriteTime,&st); CDuiString szTime; szTime.Format(_T("%04d/%02d/%02d %02d:%02d:%02d"), st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); pLine->SetText(1,szTime); DWORDLONG dwlSize = (DWORDLONG)(FindFileData.nFileSizeHigh * (MAXDWORD+1)) + FindFileData.nFileSizeLow; CDuiString szSize; if (dwlSize <1024) { szSize.Format(_T("%ldB"),dwlSize); } else { szSize.Format(_T("%ldK"),dwlSize/1024); } pLine->SetText(2,szSize); CDuiString szArrtib; szArrtib.Format(_T("%d"),FindFileData.dwFileAttributes); pLine->SetText(3,szArrtib); } } while(FindNextFile(hListFile, &FindFileData)); } } }