void CDlgZuordnung::OnNMDblclkListZuordnung( NMHDR *pNMHDR, LRESULT *pResult )
{
if ( m_EditPopup.GetSafeHwnd() )
{
// wenn wir schon drin sind, nicht nochmal
return;
}
POINT ptMouse;
GetCursorPos( &ptMouse );
m_ListZuordnung.ScreenToClient( &ptMouse );
LVHITTESTINFO lvHTInfo;
lvHTInfo.pt = ptMouse;
int iItem, iSubItem;
HitTest( ptMouse, iItem, iSubItem );
RECT rcItem;
m_iEditItem = iItem;
m_iEditSubItem = iSubItem;
GetSubItemRect( iItem, iSubItem, rcItem );
m_ListZuordnung.ClientToScreen( &rcItem );
ScreenToClient( &rcItem );
if ( iSubItem == 0 )
{
m_EditPopup.Create( WS_BORDER | WS_CHILD | WS_VISIBLE | ES_WANTRETURN | ES_NUMBER, rcItem, this, 17 );
m_EditPopup.SetFont( GetFont() );
m_EditPopup.SetWindowText( m_ListZuordnung.GetItemText( iItem, iSubItem ) );
m_EditPopup.SetSel( 0, -1 );
m_EditPopup.SetFocus();
m_EditPopup.SetLimitText( 8 );
}
else if ( iSubItem == 1 )
{
// IP
m_EditPopup.Create( WS_BORDER | WS_CHILD | WS_VISIBLE | ES_WANTRETURN, rcItem, this, 17 );
m_EditPopup.SetFont( GetFont() );
m_EditPopup.SetWindowText( m_ListZuordnung.GetItemText( iItem, iSubItem ) );
m_EditPopup.SetSel( 0, -1 );
m_EditPopup.SetFocus();
}
else if ( iSubItem == 2 )
{
// MAC
m_EditPopup.Create( WS_BORDER | WS_CHILD | WS_VISIBLE | ES_WANTRETURN, rcItem, this, 17 );
m_EditPopup.SetFont( GetFont() );
m_EditPopup.SetLimitText( 12 );
m_EditPopup.SetWindowText( m_ListZuordnung.GetItemText( iItem, iSubItem ) );
m_EditPopup.SetSel( 0, -1 );
m_EditPopup.SetFocus();
}
*pResult = 0;
}
BOOL CDlgZuordnung::OnCommand( WPARAM wParam, LPARAM lParam )
{
if ( (HWND)lParam == m_EditPopup.GetSafeHwnd() )
{
if ( HIWORD( wParam ) == EN_KILLFOCUS )
{
m_EditPopup.DestroyWindow();
return TRUE;
}
}
return CPropertyPage::OnCommand(wParam, lParam);
}
BOOL CDlgZuordnung::PreTranslateMessage( MSG* pMsg )
{
if ( ( pMsg->hwnd == m_EditPopup.GetSafeHwnd() )
&& ( pMsg->message == WM_KEYDOWN ) )
{
if ( pMsg->wParam == VK_RETURN )
{
EditEnd();
return TRUE;
}
else if ( pMsg->wParam == VK_ESCAPE )
{
EditEnd();
return TRUE;
}
}
return CPropertyPage::PreTranslateMessage(pMsg);
}
void CDlgZuordnung::EditEnd()
{
CString cstrGnu;
m_EditPopup.GetWindowText( cstrGnu );
m_ListZuordnung.SetItemText( m_iEditItem, m_iEditSubItem, cstrGnu );
m_EditPopup.DestroyWindow();
SetModified();
}