|
재미있는 발상이네요
TOpenDialog가 그런기능을 지원하지는 않는것 같습니다.
일단 OpenDialog의 파일 리스트 부분은 ListView 입니다.
좀더 정확히 SysListView32 이죠
TListView 비롯하여 ListVeiw는 CheckBox 기능이 기본적으로 있죠
그럼..
ListView에 CheckBox 옵션은 어떻게 변경하는가?
TListView에서 Checkboxes 프로퍼티를 이용하지 않고 하려면 다음과 같이 해야 합니다.
//체크박스 빼기
DWORD dStyle;
dStyle=SendMessage(ListView1->Handle, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dStyle=dStyle&~LVS_EX_CHECKBOXES;
SendMessage(ListView1->Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dStyle);
//체크박스 넣기
DWORD dStyle;
dStyle=SendMessage(ListView1->Handle, LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0);
dStyle=dStyle|LVS_EX_CHECKBOXES;
SendMessage(ListView1->Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, dStyle);
자 그러면 결론적으로 OpenDialog 에 CheckBox를 보이게 하려면...
[방법]
1. OpenDialog 에서 SysListView32 를 찾아서
2. LVM_SETEXTENDEDLISTVIEWSTYLE 메세지를 날려서 ListView의 Style을 바꿔줍니다.
[중요체크사항]
1. OpenDialog는 Execute 가 호출되기 전까지 Window Handle은 존재하진 않습니다.
즉 Execute 가 호출되어 close되기전에 작업해야하죠
2. ListBox의 ViewStyle중 "큰아이콘"보기는 CheckBox부분을 클릭해도 Checked가 변경되지 않더군요
이에 대한 적절한 처리가 필요할듯...
3. ListBox의 Check된 내역을 가져오는것이 중요할듯 하네요..
아래 메세지를 이용하여 Checked된 아이템의 내요을 가져올수 있습니다.
LVM_GETITEMCOUNT
LVM_GETITEMSTATE
LVM_GETITEM
그럼..
불붕어 님이 쓰신 글 :
: 이제 C Builder를 시작하는 초보입니다.
:
: open dialog에서 모든 항목에 checkbox를 붙일수 있나요?
: properties의 option에는 없는것 같습니다.
:
: 할수 없다면, chebox가 구현된 api나 소스를 구할수 있는 곳이 있을까요?
:
: 없으면, 트리를 만들고 각각의 checkbox를 붙인다음 check 여부를 전부 검사해야 할까요?
: 맨땅에 헤딩이라도 해야되는 상황이라 절박합니다.
:
: 아시는 분의 답변 부탁드립니다.
|