|
박상열 님이 쓰신 글 :
: 답변 정말 감사드리구여.....꾸벅...
: 근데여 멀티셀렉트로 설정하면 마우스 오른쪽 버튼을 눌러도 아이템이 선택이 안되걸랑요
: 이일을 어찌하면 좋을지......
: 왜 그런걸까여...?
:
: 임프님께서 말씀하신데로
: if (Button==mbRight){
: SendMessage(ListBox1->Handle, LB_SETCURSEL, ListBox1->ItemAtPos(Point(X, Y), true), 0);
: }
: 이렇게 했더니 첫번째문제는 해결이됬는데여....
: 아무리 생각해도 멀티섹렉트 문제는 깜깜하네요...
: 제발 답변좀 주세여...
: 그럼..꾸벅
임펠리테리입니다.
앞서 제가 보여드린 코드는 멀티셀렉트가 아닐 경우만 동작합니다. LB_SETCURSEL 메시지가 싱글셀렉트 모드에서만 동작하기 때문입니다. 멀티셀렉트일때는 LB_SETSEL 메시지를 써야 합니다. 그런데 이 메시지는 현재 선택된 아이템들은 그대로 선택된 상태로 있고 새로 지정한 아이템을 선택할지 말지만 결정합니다. 그러므로 그냥 왼쪽 클릭과 동일하게 동작하도록 하려면, 다음과 같이 기존의 아이템들을 언셀렉트시키는 코드가 추가되어야 합니다.
if (Button==mbRight)
{
for(int i=0; i<ListBox1->Items->Count; i++)
ListBox1->Selected[i] = false;
SendMessage(ListBox1->Handle, LB_SETSEL, true, ListBox1->ItemAtPos(Point(X, Y), true));
}
그럼 참고하시길...
|