pointer



  • (LPARAM)&pointer sicher nicht, da pointer bereits ein (konstanter) Zeiger auf den Datenblock ist.
    Würde eher darauf tippen das deine Listbox irgendwelche Styles hat die dir im Wege stehen. Ich würde solche Arrays auch immer mit Nullen initialisieren das erleichtert die Fehlerdiagnose, die Zeichen könnten der zufällige Inhalt der char's sein:

    char pointer[255] = {'\0'};

    Und dann mal sehen ob die Zeichen immer noch kommen, wenn nicht liegt der Fehler ganz woanders, z.B. falscher Fenster Handle.



  • Hi,

    mit diesen Ergänzungen habe ich keine Steuerzeichen mehr.

    Original erstellt von <Spector>:
    **>
    char pointer[255] = {'\0'};

    Und dann mal sehen ob die Zeichen immer noch kommen, wenn nicht liegt der Fehler ganz woanders, z.B. falscher Fenster Handle.**

    Aber,

    ShowMessage((char*)pointer);
    

    zeigt mir ein leeres Fenster. Das Handle muss stimmen, da ich mit

    SendMessage(hParent1, LB_GETcount,0,0);
    

    die Anzahl der Zeilen in der Listbox zurückbekomme.

    cookie_woman



  • MessageBox(NULL, pointer, NULL, MB_OK);



  • Hi,

    für eure schnelle Hilfe danke ich ersteinmal.

    Original erstellt von f00lish:
    **müsste es nicht

    SendMessage(hParent1, LB_GETTEXT,(WPARAM)0,(LPARAM)&pointer);
    

    heissen? und bist du sicher, das hParent1 eine listbox ist. nur vom namen her sieht es nicht so aus.. 😕
    **

    Glaube nicht.

    Original erstellt von f00lish:
    **
    egal, probier es doch so, ist schöner:

    LPTSTR pszText = NULL;
    LRESULT nLength = SendMessage(hParent1, LB_GETTEXTLEN, (WPARAM)nIndex, 0);
    pszText = new TCHAR[nLength];
    SendMessage(hParent1, LB_GETTEXT, (WPARAM)nIndex, (LPARAM)pszText);
    [..]
    MessageBox(0,(char*)pointer, NULL, MB_OK);
    delete[] pszText;
    

    **

    Dies bringt mir auch ein leeres Fenster (Titel: Fehler) wie vorher auch. 😕 😕 😕

    cookie_woman



  • Hi,

    danke für eure Hilfe.
    Mein Code sieht nun so aus:

    char pointer[250]={'\0'}; 
    HWND hParent   = FindWindow("TEST","Titel"); 
    HWND hParent1 = FindWindowEx(hParent,0,"Listbox",0); 
    DWORD Index = SendMessage(hParent1,LB_GETCOUNT,0,0); 
    int i; 
    for (i=0; i<Index; i++) 
    { 
    SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(long)&pointer); 
    ShowMessage(pointer);
    

    Das funzt auch. Allerdings beinhaltet die Ausgabe am Anfang und mittendrinn ein Tab-zeichen. Nach dem letzten Tab sind normale Buchstaben, die bis zum EOL wegkönnen. Wie könnte ich diese Zeichen in der for-Schleife schon wegbekommen?
    Meine Überlegung war, "i" in eine variable zu schreiben und/oder die Daten in ein Textfile abzulegen.
    Ähnlich diesem hier:

    scanf("%[^\n]",name);
    

    Hier fehlt mir aber der zündende Gedanke.

    cookie_woman



  • Wenn du schon Borland benutzt, warum dann das ganze WinAPI-Zeugs???



  • Hi,

    Original erstellt von WebFritzi:
    Wenn du schon Borland benutzt, warum dann das ganze WinAPI-Zeugs???

    Das ist momentan nicht anders möglich, da ich auf eine externe Application zugreife. Oder hast du eine andere Möglichkeit??

    cookie_woman





  • Original erstellt von cookie_woman:
    **```cpp
    char pointer[250]={'\0'};
    HWND hParent = FindWindow("TEST","Titel");
    HWND hParent1 = FindWindowEx(hParent,0,"Listbox",0);
    DWORD Index = SendMessage(hParent1,LB_GETCOUNT,0,0);
    int i;
    for (i=0; i<Index; i++)
    {
    SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(long)&pointer);
    ShowMessage(pointer);

    
      
      
      
    Das funzt auch. Allerdings beinhaltet die Ausgabe am Anfang und mittendrinn ein Tab-zeichen. Nach dem letzten Tab sind normale Buchstaben, die bis zum EOL wegkönnen. Wie könnte ich diese Zeichen in der for-Schleife schon wegbekommen?  
    Meine Überlegung war, "i" in eine variable zu schreiben und/oder die Daten in ein Textfile abzulegen.  
    Ähnlich diesem hier:  
    
    ```cpp
    scanf("%[^\n]",name);
    

    Hier fehlt mir aber der zündende Gedanke.

    cookie_woman**

    Hi,

    hat nun jemand eine Idee???

    cookie-woman



  • Original erstellt von cookie_woman:
    **```cpp
    char pointer[250]={'\0'};
    // [...]
    SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(long)&pointer);

    Wie schon gesagt: &pointer ist falsch.
    lParam muss ein LPTSTR sein (siehe hier). &pointer ist ein zeiger auf einen Zeiger auf einen Buffer. Lass den Adressoperator & weg.

    [ Dieser Beitrag wurde am 16.06.2003 um 13:54 Uhr von cd9000 editiert. ]



  • Sorry,

    SendMessage(hParent1,LB_GETTEXT, (WPARAM)i,(LPARAM)pointer);
    

    ich hatte vergessen beim copy & paste das & wegzunehmen. Allerdings hat die Frage sich nicht geändert.

    cookie_woman


Anmelden zum Antworten