Welche Funktion in einem CListCtrl



  • Die Taste musst du nicht in der Resource angeben.

    Die VK_irgendwas kannst du auch so benutzen. VK_ENTER (oder VK_RETURN???) in deinem Fall.

    Hier ist ein Ausschnitt aus meiner einen keydownfunktion, da siehst du, wie man an die Taste kommt:

    void CArtikelView::OnKeydownLscArtikel(NMHDR* pNMHDR, LRESULT* pResult) 
    {
    	LV_KEYDOWN* pLVKeyDown = (LV_KEYDOWN*)pNMHDR;
    
    	// Index der markierten Zeile holen
    	int n = m_lscArtikel.GetSelectionMark();
    
    	// Ist überhaupt etwas ausgewählt?
    	if (n > -1)
    	{
    		// Index anpassen
    		if ((pLVKeyDown->wVKey == VK_UP) && (n > 0))
    		{
    			// Pfeil-rauf also einen Index runter
    			n--;
    		}
    //...
    


  • Vielen Dank,

    jetzt habe ich nur das Problem, dass er in diese Funktion garnicht springt ??

    Woran kann das liegen ??

    Gruß
    andy_mann



  • Hast du sie per Assistent eingebunden? Wie sieht deinen MessageMap aus? Wie sieht die vom Control selbst aus? (Vielleicht "verschluckt" es die Nachricht einfach.)



  • Such mal nach OnEndLabelEdit bzw. (On)BeginLabelEdit.

    Devil



  • Ja ich habe es über den asistemten gemacht,

    er findet keines der gesuchten verweise, nur OnEndLabelEdit , das ist aber in einer Funktion einer anderen Klasse.

    Gruß
    andy_mann





  • Zeig bitte mal deinen Messagemap - ohne kann ich dir nicht helfen, nur im Nebel stochern...



  • Hallo,

    .h
    public:
    ..
    .
    .
    afx_msg void OnLvnKeydownListVariableBenutzer(NMHDR *pNMHDR, LRESULT *pResult);
    
    .cpp
    BEGIN_MESSAGE_MAP(CAdminSeite1, CDialog)
    ..
    .
    .
    ON_NOTIFY(LVN_KEYDOWN, IDC_LIST_VARIABLE_BENUTZER, OnLvnKeydownListVariableBenutzer)
    END_MESSAGE_MAP()
    

    Danke
    andy_mann



  • Und in der Listcontrol Klasse? (Wegen Verschlucken)



  • .h
    public:
    ..
    .
    CEditList m_ListVariablen; // ist von CListCtrl abgeleitet
    
    .cpp
    ..
    .
    DDX_Control(pDX, IDC_LIST_VARIABLE_BENUTZER, m_ListVariablen);
    

    Gruß
    andy_mann



  • Nein, ich meine in der Klasse CEditList. Die kann ja auch eine Messagemap haben...



  • Ups, oh ja....

    BEGIN_MESSAGE_MAP(CEditList, CListCtrl)
    	//{{AFX_MSG_MAP(CEditList)
    	ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEndlabeledit)
    //	ON_NOTIFY_REFLECT(NM_CLICK, OnClick)
    	ON_NOTIFY_REFLECT(LVN_KEYDOWN, OnKeydown)
    	ON_WM_CREATE()
    	//}}AFX_MSG_MAP
    	ON_NOTIFY_REFLECT(NM_DBLCLK, OnNMDblclk)
    END_MESSAGE_MAP()
    

    daran wird es wohl ligen....

    Aber was muß ich jetzt tun ??

    Gruß
    andy_mann



  • Ich hab leider keine Ahnung, was dieses ON_NOTIFY_REFLECT ist - aber wenn ich die MSDN richtig verstehe, dann ist es der Grund.

    If, in your parent window class, you supply a handler for a specific WM_NOTIFY message or a range of WM_NOTIFY messages, your handler will be called only if the child control sending those messages does not have a reflected message handler through ON_NOTIFY_REFLECT().

    Hat das Teil auch eine Funktion dazu? 😕
    Vielleicht kannst du da drin ja deine eigene Nachricht an pParent abschicken. Dann brauchst du nur noch reagieren. Also, wenn da was passendes ist, zeig doch mal... 🙂


Anmelden zum Antworten