// // Find the text in the list control "CuEditableListCtrlInstallationParameter" LONG FIND_ListCtrlParameter (WPARAM wParam, LPARAM lParam) { CaFindInformation* pFindInfo = (CaFindInformation*)lParam; ASSERT (pFindInfo); if (!pFindInfo) return 0L; CuEditableListCtrlInstallationParameter* pCtrl = (CuEditableListCtrlInstallationParameter*)wParam; ASSERT (pCtrl); if (!pCtrl) return 0L; CString strItem; int i, nStart, nCount = pCtrl->GetItemCount(); CString strWhat = pFindInfo->GetWhat(); if (nCount == 0) return FIND_RESULT_NOTFOUND; if (pFindInfo->GetListWindow() != pCtrl || pFindInfo->GetListWindow() == NULL) { pFindInfo->SetListWindow(pCtrl); pFindInfo->SetListPos (0); } if (!(pFindInfo->GetFlag() & FR_MATCHCASE)) strWhat.MakeUpper(); nStart = pFindInfo->GetListPos(); CaEnvironmentParameter* pParameter = NULL; for (i=pFindInfo->GetListPos (); i<nCount; i++) { pParameter = (CaEnvironmentParameter*)pCtrl->GetItemData(i); pFindInfo->SetListPos (i); if (!pParameter) continue; int nCol = 0; while (nCol < 3) { switch (nCol) { case 0: strItem = pParameter->GetName(); break; case 1: strItem = pParameter->GetValue(); break; case 2: strItem = pParameter->GetDescription(); break; default: ASSERT (FALSE); break; } if (!(pFindInfo->GetFlag() & FR_MATCHCASE)) strItem.MakeUpper(); int nBeginFind = 0, nLen = strItem.GetLength(); int nFound = -1; if (!(pFindInfo->GetFlag() & FR_WHOLEWORD)) { nFound = strItem.Find (strWhat); if (nFound != -1) { pFindInfo->SetListPos (i+1); pCtrl->EnsureVisible(i, FALSE); pCtrl->SetItemState (i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); return FIND_RESULT_OK; } } else { TCHAR* chszSep = (TCHAR*)(LPCTSTR)theApp.m_strWordSeparator; // Seperator of whole word. TCHAR* token = NULL; // // Establish string and get the first token: token = _tcstok ((TCHAR*)(LPCTSTR)strItem, chszSep); while (token != NULL ) { // // While there are tokens in "strResult" if (strWhat.Compare (token) == 0) { pFindInfo->SetListPos (i+1); pCtrl->EnsureVisible(i, FALSE); pCtrl->SetItemState (i, LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED); return FIND_RESULT_OK; } token = _tcstok(NULL, chszSep); } } // // Next column: nCol++; } } if (nCount > 0 && nStart > 0) return FIND_RESULT_END; return FIND_RESULT_NOTFOUND; }
void CuDlgParameterInstallationExtra::RefreshParameter() { try { int nTopIndex = m_cListCtrl.GetTopIndex(); m_cListCtrl.HideProperty(FALSE); m_cListCtrl.DeleteAllItems(); while (!m_listParameter.IsEmpty()) delete m_listParameter.RemoveHead(); if (theApp.m_ingresVariable.QueryEnvironment (m_listParameter, FALSE, TRUE)) { // // Sort the parameter: CaEnvironmentParameter* pParam = NULL; CObArray a; int i, indx, nCount = 0; if (!m_listParameter.IsEmpty()) { a.SetSize(m_listParameter.GetCount()); POSITION pos = m_listParameter.GetHeadPosition(); while (pos != NULL) { pParam = (CaEnvironmentParameter*)m_listParameter.GetNext(pos); if (pParam->GetName().CompareNoCase(_T("II_NUM_OF_PROCESSORS"))==0) pParam->LoadDescription(IDS_II_NUM_OF_PROCESSORS); else if (pParam->GetName().CompareNoCase(_T("II_MAX_SEM_LOOPS"))==0) pParam->LoadDescription(IDS_II_MAX_SEM_LOOPS); a[nCount] = pParam; nCount++; } if (a.GetSize() > 1) IVM_DichotomySort(a, CompareSubItem, (LPARAM)&m_sortparam, NULL); } else return; for (i=0; i< a.GetSize(); i++) { pParam = (CaEnvironmentParameter*)a[i]; nCount = m_cListCtrl.GetItemCount(); indx = m_cListCtrl.InsertItem (nCount, pParam->GetName(), IM_ENV_SYSTEM); if (indx != -1) { m_cListCtrl.SetItemText (indx, 1, pParam->GetValue()); m_cListCtrl.SetItemText (indx, 2, pParam->GetDescription()); m_cListCtrl.SetItemData (indx, (DWORD_PTR)pParam); } } if (nTopIndex != -1) { CRect r; m_cListCtrl.GetItemRect (0, r, LVIR_BOUNDS); m_cListCtrl.Scroll (CSize(0, nTopIndex*r.Height())); } } } catch (...) { AfxMessageBox (_T("System error (CuDlgParameterInstallationExtra::RefreshParameter): \nRefresh parameter failed")); } }