본문 바로가기
Study/MFC

CtreeCtrl 에서 Editable 처리시 엔터로 마무리 짓기

by 뿡뿡대마왕 2015. 12. 9.
반응형



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;

        }

    }


아주 명쾌한 답이 있어 퍼왔습니다.

출처는 데브피아에서 가져왔습니다.


정보는 공유되어야 한다 쭈욱~



반응형

댓글