수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1693825
  • Today | 176
  • Yesterday | 588

Programming/MFC2006/11/24 04:33

리스트 컨트롤 Tip

고수닷넷 - bro님

1. 특정 ROW 포커스 주기

리스트 컨트롤에서 어떤 특정 Row를 선택하게 하고 싶을때 아래처럼 선택 할 수 있습니다.

( 이때 선택뿐아니라 포커스도 가야 합니다. 포커스가 간다는 의미는 다음에 키다운을 하면 바로 부드럽게 다음 아이템을 가리키도록 하는 것입니다 )

ListView_SetItemState (pListCtrl->GetSafeHwnd(),     // handle to listview
                       10, // index to listview item
                       LVIS_FOCUSED | LVIS_SELECTED, // item state
                       0x000F); // mask


2. 특정 ROW로 가기

만일 원하는 Row를 스크롤을 하던 어떻게 하든 화면에 보이게 하고 싶을때

pListCtrl->EnsureVisible(15, TRUE);


3. 헤더 컬럼수 얻어오기

헤더 컬럼의 갯수를 알고 싶을때

CHeaderCtrl* pHeader = (CHeaderCtrl*)GetDlgItem(0);
int nColumnCount = pHeader->GetItemCount();

또는 pList->GetHeaderCtrl()을 통해서 얻어올수 도 있습니다.


4. 컬럼의 너비를 이쁘게 주기

공백없이 컬럼의 너비를 컬럼 라벨 너비에 맞게 정렬해줍니다.

부모 다이얼로그의 OnSize에서

void CAttrListDlg::OnSize(UINT nType, int cx, int cy)

{

   CDialog::OnSize(nType, cx, cy);

   

   // TODO: Add your message handler code here

   if( IsWindow( z_AttrList.m_hWnd ))

   {

       z_AttrList.MoveWindow( 0, 0, cx, cy );

       z_AttrList.SetColumnWidth(1 , LVSCW_AUTOSIZE_USEHEADER);

   }

}


5. 한줄 쭉 선택되게 하기, 그리드 라인 주기

z_AttrList.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);


6. 다중 선택한 아이템(ROW)를 지우기

CDWordArray m_anDragIndexes;    // 선택한 아이템을 기억하는

배열

int    CAttrList::fnRemoveItem()

{

   m_anDragIndexes.RemoveAll();

   POSITION pos = GetFirstSelectedItemPosition();

   while (pos)

   {

       m_anDragIndexes.Add(GetNextSelectedItem(pos));

   }

   int nSize = m_anDragIndexes.GetSize();    

   int nRet = -1;

   if( nSize )

       nRet = m_anDragIndexes[0];    

   while( nSize-- )

       DeleteItem( m_anDragIndexes[nSize] );

   m_anDragIndexes.RemoveAll();

   return nRet;

}


7. 두 아이템을 스왑 하기

void CAttrList::fnSwapItem( int nItem1, int nItem2 )

{

   int hi = nItem2;

   int lo = nItem1;

   CStringArray rowText;

   LV_ITEM lvitemlo, lvitemhi;

   CHeaderCtrl* pHeaderCtrl = GetHeaderCtrl();

   int nColCount =pHeaderCtrl->GetItemCount();

           

   rowText.SetSize( nColCount );

   int i;

   for( i=0; i<nColCount; i++)

       rowText[i] = GetItemText(lo, i);

   lvitemlo.mask = LVIF_IMAGE | LVIF_PARAM | LVIF_STATE;

   lvitemlo.iItem = lo;

   lvitemlo.iSubItem = 0;

   lvitemlo.stateMask = LVIS_CUT | LVIS_DROPHILITED |

       LVIS_FOCUSED | LVIS_SELECTED |

       LVIS_OVERLAYMASK | LVIS_STATEIMAGEMASK;

   

   lvitemhi = lvitemlo;

   lvitemhi.iItem = hi;

   

   GetItem( &lvitemlo );

   GetItem( &lvitemhi );

   

   for( i=0; i<nColCount; i++)

       SetItemText(lo, i, GetItemText(hi, i));

   

   lvitemhi.iItem = lo;

   SetItem( &lvitemhi );

   

   for( i=0; i<nColCount; i++)

       SetItemText(hi, i, rowText[i]);

   

   lvitemlo.iItem = hi;

   SetItem( &lvitemlo );

}


8.기존에 선택되어있는 것을 해체하기

       int nOldItem = GetSelectionMark();

       if( nOldItem > 0 )

           SetItemState( nOldItem , 0, LVIS_SELECTED);

"MFC" 카테고리의 다른 글
  • 다이얼로그 리소스의 실제 크기 얻기 (0)2006/11/24
  • List Control에 다른 Control 넣기 (0)2006/11/24
  • 리스트 컨트롤 Tip (0)2006/11/24
  • MFC 프로그래밍 유용한 팁 (0)2006/08/12
  • CStringArray 정렬하기 (0)1970/01/01
2006/11/24 04:33 2006/11/24 04:33
Posted by webdizen
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2339

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 897 898 899 900 901 902 903 904 905 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 노틀담
  • 포트스캐닝
  • 추격자
  • 화학관
  • 가상 메모리 크기
  • 스노우보드
  • Preloading
  • 형상화
  • INI
  • Connectivity
  • Developer Day
  • Application
  • 휘닉스 파크
  • 환경연구소
  • 검색
  • 시스템 테이블
  • 비트맵 출력
  • ER Conference
  • 윈도우 종료
  • 서버 로그인

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.