コード例 #1
0
ファイル: ACListWnd.cpp プロジェクト: avrionov/explorerxp
void CACListWnd::OnSize(UINT nType, int cx, int cy) {
  CWnd::OnSize(nType, cx, cy);
  SetScroller();
  SetProp();

  if (!m_LastSize.IsRectEmpty())
    GetWindowRect(m_LastSize);
}
コード例 #2
0
ファイル: ACListWnd.cpp プロジェクト: avrionov/explorerxp
void CACListWnd::Init(CWnd *pWnd) {
  VERIFY(m_VertBar.Create(WS_VISIBLE | SBS_VERT | SBS_LEFTALIGN,
                          CRect(0, 0, GetSystemMetrics(SM_CYVSCROLL), 100),
                          this, 0));

  SetScroller();
  m_pEditParent = (CEdit *)pWnd;

  m_lCount = m_DisplayList.size();
  m_VertBar.SetScrollPos(0, FALSE);
  SetProp();

  CDC *m_pDC;
  m_pDC = GetDC();
  if (m_pDC) {
    m_pDC->SelectObject(GetStockObject(DEFAULT_GUI_FONT));
    CSize m_Size = m_pDC->GetOutputTextExtent("Hg");
    m_ItemHeight = m_Size.cy;
    ReleaseDC(m_pDC);
  }
}
コード例 #3
0
ファイル: ACListWnd.cpp プロジェクト: avrionov/explorerxp
int CACListWnd::FindString(int nStartAfter, LPCTSTR lpszString) {
  CString m_Str1, m_Str2 = lpszString;

  long m_AktCount = m_DisplayList.size();

  if (!m_pEditParent) {
    ShowWindow(SW_HIDE);
    return -1;
  }

  if (nStartAfter > (int)m_SearchList.size()) {
    ShowWindow(SW_HIDE);
    return -1;
  }

  if (m_Str2.IsEmpty()) {
    ShowWindow(SW_HIDE);
    return -1;
  }

  m_DisplayList.clear();

  m_Str2.MakeUpper();

  for (int i = nStartAfter + 1; i < (int)m_SearchList.size(); i++) {
    if (m_PrefixChar)
      m_Str1 = m_PrefixChar;
    else
      m_Str1 = EMPTYSTR;

    m_Str1 += m_SearchList[i];

    m_Str1.MakeUpper();
    if (m_Str1.Find(m_Str2) == 0) {
      m_DisplayList.push_back(m_SearchList[i]);
    }
  }

  m_lCount = m_DisplayList.size();
  if (m_lCount) {
    CRect rcWnd;
    int iHeight;

    m_pEditParent->GetWindowRect(rcWnd);

    SetScroller();
    SetProp();

    ShowWindow(SW_SHOWNORMAL);
    Invalidate();

    iHeight = m_lCount * m_ItemHeight + (GetSystemMetrics(SM_CYBORDER) * 2);

    if (m_lCount > _MAX_ENTRYS_)
      iHeight =
          _MAX_ENTRYS_ * m_ItemHeight + (GetSystemMetrics(SM_CYBORDER) * 2);

    if (!m_LastSize.IsRectEmpty()) {
      int iWight = m_LastSize.Width();
      iHeight = m_LastSize.Height();
      rcWnd.top += rcWnd.Height();
      rcWnd.right = rcWnd.left + iWight;
      rcWnd.bottom = rcWnd.top + iHeight;

      SetWindowPos(&CWnd::wndTopMost, rcWnd.left, rcWnd.top, rcWnd.Width(),
                   rcWnd.Height(), 0);
    } else {
      SetWindowPos(&CWnd::wndTopMost, rcWnd.left, rcWnd.top + rcWnd.Height(),
                   rcWnd.Width(), iHeight, 0);
    }

    if (m_AktCount != static_cast<long>(m_DisplayList.size()))
      m_lSelItem = -1;

    SortList(m_DisplayList);
  } else {
    ShowWindow(SW_HIDE);
  }

  return 1;
}
コード例 #4
0
/*
** Vers. 1.1
* NEW: m_bDisplayOnly
*/
int CACListWnd::FindString(int nStartAfter, LPCTSTR lpszString, bool m_bDisplayOnly)
{
	long m_AktCount = (long)m_DisplayList.GetSize();

	if(!m_bDisplayOnly)
	{
		CString m_Str1,m_Str2 = lpszString;
		if(!m_pEditParent)
		{
			ShowWindow(false);
			return -1;
		}

		if(nStartAfter > m_SearchList.GetSize())
		{
			ShowWindow(false);
			return -1;
		}

		if(m_Str2.IsEmpty())
		{
			ShowWindow(false);
			return -1;
		}

		m_DisplayList.RemoveAll();

		m_Str2.MakeUpper();

		for(int i = nStartAfter+1; i < m_SearchList.GetSize(); i++)
		{
			if(m_PrefixChar)
				m_Str1 = m_PrefixChar;
			else
				m_Str1 = _T("");

			m_Str1 += m_SearchList.GetAt(i);

			m_Str1.MakeUpper();

			if(m_lMode & _MODE_FIND_ALL_)
			{
				if(m_Str1.Find(m_Str2) >= 0)
				{
					m_DisplayList.Add(m_SearchList.GetAt(i));
				}
			}
			else  // _MODE_FIND_EXACT_
			{
				if(m_Str1.Find(m_Str2) == 0)
				{
					m_DisplayList.Add(m_SearchList.GetAt(i));
				}
			}
		}
	}
	m_lCount = (long)m_DisplayList.GetSize();

	if(m_lCount)
	{
		CRect rcWnd;
		int iHeight,iWight;

		m_pEditParent->GetWindowRect(rcWnd);

		SetScroller();
		SetProp();

		ShowWindow(true);
		Invalidate();

		iHeight = m_lCount*m_ItemHeight+(GetSystemMetrics(SM_CYBORDER)*2);

		if(m_lCount > _MAX_ENTRYS_)
			iHeight = _MAX_ENTRYS_*m_ItemHeight+(GetSystemMetrics(SM_CYBORDER)*2);

		if(!m_LastSize.IsRectEmpty())
		{
			iWight = m_LastSize.Width(); 
			iHeight = m_LastSize.Height(); 
			rcWnd.top += rcWnd.Height();
			rcWnd.right = rcWnd.left+iWight;
			rcWnd.bottom = rcWnd.top+iHeight;

			SetWindowPos(&CWnd::wndTopMost, rcWnd.left,
				rcWnd.top,
				rcWnd.Width(), 
				rcWnd.Height(), 0);
		}
		else
		{
			SetWindowPos(&CWnd::wndTopMost, rcWnd.left,
				rcWnd.top + rcWnd.Height(), 
				rcWnd.Width(), 
				iHeight, 0);
		}

		if(m_AktCount != m_DisplayList.GetSize())
			m_lSelItem = -1;

		SortList(m_DisplayList);
	}
	else
	{
		ShowWindow(false);
	}

	return 1;	
}