CtreeCtrl을 사용시 TreeCtrl에서 이름을 변경해야 하는 경우가 있는데 이때는 Editable 함수를 써서
편집모드로 하실텐데요..
근데 일반적으로 사용자들이 사용시에 편집이 완료되면 엔터를 치는 방식이 몸에 베어있죠..
근데 예를들어 다이얼로그에다 트리를 붙인 상태에서 위와 같이 작업되어 있다 치고 편집모드에서 편집후 엔터를 치면
다이얼로그가 종료되죠;;
그래서 PreTranslateMessage 로 엔터키 입력시 종료안되게끔 하겠죠
근데 이렇게 해버리면 TreeCtrl에서 편집모드가 완료가 안되는 상황이 나오죠
자 이때 어떻게 하느냐 ?
if (pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN) {
CEdit *pEdit = m_wndTree.GetEditControl();
if (pEdit) {
// pEdit가 NULL이 아니면 지금 m_wndTree 콘트롤에서 편집을하고 있다는 겁니다..
// 그래서 그 편집을 종료 할려면, 현재 포커스가 pEdit 에 있으니, 그 포커스를 m_wndTree로 옮기면
// 자동으로 pEdit 가 destroy가 되고 사라집니다...
m_wndTree.SetFocus();
return TRUE;
}
}
아주 명쾌한 답이 있어 퍼왔습니다.
출처는 데브피아에서 가져왔습니다.
정보는 공유되어야 한다 쭈욱~
'Study > MFC' 카테고리의 다른 글
CTreeCtrl에서 현재 선택된 아이템의 depth 구한기 (2) | 2015.12.11 |
---|---|
MFC Control SubClassing 할때(서브클래싱) | ON_NOTIFY_REFLECT_EX 와 ON_CONTROL_REFLECT_EX (1) | 2015.12.10 |
더블 버퍼링 처리 샘플 코드 (0) | 2015.11.27 |
[MFC ] CDC 출력함수 정리 (0) | 2015.07.10 |
그라데이션 배경색 입히기 (0) | 2015.07.07 |
댓글