리스트 컨트롤 헤더 색상 바꾸기


# 1.국내 사이트

http://pingfan.egloos.com/7450045


#2. 해외 사이트
http://forums.codeguru.com/showthread.php?440892-CListCtrl-and-head-colors



첨부파일 :

delete-me-ColoredHeader.egg



저작자 표시
신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret

1.  Virtual List Control (CodeGuru 에서 찾음)  ★★★


VirtualListControl.zip


VirtualListControl_src.zip


List 출력 비교  ( 100,000 )

  • 코드 구루 : 약 0.75

정렬 비교 (100,000  - 시간 측정은 못하고 체감적으로만 확인)

  • 코드 구루 : 오래 걸림


2.    HighSpeedList Control(CString 사용 안하여 만든) ★★★


HighSpeedListCtrl_[CString 안씀].zip


List 출력 비교  ( 100,000 )

     약 3.43 초


3.   Quick List Control (CodeProject + my brain)


저작자 표시
신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret

리스트 컨트롤의 헤더 컬럼의 넓이나 사이즈를 고정하거나 움직이지않게 하는 방법


(1) 방법 A

조정 할수있게 마우스 포인터는 뜨나 조정할수는 없다.


BOOL CTestDlg::OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult)

{

// TODO: Add your specialized code here and/or call the base class


switch (((NMHDR*)lParam)->code)

{

case HDN_DIVIDERDBLCLICK:

*pResult = TRUE;                // disable tracking

return TRUE;    

case HDN_ITEMCHANGING:

*pResult = TRUE;                // disable tracking

return TRUE;                    // Processed message

default: break;

}


return CDialog::OnNotify(wParam, lParam, pResult);

}


(2) 방법 B

     헤더 컨트롤을 아예 못쓰게 만든다.


m_listPacketInfo.GetHeaderCtrl()->EnableWindow(false);


 (3) 방법 C   ( 쉬운 방법)





    

   퍼온것 방법(1)과 비슷하면서 다르다.




BEGIN_MESSAGE_MAP(CNoMoveHeaderCtrl, CHeaderCtrl)
 //{{AFX_MSG_MAP(CNoMoveHeaderCtrl)
 ON_NOTIFY_REFLECT(HDN_ITEMCHANGING, OnItemchanging)
 //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNoMoveHeaderCtrl message handlers  (*반드시 아래 함수를 작성해야 함!)



void CNoMoveHeaderCtrl::OnItemchanging(NMHDR* mhdr, LRESULT* lresult)
{
    HD_NOTIFY *phdn = (HD_NOTIFY *) mhdr;
     if (phdn && (phdn->pitem->mask & HDI_WIDTH) != 0)
    {
         *lresult = TRUE;
      }
}

저작자 표시
신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret

   LOGFONT logFont;
   memset(&logFont, 0, sizeof(LOGFONT));      
  
   logFont.lfHeight            = -13,200;
   logFont.lfWeight            = 14;

    logFont.lfEscapement=0;                //출력각도
    logFont.lfOrientation=0;            // 기준선에서의 갇도   
    logFont.lfWeight = FW_BOLD;        // 글자 굵기   
    logFont.lfItalic = FALSE;            // Italic 적용여부
    logFont.lfUnderline =FALSE;            //밑줄 적용 여부
    logFont.lfStrikeOut = FALSE;        //취소선 적용 여부
    logFont.lfCharSet   = DEFAULT_CHARSET;    // 문자셋종류
    logFont.lfOutPrecision = OUT_CHARACTER_PRECIS;    // 출력정밀도
    logFont.lfClipPrecision = CLIP_CHARACTER_PRECIS;    // 클리핑정밀도
    logFont.lfQuality =  DEFAULT_QUALITY;       // 출력문자품질
    logFont.lfPitchAndFamily =    DEFAULT_PITCH |FF_MODERN;         // 글꼴Pitch
    strcpy(logFont.lfFaceName, _T("Arial"));


   // 리스트 컨트롤에 설정된 폰트를 이식함.
    pStatusGrid.SetListFont(&logFont);

저작자 표시
신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret


리스트 컨트롤에 비트맵 이미지를 씌우기 위해서는 아래의 링크를 참고하자!


요즘 바빠서 블로그 정리를 못했다..

*쉬운 방법.

http://blackun.egloos.com/4984597


*다양한 방법

http://blog.naver.com/PostView.nhn?blogId=microcdw&logNo=90156843304



리스트 컨트로 방법 찾기 위해 들린곳

http://crowback.tistory.com/category/MFC기초-윈도우 콤포넌트/리스트컨트롤

저작자 표시
신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret

