int main() { int a[] = { -1,-7,-59,-12,15, 33 ,8,9,-999 }; #define len (sizeof(a)/sizeof(int)) int b[len] ; memcpy(b, a, sizeof(a)); printf("排序前: "); Print(a, len); printf("\n"); ReSort(a, len); ReSort_1(b, len); printf("\n第一种排序后: "); Print(a,len); printf("\n第二种排序后: "); Print(b, len); char str[] = "ab**c*d*ed2"; printf("\n\n调整前:%s\n", str); change(str); printf("调整后:%s\n",str); #if defined(_WIN) return system("pause"); #else return 0; #endif }
LRESULT CClientListCtrl::OnP4ClientList(WPARAM wParam, LPARAM lParam) { CCmd_Clients *pCmd= (CCmd_Clients *) wParam; if(!pCmd->GetError()) { CString msg; CObList const *clients= pCmd->GetList(); int count = clients->GetCount(); SetRedraw(FALSE); int index = 0; CString curclient = GET_P4REGPTR()->GetP4Client(); CString defclient = GET_P4REGPTR()->GetP4Client(TRUE); CString user = GET_P4REGPTR()->GetP4User(); for(int subItem=0; subItem < CLIENT_MAXCOL; subItem++) m_ListAll.column[subItem].SetSize(clients->GetCount(), 100); for(POSITION pos= clients->GetHeadPosition(); pos != NULL; index++) { CP4Client *client=(CP4Client *) clients->GetNext(pos); InsertClient(client, index, &curclient, &defclient, &user); if ((index & 0x1FFF) == 0) { msg.FormatMessage(IDS_INSERTING_CLIENTS, count - index); MainFrame()->UpdateStatus(msg); } } SetRedraw(TRUE); msg.FormatMessage( IDS_NUMBER_OF_CLIENTS_n, index ); AddToStatus( msg, SV_COMPLETION ); ReSort(); // Make sure previous item is re-selected if(clients->GetCount() > 0) { int i = FindInList(m_Active.IsEmpty() ? GET_P4REGPTR()->GetP4Client() : m_Active); if (i < 0) i=0; SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); EnsureVisible(i, FALSE); } CP4ListCtrl::SetUpdateDone(); // Notify the mainframe that we have finished getting the clients, // hence the entire set of async command have finished. MainFrame()->ExpandDepotIfNeedBe(); if (m_PostViewUpdateMsg) PostMessage(m_PostViewUpdateMsg, m_PostViewUpdateWParam, m_PostViewUpdateLParam); } else CP4ListCtrl::SetUpdateFailed(); delete pCmd; m_PostViewUpdateMsg = 0; MainFrame()->ClearStatus(); return 0; }
LRESULT CUserListCtrl::OnP4UserList(WPARAM wParam, LPARAM lParam) { CCmd_Users *pCmd= (CCmd_Users *) wParam; if(!pCmd->GetError()) { CObList const *users = pCmd->GetList(); SetRedraw(FALSE); int index = 0; for(POSITION pos= users->GetHeadPosition(); pos != NULL; index++) { CP4User *user = (CP4User *) users->GetNext(pos); InsertUser(user, index); } SetRedraw(TRUE); CString msg; msg.FormatMessage( IDS_NUMBER_OF_USERS_n, index ); AddToStatus( msg, SV_COMPLETION ); ReSort(); // Make sure previous item is re-selected if(users->GetCount() > 0) { int i = FindInList(m_Active.IsEmpty() ? GET_P4REGPTR()->GetP4User() : m_Active); if (i < 0) i=0; SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); EnsureVisible(i, FALSE); // If m_Active is empty but we found the current user in the list, // then set m_Active to the correct value if (m_Active.IsEmpty() && i >= 0) m_Active = GET_P4REGPTR()->GetP4User(); } CP4ListCtrl::SetUpdateDone(); // Notify the mainframe that we have finished getting the users, // hence the entire set of async command have finished. MainFrame()->ExpandDepotIfNeedBe(); if (m_PostViewUpdateMsg) PostMessage(m_PostViewUpdateMsg, m_PostViewUpdateWParam, m_PostViewUpdateLParam); } else CP4ListCtrl::SetUpdateFailed(); delete pCmd; m_PostViewUpdateMsg = 0; MainFrame()->ClearStatus(); return 0; }
void CClientListCtrl::OnNewClient(WPARAM wParam, LPARAM lParam) { if (!IsClear()) { CString oldclient = wParam ? m_OldDefClient : m_OldCurClient; CString newclient = GET_P4REGPTR()->GetP4Client((BOOL)wParam); CString curclient = GET_P4REGPTR()->GetP4Client(); CString defclient = GET_P4REGPTR()->GetP4Client(TRUE); LV_ITEM lvItem; lvItem.mask = LVIF_IMAGE; lvItem.iSubItem = 0; lvItem.state = lvItem.stateMask = 0; lvItem.iItem = FindInList(oldclient); if(lvItem.iItem > -1) { lvItem.iImage = CP4ViewImageList::GetClientIndex(false, oldclient == defclient); SetItem(&lvItem ); } lvItem.iItem = FindInList(newclient); if(lvItem.iItem > -1) { lvItem.iImage = CP4ViewImageList::GetClientIndex(true, newclient == defclient); SetItem(&lvItem ); } else if (GET_P4REGPTR()->GetClientFilteredFlags()) { int index = FindInListAll(newclient); if (index > -1) { CP4Client * client = new CP4Client; client->Create(m_ListAll.column[CLIENT_NAME].GetAt(index), m_ListAll.column[CLIENT_OWNER].GetAt(index), m_ListAll.column[CLIENT_HOST].GetAt(index), m_ListAll.column[CLIENT_ACCESSDATE].GetAt(index), m_ListAll.column[CLIENT_ROOT].GetAt(index), m_ListAll.column[CLIENT_DESC].GetAt(index)); m_ListAll.column[0].SetAt(index, _T("@@")); // Removes from list of all clients InsertClient(client, GetItemCount(), &curclient, &defclient); ReSort(); } } if (wParam) m_OldDefClient = newclient; else m_OldCurClient = newclient; } }
LRESULT CLabelListCtrl::OnP4EndSpecEdit( WPARAM wParam, LPARAM lParam ) { CCmd_EditSpec *pCmd= (CCmd_EditSpec *) wParam; int index; if (lParam != IDCANCEL && lParam != IDABORT) { if (m_UpdateState == LIST_UPDATED) { if(m_NewLabel && FindInList(m_pNewSpec->GetLabelName()) == -1) { InsertLabel(m_pNewSpec, GetItemCount()); ReSort(); index= FindInList(m_pNewSpec->GetLabelName()); } else { index= FindInList(m_pNewSpec->GetLabelName()); UpdateLabel(m_pNewSpec, index); } EnsureVisible(index, TRUE ); SetItemState(index, LVIS_SELECTED|LVIS_FOCUSED, LVIS_DROPHILITED|LVIS_SELECTED|LVIS_FOCUSED ); } else if ( m_pNewSpec ) delete m_pNewSpec; } else if ( m_pNewSpec ) delete m_pNewSpec; if (lParam != IDABORT) { MainFrame()->ClearStatus(); if (pCmd->HaveServerLock()) pCmd->ReleaseServerLock(); CDialog *dlg = (CDialog *)pCmd->GetSpecSheet(); dlg->DestroyWindow(); } delete pCmd; m_EditInProgress = FALSE; return 0; }
void C_EnvLightProjectedManager::AddLight(C_EnvLightProjected *light) { m_lights.AddToHead(light); ReSort(); }
LRESULT CLabelListCtrl::OnP4LabelList(WPARAM wParam, LPARAM lParam) { CCmd_Labels *pCmd= (CCmd_Labels *) wParam; m_AnyBlankOwner = FALSE; if(!pCmd->GetError()) { CString msg; CString filterowner; CObList const *labels = pCmd->GetList(); int count = labels->GetCount(); SetRedraw(FALSE); int index = 0; if (m_FilterOwnerFlag) // are we filtering by owner? filterowner = m_FilterOwnerFlag & 0x10 ? m_User : m_FilterOwner; for(POSITION pos= labels->GetHeadPosition(); pos != NULL; index++) { CP4Label *label = (CP4Label *) labels->GetNext(pos); CString owner = label->GetOwner(); if (owner.IsEmpty()) m_AnyBlankOwner = TRUE; if (m_FilterOwnerFlag) // are we filtering by owner? { if (owner.IsEmpty() && m_FilterIncBlank) ; else if (filterowner != owner) { delete label; continue; } } InsertLabel(label, index); if ((index & 0x1FFF) == 0) { msg.FormatMessage(IDS_INSERTING_LABELS, count - index); MainFrame()->UpdateStatus(msg); } } SetRedraw(TRUE); msg.FormatMessage(IDS_NUMBER_OF_LABELS_n, index ); AddToStatus( msg, SV_COMPLETION ); // Make sure first item selected ReSort(); if(labels->GetCount() > 0) { int i = FindInList(m_Active.IsEmpty() ? GET_P4REGPTR()->GetLastLabel() : m_Active); if (i < 0) i=0; SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_DROPHILITED|LVIS_SELECTED|LVIS_FOCUSED); EnsureVisible(i, FALSE); m_Active=GetSelectedItemText(); } CP4ListCtrl::SetUpdateDone(); if (m_Need2DoNew) OnLabelNew(); else { // Notify the mainframe that we have finished getting the labels, // hence the entire set of async command have finished. MainFrame()->ExpandDepotIfNeedBe(); } if (m_PostViewUpdateMsg) PostMessage(m_PostViewUpdateMsg, m_PostViewUpdateWParam, m_PostViewUpdateLParam); } else { CP4ListCtrl::SetUpdateFailed(); m_Need2DoNew = FALSE; } delete pCmd; m_PostViewUpdateMsg = 0; MainFrame()->ClearStatus(); return 0; }
LRESULT CUserListCtrl::OnP4EndSpecEdit( WPARAM wParam, LPARAM lParam ) { CCmd_EditSpec *pCmd= (CCmd_EditSpec *) wParam; int i, j; if (lParam != IDCANCEL && lParam != IDABORT) { if (m_UpdateState == LIST_UPDATED) { // we have to set 'index' again in case user's name got changed int index = FindInList(m_pNewSpec->GetUserName()); if(index > -1 ) UpdateUser(m_pNewSpec, index); else { InsertUser(m_pNewSpec, GetItemCount()); ReSort(); if( m_Active != m_olduser ) { if (GET_P4REGPTR()->GetExpandFlag() == 1) GET_P4REGPTR()->AddMRUPcuPath(MainFrame()->GetCurrentItemPath()); m_Active = m_olduser; GET_P4REGPTR()->SetP4User( m_olduser, TRUE, FALSE, FALSE ); MainFrame()->UpdateCaption( ) ; } } } else if ( m_pNewSpec ) delete m_pNewSpec; CString specOut(pCmd->GetSpecOut()); if ((i = specOut.Find(_T("\n\nJobView:\t"))) != -1) { i += lstrlen(_T("\n\nJobView:\n")); if ((j = specOut.Find(_T('\n'),i)) != -1) { // if JobView has changed, we have to refresh the changelists (and depot) if (m_oldJobView != specOut.Mid(i, j-i)) MainFrame()->UpdateDepotandChangeViews(TRUE); } } } else if ( m_pNewSpec ) delete m_pNewSpec; if (lParam != IDABORT) { MainFrame()->ClearStatus(); if (pCmd->HaveServerLock()) pCmd->ReleaseServerLock(); CDialog *dlg = (CDialog *)pCmd->GetSpecSheet(); dlg->DestroyWindow(); } if ((lParam == IDCANCEL) && pCmd->GetIsNewUser()) // if canceled, cleanup newly created user { m_Active = pCmd->GetItemName(); CString msg; msg.FormatMessage ( IDS_DELETENEWUSER_s, m_Active ); // ask if they want to delete the newly created user if( AfxMessageBox( msg, MB_YESNO|MB_ICONQUESTION ) == IDYES) { // fire off the delete of the newly created user CCmd_Delete *pCmdDel = new CCmd_Delete; pCmdDel->Init( m_hWnd, RUN_ASYNC ); pCmdDel->SetSwitch2User( m_olduser ); if( pCmdDel->Run( P4USER_DEL, m_Active ) ) MainFrame()->UpdateStatus( LoadStringResource(IDS_DELETING) ); else delete pCmdDel; } else { OnViewUpdate(); } } delete pCmd; m_EditInProgress = FALSE; return 0; }
LRESULT CClientListCtrl::OnP4EndSpecEdit( WPARAM wParam, LPARAM lParam ) { CCmd_EditSpec *pCmd= (CCmd_EditSpec *) wParam; BOOL chainedCommand = FALSE; BOOL need2Refresh = FALSE; if (lParam != IDCANCEL && lParam != IDABORT) { // Get the Sync flag int syncAfter = SYNC_DONT; BOOL bHasChgs = TRUE; if (m_PrevNbrCli < 1) { int key= pCmd->HaveServerLock() ? pCmd->GetServerKey() : 0; CCmd_Changes *pCmd2= new CCmd_Changes; pCmd2->Init( m_hWnd, RUN_SYNC, key ? HOLD_LOCK : LOSE_LOCK, key); if( pCmd2->Run(SUBMITTED_CHANGES, FALSE, NULL, 1) ) { if (!pCmd2->GetChanges()->GetCount()) bHasChgs = FALSE; } delete pCmd2; } if (m_isNew && !GET_P4REGPTR()->DontShowYouHaveCr8NewClient() && bHasChgs) { BOOL b; switch(MsgBox(IDS_YOU_HAVE_CREATED_NEW_CLIENT, MB_ICONEXCLAMATION | MB_DEFBUTTON1, 0, this, &b)) { case IDC_BUTTON1: syncAfter = SYNC_HEAD; break; case IDC_BUTTON2: syncAfter = SYNC_DONT; break; } GET_P4REGPTR()->SetDontShowYouHaveCr8NewClient(b); } else if ((pCmd->IsSyncAfter() || pCmd->IsAutoUpdateSpec()) && !GET_P4REGPTR()->DontShowYouHaveChgClientView() && bHasChgs) { BOOL b; switch(MsgBox(pCmd->IsAutoUpdateSpec() ? IDS_DOYOUWANTOTSYNCYOURNEWCLIENT : IDS_YOU_HAVE_CHANGED_CLIENTS_VIEW, MB_ICONQUESTION | MB_DEFBUTTON1, 0, this, pCmd->IsAutoUpdateSpec() ? NULL : &b)) { case IDC_BUTTON1: syncAfter = SYNC_HEAD; break; case IDC_BUTTON2: syncAfter = pCmd->IsAutoUpdateSpec() ? SYNC_DONT : SYNC_HAVE; break; case IDC_BUTTON3: syncAfter = SYNC_DONT; break; } if (!pCmd->IsAutoUpdateSpec()) GET_P4REGPTR()->SetDontShowYouHaveChgClientView(b); } BOOL bDeld = FALSE; if (m_UpdateState == LIST_UPDATED) { // we have to set 'index' again in case client's name got changed int index= FindInList(m_pNewSpec->GetClientName()); int ixAll= FindInListAll(m_pNewSpec->GetClientName()); if (ixAll == -1) // not in either list { ASSERT(index == -1); CString curclient = GET_P4REGPTR()->GetP4Client(); CString defclient = GET_P4REGPTR()->GetP4Client(TRUE); InsertClient(m_pNewSpec, GetItemCount(), &curclient, &defclient); } else if (index > -1) // in both lists { ASSERT(ixAll > -1); if (MainFrame()->IsClientFilteredOut(m_pNewSpec)) // should it no longer be shown? { need2Refresh = TRUE; delete m_pNewSpec; } else { UpdateClient(m_pNewSpec, index); UpdateClientAll(m_pNewSpec, ixAll); } } else // not in visible list; is in list of all { if (MainFrame()->IsClientFilteredOut(m_pNewSpec)) // should it now be shown? need2Refresh = TRUE; else UpdateClientAll(m_pNewSpec, ixAll); if (pCmd->IsAutoUpdateSpec()) m_OldClient = m_pNewSpec->GetClientName(); delete m_pNewSpec; bDeld = TRUE; } ReSort(); if (pCmd->IsAutoUpdateSpec() || pCmd->IsSpecForceSwitch()) { if (bDeld) need2Refresh = TRUE; else { int i = FindInList(m_OldClient = m_pNewSpec->GetClientName()); if (i < 0) i = 0; SetItemState(i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); EnsureVisible(i, FALSE); } m_Active = _T("@"); // force switch to new client } } else if ( m_pNewSpec ) delete m_pNewSpec; int key= pCmd->HaveServerLock() ? pCmd->GetServerKey() : 0; if( m_Active == m_saveclientnew ) // active-client == saved new client name m_OldClient = m_saveclientnew; // means they decided to edit the current client if( m_Active != m_OldClient ) // If current client is not now the client when this { // all started, switch to the new current client if (GET_P4REGPTR()->GetExpandFlag() == 1) GET_P4REGPTR()->AddMRUPcuPath(MainFrame()->GetCurrentItemPath()); m_Active = m_OldClient; GET_P4REGPTR()->SetP4Client( m_Active, TRUE, FALSE, FALSE); MainFrame()->UpdateCaption( ); if (syncAfter) chainedCommand = SyncAfter(key, syncAfter); } else if( syncAfter || GET_P4REGPTR()->GetClearAndReload() || AfxMessageBox(IDS_YOU_HAVE_UPDATED_YOUR_CLIENT_WORKSPACE__CLEAR_AND_RELOAD, MB_YESNO |MB_ICONQUESTION ) == IDYES ) { if (syncAfter) chainedCommand = SyncAfter(key, syncAfter); else { int key= pCmd->HaveServerLock() ? pCmd->GetServerKey() : 0; MainFrame()->UpdateDepotandChangeViews(REDRILL, key); chainedCommand=TRUE; } } if (GET_SERVERLEVEL() >= 22) TheApp()->Set_m_ClientSubOpts(TheApp()->GetClientSpecField( _T("SubmitOptions"), pCmd->GetSpecOut())); } else { if ( m_pNewSpec ) delete m_pNewSpec; if (lParam == IDCANCEL && pCmd->GetIsRequestingNew()) { m_Active = pCmd->GetOldClient(); // switch back to the previous client GET_P4REGPTR()->SetP4Client( m_Active, TRUE, FALSE, FALSE); MainFrame()->UpdateCaption( ); } } if (lParam != IDABORT) { MainFrame()->ClearStatus(); if (!chainedCommand && pCmd->HaveServerLock()) pCmd->ReleaseServerLock(); CDialog *dlg = (CDialog *)pCmd->GetSpecSheet(); dlg->DestroyWindow(); } delete pCmd; m_EditInProgress = FALSE; if (need2Refresh && !chainedCommand) OnViewUpdate(); if (TheApp()->m_RunClientWizOnly && !chainedCommand) ::PostMessage(MainFrame()->m_hWnd, WM_COMMAND, ID_APP_EXIT, 0); return 0; }