Focus Problem in CFormView



  • Moin erstmal 🙂

    Ich habe eine ListCtrl Klasse, in die ich eine OnPlaceEdit
    Funktionalität eingebaut habe, also, es bekommt eine editbox
    den focus, wenn man auf einen Listeneintrag klickt, um ihn dort
    zu editieren. Klappt alles wunderbar in einem Dialog.

    So, nun hab ich in meinem Projekt aber ein SplitterWindow, ein Treeview,
    und ein FormView, in den Formview ist das ListCtrl eingebettet.
    Wenn ich nun drauf klicke, erscheint erstgar kein Editfeld mehr, und
    ich kann nicht sehen was passiert, aber das getippte landet trotdem
    im Editfeld, (nur net sichtbar).

    Der Quellcode:

    void LInc::OnClick(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	LPNMITEMACTIVATE    lpNMItem = (LPNMITEMACTIVATE) pNMHDR;
    	if(lpNMItem->iItem > -1 )
    	{
    		//MessageBox("test");
    	CString str;
    	int x,y;
    	// TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    	RECT rect,rect1,rect2;
    
    	str = GetItemText(lpNMItem->iItem ,lpNMItem->iSubItem);
    
    	ListView_GetSubItemRect(m_hWnd,lpNMItem->iItem,
    		lpNMItem->iSubItem,LVIR_BOUNDS,&rect);
    	//Get the Rectange of the listControl
    	GetWindowRect(&rect1);
    	//Get the Rectange of the Dialog
    	::GetWindowRect(hwnd,&rect2);
    
    	x=rect1.left-rect2.left;
    	y=rect1.top-rect2.top;
    
    	edit->SetWindowPos((CWnd*)HWND_TOP,rect.left+x,rect.top+y-20, 
    		rect.right-rect.left - 3,
    		rect.bottom-rect.top -1,NULL);//Editbox über eintrag positionieren
    
    //	edit->Setlist(this)
    
    	edit->Init(str,lpNMItem->iItem,lpNMItem->iSubItem);
    	edit->ShowWindow(SW_SHOW);//Fernster auf Show setzten
    
    	if(edit->SetFocus()==NULL)//Fenster den Focus geben
    		MessageBox("null");
    	//Draw a Rectangle around the SubItem
    	::Rectangle(::GetDC(lpNMItem->hdr.hwndFrom),
    		rect.left,rect.top-1,rect.right,rect.bottom);//nett rummalen
    	}
    	*pResult = 0;
    }
    

    Hat jemand eine Idee woran es liegt, das das Editfeld unsichtbar bleibt im FormView ?
    Gäbe es eine Alternative zu ShowWindow ?

    Devil


Anmelden zum Antworten