수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620998
  • Today | 378
  • Yesterday | 482

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 ... 621 622 623 624 625 626 627 628 629 ... 2998  Next»

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

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
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 (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
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

  • System
  • 프로필
  • 비트맵 파일
  • SAX Filters
  • 건축물
  • IDA
  • Cartesian 곱
  • 로깅
  • Tip
  • 정보학
  • ActionScript
  • 4대륙
  • 웹 개발자
  • Sysinternals
  • 옷
  • 패턴
  • 나래관
  • 휘닉스 파크
  • 뉴욕타임즈
  • 헤네지 XO

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
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          

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.