Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

18.01.2007, 20:36

API: Listbox elemente bekommen wie?

Hallo.
Ich würde gerne wissen wie ich das electierte Objekt einer Lisbox herrausgekomme! Also den text.
Geht das?
Wenn ja wie?

Gruß Flo

PS: Es muss der text sein da die Listbox dynamisch gefüllt wird. IDs sind da eher unangepasst ;).

big_muff

Alter Hase

Beiträge: 460

Wohnort: Schweiz

Beruf: Informatikstudent (4. Semester)

  • Private Nachricht senden

2

18.01.2007, 20:43

Bitte lern doch mal mit der MSDN umzugehen :(

Zeitaufwand: 20 Sekunden
LB_GETCURSEL und LB_GETTEXT, vielleicht noch LB_GETTEXTLEN
Nur Idioten halten Ordnung, ein Genie beherrscht das Chaos.[size=7]

[/size]HardFate - Ein Start, Ein Ziel, Viele Wege[size=7]

[/size]Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.

3

18.01.2007, 21:22

Sry. Aber ich check diese seite nicht. sry :(
könntest du mir ein link schicken?
gruß Flo

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

18.01.2007, 21:37

was ist an der msdn so kompliziert?^^

wenn dus noch nicht machst, solltest du dir wirklich angewöhnen mit der msdn zu arbeiten ;)
ohne msdn WinAPI zu machen ist wie blind autofahren...

5

19.01.2007, 19:21

Ich weiß nicht wo was ist! bei der suche kommt dann immer diese VB.
Naja:

C-/C++-Quelltext

1
2
3
4
char* tListbox::select(){

return (char*)SendMessage(hListbox, LB_GETITEMDATA, 0, 0);     
}


Warum klappt das nicht?
Gruß Flo

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

19.01.2007, 19:24

was klappt dabei nicht?

kommt 0 zurück, stürzt es ab,...!?

hast du überhaupt gelesen was big_muff geschrieben hat?
LB_GETITEMDATA war da nirgendo erwähnt oder?

Zitat von »"MSDN"«


This message is sent by an application to retrieve the application-defined 32-bit value associated with the specified list box item.


...

so in der art könnt ich mir das schon eher vorstellen:

C-/C++-Quelltext

1
2
3
4
char buffer[200];
int cursel = SendMessage(hListbox, LB_GETCURSEL, 0, 0);
//evtl. erst die benötigte buffergröße mit LB_GETTEXTLEN herausfinden

SendMessage(hListbox, LB_GETITEMDATA, (WPARAM) cursel, (LPARAM)buffer);


der dritte sucheintrag den die msdn für "list box" bringt ist übrigens eine komplette referenz für das list box control.

7

19.01.2007, 20:41

Sry ich schaffs nicht!
Das programm kackt dauernt ab!
Brauche hilfe!
Gruß Flo
PS: im klartext: kann mir einer den ganzen code schicken ;) ?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

19.01.2007, 20:50

^^
poste mal den ganzen code...

9

19.01.2007, 20:52

Also so klappt es da ich die Files auch in der reihenfolge einfüge!
Doch es ist nicht gerade das schnellste.
Hier der ganze code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
class tListbox
{
      private: 
               int id;
      
      public: void creat(HWND hwnd, LPARAM lParam, int x, int y, int Id);
              HWND hListbox;
              void add(char *text);
              char* select();
              void destroy();
              void Visible(bool ja); 
      
      };
      
void tListbox::Visible(bool ja)
{
     if (ja){
      ShowWindow (hListbox, false);       
     }else{
           ShowWindow (hListbox, true);  
           }
     
     }      

void tListbox::creat(HWND hwnd, LPARAM lParam, int x, int y, int Id)
{
id=Id;
hListbox = CreateWindow(  "listbox",
                                  NULL,
                                  WS_CHILD | WS_VISIBLE | WS_BORDER |  WS_VSCROLL|ES_AUTOVSCROLL|LBS_NOTIFY|LBS_SORT|LBS_HASSTRINGS,
                                  x, y, 200, 300,
                                  hwnd,
                                  (HMENU)id,
                                  ((LPCREATESTRUCT) lParam) -> hInstance,
                                  NULL);
                                  

     
}

void tListbox::destroy(){
DestroyWindow(hListbox);
}


void tListbox::add(char *text){
     

     

SendMessage(hListbox, LB_ADDSTRING, (WPARAM) 0, (LPARAM)  text);
     
}

char* tListbox::select(){

char *name="Nix";

int cursel = SendMessage(hListbox, LB_GETCURSEL, 0, 0); 
into_Logbuch(cursel, false);

DIR *hdir;
struct dirent *entry;
int anzahl_files=0;
hdir = opendir("C:/Versicherungen/");



    do
    {
        entry = readdir(hdir);
        if (entry)
        {
            
            if (anzahl_files==cursel+2){
            
            name=entry->d_name;
            into_Logbuch(name, false);
            break;
            }  
            
            anzahl_files++;         
        }
        
    } while (entry);

closedir(hdir);


return name;    
}


Gruß Flo

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

10

19.01.2007, 21:50

Sorry, aber wenn man den Code sieht, wird einem ganz schlecht.
Absolut uneinheitliche Benennung, unsystematische Einrückung etc..
Sowas will sich sicher keiner freiwillig angucken.

Werbeanzeige