コード例 #1
0
//
// 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;
}
コード例 #2
0
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"));
	}
}