LIST控件雙擊出現編輯框

 

首先要響應通知消息事件:NM_DBLCLK                  NM_CLICK

雙擊 出現編輯框         單擊 保存

 

 

void CxmlEditDlg::OnNMDblclkListXml(NMHDR *pNMHDR, LRESULT *pResult)
{

	//------------------
    Invalidate();
	LPNMITEMACTIVATE pNMItemActivate  =  reinterpret_cast < LPNMITEMACTIVATE > (pNMHDR);

	LVHITTESTINFO info;
	info.pt  =  pNMItemActivate -> ptAction;

	if (m_xmlListControl.SubItemHitTest( & info)  !=   - 1  )
	{
		nhitRow  =  info.iItem;
		nhitCol  =  info.iSubItem;

		if (m_edit.m_hWnd  ==  NULL) // editItem爲一輸入框控件, 
		{
			RECT rect;
			rect.left  =   0 ;
			rect.top  =   0 ;
			rect.bottom  =   15 ;
			rect.right  =   200 ;
			m_edit.Create(WS_CHILD  |  ES_RIGHT  |  WS_BORDER  |  ES_AUTOHSCROLL  |  ES_WANTRETURN  |  ES_MULTILINE, rect,  this ,  101 );
			GetDlgItem(IDC_EDIT1)->SetFont( this -> GetFont(), FALSE);
		}
		CRect rect;
		m_xmlListControl.GetSubItemRect(info.iItem, info.iSubItem, LVIR_BOUNDS, rect);
		int iSubItemWidth = m_xmlListControl.GetColumnWidth(nhitCol);
		rect.top  +=   14 ;
		rect.left  +=   15 ;

		rect.right  =   rect.left+iSubItemWidth ;

		rect.bottom  +=   14 ;

		GetDlgItem(IDC_EDIT1)->SetWindowText(m_xmlListControl.GetItemText( info .iItem,  info .iSubItem));
		GetDlgItem(IDC_EDIT1)->MoveWindow( & rect, TRUE);
		GetDlgItem(IDC_EDIT1)->ShowWindow( 1 );
		GetDlgItem(IDC_EDIT1)->SetFocus();
	}
	m_iLastState = VALUE_EDIT;
	* pResult  =   0 ;

}


 

 

void CxmlEditDlg::OnNMClickListXml(NMHDR *pNMHDR, LRESULT *pResult)
{
	
	LPNMITEMACTIVATE pNMItemActivate  =  reinterpret_cast < LPNMITEMACTIVATE > (pNMHDR);

	LVHITTESTINFO info;
	info.pt  =  pNMItemActivate -> ptAction;

	if (m_iLastState == VALUE_EDIT)
	{
		
		if (m_xmlListControl.SubItemHitTest( & info)  !=   - 1  )
		{
			int hitRow  =  info.iItem;
			int hitCol  =  info.iSubItem;
			if (hitRow == nhitRow&&hitCol == nhitCol)
			{
				return;
			}
		}
		
		if (m_edit.m_hWnd  !=  NULL)
		{
			m_edit.ShowWindow( 0 );
			if (nhitRow  !=   - 1 )
			{
				CString text;
				m_edit.GetWindowText(text);

				m_iLastState = VALUE_REGULAR;

				m_xmlListControl.SetItemText(nhitRow, nhitCol, text);
			}
		}
		nhitCol  =  nhitRow  =   - 1 ;
		
	}
	
	* pResult  =   0 ;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章