VC에서 ClistBox에 확인란 사용
프로젝트에 복선상자가 있는 목록 컨트롤을 사용해야 합니다. 맞아요. VB, Delphi. 현재 성과가 있지만, 프로젝트가 VC 프로젝트이기 때문에 VC에 있는 기존의 ClistBox나 ClistCtrl에는 복선상자가 없습니다.여기까지 말하면 고수들은 간단하게, 스스로 하나를 다시 그리거나, 게으름을 피우는 방법도 인터넷에서 다른 사람이 만들어 놓은 종류를 찾아서 쓸 수 있다고 말할 수 있다.
사실 인터넷에서 이런 말을 찾을 수 있는 더 쉬운 방법이 하나 더 있다.
[How to use the CCheckListBox class in a dialog box]
Create in your resource file an ordinary list box in a dialog box.Whichever other attributes that you choose, the list box must be ownerdrawn and include the hasstrings attribute. Assume that in this case, you have assigned an ID of IDC_CHECKLISTBOX to the listbox .
Create an instance of a CCheckListBox object in the header file of your dialog box.
CCheckListBox m_CheckListBox;
Over-ride OnInitDialog() in your dialog box and subclass the list box that you created in your resource file. Set the style of the check box as you wish. See the documentation provided with your compiler.
m_CheckListBox.SubclassDlgItem(IDC_CHECKLISTBOX, this); m_CheckListBox.SetCheckStyle(BS_AUTOCHECKBOX);
Since CCheckListBox is derived from CListBox, you have access to all the class members of CListBox. Add strings to the list box using AddString() as follows.
m_CheckListBox.AddString("Test String");
CCheckListBox provides several class members that allow you to access or set the check state of the items in the list box. For example, to see whether the first item in the list box is checked (the index of the first item would be zero), use GetCheck().
int iIndex = 0; int iState; iState = m_CheckListBox.GetCheck(iIndex);
방법이 매우 교묘해서 꽃을 옮겨 나무를 접목한다.
MFC는 CCheckListBox 클래스가 복선상자 스타일을 지원하기 때문에 ListBox 컨트롤을 직접 사용하고 초기화할 때 하위 클래스를 CCheckListBox로 만들고 스타일 파라미터를 설정하면 됩니다.그러나 성공의 관건은 ListBox 컨트롤의 두 가지 속성을 수정하는 것이다. 그것이 바로 Owner draw가Fixed(LBS OWNERDRAWFIXED),Hasstrings가True(LBS HASSTRINGS)로 설정된 것이다. 그렇지 않으면 성공하지 못하고 타임즈가 잘못 실행된다.
구체적인 실현 절차는 다음과 같다.
1、먼저 창에 ListBox 컨트롤을 드래그하고 자원 ID가 IDC 라고 가정합니다LIST1;
2. 위에서 말한 바와 같이 이 ListBox 컨트롤의 속성을 수정합니다(LBS OWNERDRAWFIXED | LBS HASSTRINGS).
3. CCheckListBox 대상을 창 클래스의 헤더 파일에 정의한다.
// XXXDlg.h CCheckListBox m_CheckList;
4. 그리고 CPP 파일에 초기화된 곳에 두 줄을 쓴다.
// XXXDlg.cpp BOOL CXXXDlg::OnInitDialog() { // ... m_CheckList.SubclassDlgItem(IDC_LIST1, this); // IDC_LIST1 ListBox ID
m_CheckList.SetCheckStyle(BS_AUTOCHECKBOX); // checkBox , ... }
오케이, 이렇게 간단해!데이터를 몇 개 넣어서 복선상자가 있는지 확인해 보세요.
m_CheckList.AddString("Test String");
확인란이 선택되었는지 여부를 판단하는 것도 간단합니다.int iIndex = 0;
int iState;
iState = m_CheckList.GetCheck(iIndex);
이상은 VC6, 8에서 모두 테스트에 통과되었다.
다음과 같은 방법도 사용할 수 있다
1、먼저 창에 ListBox 컨트롤을 드래그하고 자원 ID가 IDC 라고 가정합니다LIST1;
2. 위에서 말한 바와 같이 이 ListBox 컨트롤의 속성을 수정합니다(LBS OWNERDRAWFIXED | LBS HASSTRINGS).3, ListBox 컨트롤에 CCheckListBox 변수 추가
m_CheckList
4, OnInitDialog에 추가m_CheckList.AddString("Test String");
보충: Delphi에서 TtreeView 컨트롤을 확인란으로 설정하는 방법:
간단해, 초기화할 때 이런 한마디를 더하면 돼.(TreeView1은 컨트롤 이름)SetWindowLong(TreeView1.Handle, GWL_STYLE, GetWindowLong(TreeView1.Handle, GWL_STYLE) or $00000100);
제3자 컨트롤을 찾아가거나 그림을 그릴 필요가 없습니다!
다음으로 변경:http://blog.csdn.net/JPEXE/article/details/1862435
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[SwiftUI]List화한 CoreData를 가로 스와이프로 행 삭제하는 방법상당히 조사했지만 일본어 자료가 없었기 때문에 비망록으로 남겨 둔다. 아래와 같이 CoreData를 참조한 리스트를 가로 스와이프로 삭제하고 싶었다. UI 요소뿐만 아니라 원본 데이터 당 삭제합니다. 잘 다른 페이지...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.