본문 바로가기

프로그래밍/MFC

[MFC Dialog] TreeCtrl에 더블클릭 이벤트 주기 ON_NOTIFY

다이얼로그(대화식 상자)에 이벤트를 주는 방법은 참 쉽다.


      (' ' 요런식..

 하지만 다르게 해보면 어떨까...  그래서 어떻게 하면 컨트롤에 이벤트를 줄 수 있을까.. 하면서 찾은것이 MESSAGE_MAP에 NOTIFY 메시지를 등록하는 것.



ON_NOTIFY( wwNotifyCode, id, memberFxn)
id가 바로 해당 controller


wNotifyCode

The code for the notification message to be handled, such as LVN_KEYDOWN.

id

The child identifier of the control for which the notification is sent.

memberFxn

The member function to be called when this notification is sent.



읽어보면 아시겠지만 첫번째 전달인자는 메시지 구분자. 



Notifications...

NM_CLICK

User clicked left mouse button in the control

NM_DBLCLK

User double-clicked left mouse button in the control

NM_RCLICK

User clicked right mouse button in the control

NM_RDBLCLK

User double-clicked right mouse button in the control

NM_RETURN

User pressed the ENTER key while control has input focus

NM_SETFOCUS

Control has been given input focus

NM_KILLFOCUS

Control has lost input focus

NM_OUTOFMEMORY

Control could not complete an operation because there was not enough memory available 


예 )

/*메시지 맵에 메시지 등록*/
BEGIN_MESSAGE_MAP(CsunClientDlg, CDialog)
	ON_NOTIFY(NM_DBLCLK, IDC_BUDDY_LIST, doubleClickedTree)
END_MESSAGE_MAP()
/* 등록함수 정의*/
/* 이 코드는 TreeCtrl에 이벤트를 주기위한 코드 */
void CsunClientDlg::doubleClickedTree(NMHDR* pNmhdr, LRESULT* pResult)
{
	HTREEITEM hItem = m_Tree.GetSelectedItem();
	if(m_Tree.GetChildItem(hItem) == NULL)
	{
		::MessageBox(NULL, "D", m_Tree.GetItemText(hItem), MB_OK);
	}
}
요런거..

'프로그래밍 > MFC' 카테고리의 다른 글

[MFC] 포인터 해제?  (0) 2011.11.14
[MFC Dialog] PreTranslateMessage  (0) 2011.10.27
[MFC] SendMessage  (4) 2011.10.27
[MFC Dialog] OnKeyDown message  (0) 2011.10.27
[MFC Dialog 메신져] TreeCtrl 탐색  (0) 2011.10.18