JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=8f89df9fb69fae8df52bb9b777b80069Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Listboxen

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 26.09.2004, 13:01    Titel: Listboxen Antworten mit Zitat

Hallo

Ich habe in mein Dialogfeld eine Listbox eingefügt. Wie kann ich da jetzt Strings hinzufügen? Laut Doku muss man etwas mit LB_ADDSTRING machen, ich kann damit aber nix anfangen. Kennt ihr die Funktion?

THX
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
mfc++
JLI'ler


Alter: 40
Anmeldedatum: 18.02.2004
Beiträge: 163
Wohnort: Bettlä
Medaillen: Keine

BeitragVerfasst am: 26.09.2004, 13:45    Titel: Antworten mit Zitat

wenn de in mfc machst ist ganz einfach.

1. machste bei den eigenschaften der listbox die einträge zum wählen und mit ctrl+enter machste nen neuen.

Code:
test1
test2
test3
.
.
.


und dann machste ne funktion für den button:

Code:
void CProjektDlg::OnButton()
{

   UpdateData(TRUE);

   if(wert == "test")
   {
   //funktion
   }

   else if(wert == "test2")
   {
   //funktion
   }

   else if(wert == "test3")
   {
   //funktion
   }

}


so mach ich es Wink
_________________
www.teslasystems.ch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 26.09.2004, 13:54    Titel: Antworten mit Zitat

öh? eine LisBox hat keinen Button?
Ich mach's leider nicht mit mfc. Aber trotzdem danke!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DarK
Super JLI'ler



Anmeldedatum: 23.07.2002
Beiträge: 452
Wohnort: NRW
Medaillen: Keine

BeitragVerfasst am: 26.09.2004, 20:31    Titel: Antworten mit Zitat

ich hab vor kurzem erst Listboxen benutzt, hier ein Beispiel:
ich benutz auch net die MFC...

Code:

listbox = CreateMyWindow(L_LIST, hwnd, "LISTBOX", "", 625, 0, 175, 600, WS_CHILD | WS_VISIBLE | LBS_SORT | WS_VSCROLL | WS_BORDER | LBS_NOTIFY);

SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM) "test1");
SendMessage(listbox, LB_ADDSTRING, 0, (LPARAM) "test2");


das angeklickte Element frag ich folgendermaßen ab:

Code:

switch (message)                 
    {           
        case WM_COMMAND:
            switch (LOWORD(wParam))
            {
                case L_LIST:
                    switch (HIWORD(wParam))
                    {
                        case LBN_SELCHANGE:
                        int nItem;
                       
                        nItem = SendMessage(listbox, LB_GETCURSEL, 0, 0);

_________________
"Denken ist Arbeit, Arbeit ist Energie und Energie soll man sparen."

"Theorie ist, wenn man alles weiss, aber nichts funktioniert.
Praxis ist, wenn man nichts weiss, aber alles funktioniert.
Realität ist, wenn nichts funktioniert und keiner weiss warum."

"Es gehört ein wenig Mut dazu nicht das zu tun was ALLE tun"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 27.09.2004, 08:31    Titel: Antworten mit Zitat

Vielen Dank, dass hilft mir schon mehr!
Aber von welchem Typ ist "listbox"? Und CreateMyWindow gibt es garnicht? Und wie benutze ich das wenn ich die Listbox mit dem Editor eingebaut habe?

THX
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 27.09.2004, 18:04    Titel: Antworten mit Zitat

Wo genau liegt denn dein Problem? Die Dialogbox zu starten, oder Werte daraus zu bekommen und in deinem Programm zu benutzen?
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 13:24    Titel: Antworten mit Zitat

Mit der DialogBox habe ich keine problem sondern mit der ListBox und bei der weiss ich nicht wie man Werte rein oder raus bekommt, gibt es nicht ne Funktion wie SetDlgItemText?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 14:04    Titel: Antworten mit Zitat

Ich glaub bei Listbox musst du nur mit SendMessage arbeiten. Einträge dazuschreiben ist LB_ADDSTRING. Die genaue Beschreibung dafür gibts auch in der MSDN: dort einfach mal LB_ADDSTRING eingeben da wird das erklärt.

Aus dem Gedächnis ist das glaub ich SendMessage(hwnd,LB_ADDSTRING,wparam,lparam) ist aber alles ohne gewähr!!
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 14:39    Titel: Antworten mit Zitat

Ja so hab ich es auch probiert. Aber was gebe ich bei HWND an wenn ich es als resource erstellt habe? Und wie weiss er um welche Listbox es sich handelt, wenn es mehrere sind? Hat jemand vielleicht etwas beispiel code? Oder wie bekomme ich das Handle einer DialogBox?
THX
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 17:06    Titel: Antworten mit Zitat

Ich hab es mal so probiert, aber die Liste bleibt leer Sad

Code:

SendMessage(GetDlgItem(hWnd,IDC_TFRENCH),LB_ADDSTRING,0,(LPARAM)"test");
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 28.09.2004, 17:09    Titel: Antworten mit Zitat

Zitat:
lParam
Pointer to the null-terminated string that is to be added.


pointer!=const
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 17:10    Titel: Antworten mit Zitat

OK, ich hab's gerade mal ausprobiert:

1. es funkt auch mit SendDlgItemMessage:

Code:

SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"test");

und man hat in der Listbox das Wort Test stehen.

hwnd ist ja dein Fensterhandle, das übergibst du ja so oder so.
Wenn du mehere Listboxen hast, hast du ja IDC_LIST1, IDC_LIST2 usw. dadurch kannst du ja dann steuern in welche Listbox er was reinschreibst.

Das kannst zuweisen tust du am besten durch eine separate Funktion.
Bei mir sieht das z.B. so aus:

Code:

LRESULT CALLBACK startDlgProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lparam)
{
   switch(msg)
   {
      case WM_INITDIALOG:
         SetDialogInfo(hwnd);
         return TRUE;

      case WM_CLOSE:
         EndDialog(hwnd,0);
         return TRUE;

      case WM_COMMAND:
         switch(wParam) {
         case IDC_CHECK1:
            ChangeModusTo16(hwnd);
            return TRUE;
         
         case IDC_CHECK2:
            ChangeModusTo32(hwnd);
            return TRUE;

         case IDOK:
            WriteDialogInfo(hwnd);
            EndDialog(hwnd,IDOK);
            return TRUE;
         
         case IDCANCEL:
            EndDialog(hwnd,0);
            return TRUE;

         } // switch(wParam)
      
      default:
         //message was not handled
         return FALSE;

   } // switch(msg)
}


wobei die funktion SetDialogInfo(hwnd) dann z.B.
Code:

SendDlgItemMessage(hwnd,IDC_LIST1,LB_ADDSTRING,0,(LPARAM)"test");

enthalten kann.
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 17:13    Titel: Antworten mit Zitat

Beni5 hat Folgendes geschrieben:
Ich hab es mal so probiert, aber die Liste bleibt leer Sad

Code:

SendMessage(GetDlgItem(hWnd,IDC_TFRENCH),LB_ADDSTRING,0,(LPARAM)"test");


Ganz klar, mit GetDlgItem versuchst du auch markierte Einträge auszulesen und nicht Info's in die Listbox zu schreiben...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 37
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 17:38    Titel: Antworten mit Zitat

Geht jetzt, hab die Nachrichtenschleife rausgenommen, weil das in nem Tutorial so stand...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 28.09.2004, 21:06    Titel: Antworten mit Zitat

Das geht auch ohne Nachrichtenschleife??? Wußt ich auch noch nicht.
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum