수안이의 컴퓨터 연구실

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

1 Articles, Search for 'List Control'

  1. 2007/02/21 List Control 에 다른 Control 넣기
Programming/MFC2007/02/21 15:41

List Control 에 다른 Control 넣기

원본 : http://www.debuglab.com/knowledge/listcontrol.html

1.요약

특정 Column에서 다른 Control 을 띄우는 방법 설명.
여기서 사용한 방법은 현재 Cursor가 있는 위치를 파악한후 그 위치에 적당한 크기의 Edit Control를 생성 시킨다.


2.본문

1) CListCtrl를 상속받는 CMyList라는 Class를 만든다.
2) Member변수로 CEdit m_ctrEdit를 선언한다.
3) Member함수로 OnLButtonDown()과 GetSubItemFromPt(point, nItem, nSubItem, rcClient)를 선언
OnLButtonDown() : Edit Control를 생성/삭제 시키는 역할
GetSubItemFromPt(): 현재 Cursor가 있는 곳의 List정보를 가져온다.
4) 함수 내용을 구성한 후(예제 참조) 사용은
CListCtrl m_ctrList에서 CListCtrl ---> CMyList로 바꿔 주면 된다.


3.예제

실제로 클래스를 구성하면 다음과 같다.

class CMyList : public COXGridList 

{ 

    // Construction 

public: 

    CMyList(); 

    

    // Attributes 

public: 

    CEdit m_ctrEdit; 

    

    // Operations 

public: 

    void GetSubItemFromPt(CPoint point, int &nItem, int &nSubItem, CRect &rect); 

    

    // Overrides 

    // ClassWizard generated virtual function overrides 

    //{{AFX_VIRTUAL(CMyList) 

    //}}AFX_VIRTUAL 

    

    // Implementation 

public: 

    virtual ~CMyList(); 

    

    // Generated message map functions 

protected: 

    //{{AFX_MSG(CMyList) 

    afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 

    //}}AFX_MSG 

    

    DECLARE_MESSAGE_MAP() 

}; 





CMyList::CMyList() 

{ 

} 



CMyList::~CMyList() 

{ 

} 





BEGIN_MESSAGE_MAP(CMyList, COXGridList) 

//{{AFX_MSG_MAP(CMyList) 

ON_WM_LBUTTONDOWN() 

//}}AFX_MSG_MAP 

END_MESSAGE_MAP() 



///////////////////////////////////////////////////////////////////////////// 

// CMyList message handlers 



void CMyList::OnLButtonDown(UINT nFlags, CPoint point) 

{ 

    int nItem, nSubItem; 

    CRect rcClient; 

    

    // 현재 Point의 영역 정보를 가져온다. 

    GetSubItemFromPt(point, nItem, nSubItem, rcClient); 

    

    // 두번째 SubItem일(두번째 Column) 경우에만 나타나게 함. 

    if (nSubItem == 1)   

    { 

        if (m_ctrTimeEdit.m_hWnd == NULL) 

        { 

            // Mask Edit Control 생성 

            m_ctrEdit.Create   

                (WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER|WS_HSCROLL, 

                CRect(0, 0, 30, 10), this, 1); 

            

            m_ctrEdit.MoveWindow(rcClient); 

            m_ctrEdit.ShowWindow(SW_SHOW); 

            

        } 

        else 

        { 

            m_ctrTimeEdit.MoveWindow(rcClient); 

            m_ctrTimeEdit.ShowWindow(SW_SHOW); 

        } 

    } 

    else 

    { 

        if (m_ctrTimeEdit.m_hWnd != NULL) 

        { 

            m_ctrTimeEdit.ShowWindow(SW_HIDE); 

        } 

    } 

    

    CListCtrl::OnLButtonDown(nFlags, point); 

} 



void CMyList::GetSubItemFromPt(CPoint point, int &nItem, int &nSubItem, CRect &rect) 

{ 

    LVHITTESTINFO lvhti; 

    

    // Clear the subitem text the user clicked on. 

    lvhti.pt = point; 

    SubItemHitTest(&lvhti); 

    

    nItem = lvhti.iItem; 

    nSubItem = lvhti.iSubItem; 

    GetSubItemRect(nItem, nSubItem, LVIR_LABEL, rect); 

} 


4.참고

마우스를 더블 클릭하는 순간에 나타나게 하고 싶다면 마우스 더블 클릭 함수에서 구현해 주면 된다.

몇가지 함수만 추가하면 특정 Column에서만 Control이 나타나게 하는 것을 쉽게 구현 할 수 있을 것이다.



- 2001.08.06 Smile Seo -
"MFC" 카테고리의 다른 글
  • 사용자 정의 Common Dialog 만들기 (0)2007/02/21
  • 초 간단!! 시스템 이미지 리스트 얻어오기 (0)2007/02/21
  • List Control 에 다른 Control 넣기 (0)2007/02/21
  • 256색 이상의 Bitmap ImageList 만들기 (0)2007/02/21
  • 사용하지 않는 인자에 대한 warning 없애기 (0)2007/02/21
2007/02/21 15:41 2007/02/21 15:41
Posted by webdizen
Tags List Control
No Trackback No Comment

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

Leave your greetings.

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

«Prev  1  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

  • 여자
  • RADIUS
  • 공유 라이브러리
  • 아이콘
  • 슬로코도
  • 아바이 벌꿀 소주
  • 보드카 알렉산더
  • Scanner
  • 데이터 정렬
  • system()
  • 윈도우즈 로그오프
  • 변수
  • 컴퓨터과학
  • 수안이
  • DirectDraw
  • char
  • 버전 관리
  • 프린트 다이얼로그
  • 정보
  • C#

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.