[출처 : http://blog.naver.com/condol2004/150021331405]
=====================================================================================

1. 리스트 컨트롤 헤더 배경 넣는 코드.

 

void CMyHeaderCtrl::DrawHeaderImage(CDC *pDC)
{
      CBitmap bmp;
      CBitmap *pOldbmp;
      BITMAP bmpinfo;
      CDC memDC;

 

      bmp.LoadBitmap(IDB_HEADER_IMAGE);
      bmp.GetBitmap(&bmpinfo);

      memDC.CreateCompatibleDC(pDC);
      pOldbmp = memDC.SelectObject(&bmp);

 

      pDC->StretchBlt(0, 0, bmpinfo.bmWidth, bmpinfo.bmHeight, &memDC,
                              0, 0, bmpinfo.bmWidth, bmpinfo.bmHeight, SRCCOPY);

 

      pDC->SelectObject(pOldbmp);
      bmp.DeleteObject();
}

 

 

=====================================================================================

 

2. 리스트 컨트롤 헤더에 폰트 넣는 코드.

 

void CMyHeaderCtrl::DrawFont(CDC *pDC)
{
     CFont font;
     int nColumnCnt = CHeaderCtrl::GetItemCount();
 
     CRect SelRect;
     CRect rectOut(0, 0, 0, 0);
 
     CStringArray strArray;
     strArray.Add(_T("FileName"));
     strArray.Add(_T("Number"));
     strArray.Add(_T("File size"));

 

     font.CreateFont(12,                                         // nHeight
                             0,                                         // nWidth
                             0,                                         // nEscapement
                             0,                                         // nOrientation
                             FW_BOLD,                             // nWeight
                             FALSE,                                 // bItalic
                             FALSE,                                 // bUnderline
                             0,                                         // cStrikeOut
                             ANSI_CHARSET,                     // nCharSet
                             OUT_DEFAULT_PRECIS,          // nOutPrecision
                             CLIP_DEFAULT_PRECIS,         // nClipPrecision
                             DEFAULT_QUALITY,                // nQuality
                             DEFAULT_PITCH | FF_SWISS,
                             _T("굴림"));

 

     pDC->SetTextColor(RGB(0, 0, 0));
     pDC->SetBkMode(TRANSPARENT);

 

     for (int nColumnIndex = 0; nColumnIndex < nColumnCnt; ++nColumnIndex)
     {
          GetItemRect(nColumnIndex, SelRect);
          rectOut = SelRect;

          pDC->DrawText(strArray.GetAt(nColumnIndex), rectOut, DT_CENTER | DT_END_ELLIPSIS | DT_NOPREFIX);
     }

     font.DeleteObject();
}

 

=====================================================================================
 

 

3. 리스트 컨트롤 헤더에 구분선 넣는 코드.

 

void CMyHeaderCtrl::DrawDivider(CDC *pDC)
{
     CPen Pen, *pOldPen;
     CRect rectOut(0, 0, 0, 0);

     int nColumnCnt = CHeaderCtrl::GetItemCount();

 

     Pen.CreatePen(PS_SOLID, 1, RGB(100, 100, 100));
     pOldPen = pDC->SelectObject(&Pen);

 

     for (int nColumnIndex = 0; nColumnIndex < nColumnCnt; ++nColumnIndex)
     {
          GetItemRect(nColumnIndex, rectOut);
          pDC->MoveTo(rectOut.right, rectOut.top + 4);          // +4, -4 는 Column 사각영역에서 윗부분과 아랫부분에 
          pDC->LineTo(rectOut.right, rectOut.bottom - 4);       // 공백을두고 그 사이에 선을 긋는다. (걍 이쁘라고...)
     }

 

     pDC->SelectObject(pOldPen);
     Pen.DeleteObject();
}

=====================================================================================

4. 스트 컨트롤 아이템 배경 투명화

 

m_ctlServiceList.SetBkColor(CLR_NONE);

m_ctlServiceList.SetTextBkColor(CLR_NONE);

m_ctlServiceList.SetTextColor(RGB_BLACK);



=====================================================================================

5. 리스트 컨트롤(CListCtrl) 안에

공용 컨트롤(CButton, CComboBox Control 등) 추가(넣기, 표시)


내용이 길어서 :http://blog.naver.com/nanoteli/30109581803


 예제 파일 :

vcblog.egg


=====================================================================================

6. 리스트 컨트롤 헤더 서브클래싱하기

내용이 길어서 :http://pingfan.egloos.com/7450045

















저작자 표시
신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret

 

1. 대량 데이터 출력 --Vector List Control

  Vector_ListControl.zip

  virtuallist_demo.zip

  BMPList.zip

  quicklist_demo.zip

CListCtrl_Sort.zip


2. 스크롤 동기화

SynchScroll.zip




 

신고

WRITTEN BY
Profile
비타오백
Enjoy your stage!

받은 트랙백이 없고 , 댓글이 없습니다.
secret