공부/컴퓨터
[MFC] 리스트 컨트롤에서 OnItemchanged 가 호출 될때..
찬
2004. 9. 5. 23:40
반응형
OnItemchanged 가 호출 되는 경우가 있다.
바로 리스트 컨트롤 같은것에서 아이템을 고를때 선택 되는데.
한번 다른 아이템을 선택할때마다 총 3번이 호출 되게 된다.
이전에 있던 아이템이 두번 ( 선택 되는것, 포커스 사라지는것 ),
그리고 현재 선택된 아이템이 한번, 이렇게 총 3번 호출 되게 한다.
그렇다면 이번에 선택된것만 , 딱 한번만 호출 하고 싶을때에는 다음과 같이 한다.
==============================================================================
void CArticleView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
// 이곳에다가 CContentView.ExNavigator(CString strHTML)을 호출하게 하면 된다.
int item = pNMListView->iItem; // idx of item that changed
bool wasSelected = (pNMListView->uOldState & LVIS_SELECTED) != 0;
bool isSelected = (pNMListView->uNewState & LVIS_SELECTED) != 0;
// 아이템체인지드는 이전에 선택 된것들이 포커스가 없어 지면서도
// 실행 되므로 실제 클릭 된것만 보여주기 위해 다른것들은 그냥 리턴 시킴.
if ( !(!wasSelected && isSelected) ) return;
// SomeCode
}
http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_20248604.html
바로 리스트 컨트롤 같은것에서 아이템을 고를때 선택 되는데.
한번 다른 아이템을 선택할때마다 총 3번이 호출 되게 된다.
이전에 있던 아이템이 두번 ( 선택 되는것, 포커스 사라지는것 ),
그리고 현재 선택된 아이템이 한번, 이렇게 총 3번 호출 되게 한다.
그렇다면 이번에 선택된것만 , 딱 한번만 호출 하고 싶을때에는 다음과 같이 한다.
==============================================================================
void CArticleView::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
// 이곳에다가 CContentView.ExNavigator(CString strHTML)을 호출하게 하면 된다.
int item = pNMListView->iItem; // idx of item that changed
bool wasSelected = (pNMListView->uOldState & LVIS_SELECTED) != 0;
bool isSelected = (pNMListView->uNewState & LVIS_SELECTED) != 0;
// 아이템체인지드는 이전에 선택 된것들이 포커스가 없어 지면서도
// 실행 되므로 실제 클릭 된것만 보여주기 위해 다른것들은 그냥 리턴 시킴.
if ( !(!wasSelected && isSelected) ) return;
// SomeCode
}
http://www.experts-exchange.com/Programming/Programming_Languages/MFC/Q_20248604.html
반응형