Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

EditBox verhält sich seltsam

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 30.11.2009, 12:50    Titel: EditBox verhält sich seltsam Antworten mit Zitat

Ich rufe über einen Button eine Listbox auf, aus der ich nicht schlau werde:
Code:
Select Case message
      Case WM_CREATE
         cxString = LOWORD(GetDialogBaseUnits)
         cyString = HiWord(GetDialogBaseUnits)
         For ButtonCounter = 1 To ButtonNums
            Read   Buttons(ButtonCounter).iStyle, Buttons(ButtonCounter).szText
            hButton(ButtonCounter) = CreateWindow("button", _
                                             Buttons(ButtonCounter).szText, _
                                             WS_CHILD Or WS_VISIBLE Or _
                                             Buttons(ButtonCounter).iStyle, _
                                             3, cyString*(2*ButtonCounter), _
                                             10*cxString, 7*cyString/4, _
                                             hWnd, Cast(HMENU, ButtonCounter), _
                                             Cast(LPCREATESTRUCT, lParam)->hInstance, NULL)                              
         Next   
         Return 0
      Case WM_COMMAND
         Select Case LoWord (wParam)
            Case ID_EDIT
               hEdit = CreateWindow("edit", _
                                    "Editfeld", _
                                    WS_CHILD Or WS_VISIBLE Or WS_BORDER Or _
                                    DS_MODALFRAME Or WS_CAPTION Or WS_SYSMENU Or _
                                    WS_HSCROLL Or WS_VSCROLL Or _
                                    ES_LEFT Or ES_MULTILINE Or ES_AUTOHSCROLL Or ES_AUTOVSCROLL, _
                                    100, _
                                    50, _
                                    200, _
                                    200, _
                                    hWnd, _
                                    Cast(HMENU, ID_EDITFELD), _
                                    Cast(HINSTANCE, GetWindowLong(hwnd, GWL_HINSTANCE)), _
                                    NULL)   
               SendMessage(hEdit, EM_LIMITTEXT, 200, 0)   
               SetFocus(hEdit)
            
            Case ID_EDITFELD
               If HiWord(wParam) = EN_KILLFOCUS Then
                  Print "Editfenster hat den Focus verloren"
               ElseIf HiWord(wParam) = EN_SETFOCUS Then
                  Print "Edifenster hat den Focus erhalten"
               EndIf
'.....
end Select

Das Problem: Die Listbox erscheint, aber mit grauer Titelleiste. Damit sie den Eingabefocus bekommt, muß ich extra SetFocus() aufrufen. Sie bekommt den Focus, bleibt aber grau. Ich kann Eingaben mit der Tastatur machen, aber nicht mit der Maus (Markieren, Platzieren des Carets).

Was mache ich da falsch?
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 30.11.2009, 18:11    Titel: Antworten mit Zitat

Hast du nen Screenshot?
Habe jetzt keine Lust da noch ein Programm drum zu spinnen...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 30.11.2009, 21:07    Titel: Antworten mit Zitat

Wie mach ich das? Ich finde hier keinen Button zum einfügen von Screenshots. verwundert
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
St_W



Anmeldungsdatum: 22.07.2007
Beiträge: 956
Wohnort: Austria

BeitragVerfasst am: 30.11.2009, 22:01    Titel: Antworten mit Zitat

Screenshot einfügen:
ALT+DRUCK (bzw. nur DRUCK, wenn du den ganzen Bildschirm kopieren willst; sonst nur aktuelles Fenster)
Paint --> STRG+V --> Speichern
Bild hochladen (z.B. http://imageshack.us/ )
hier mit [img ] tags umschlossen einfügen[/img]


Eine andere Möglichkeit wäre von einer Kopie deines Programmes alles unwesentliche herauslöschen und ein ohne Änderungen lauffähiges Programm zu posten, dann wäre die Fehlersuche möglicherweise einfacher. (mMn)
_________________
Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 01.12.2009, 20:00    Titel: Antworten mit Zitat

Puuh- warum muß man es denn so umständlich machen. In anderen Foren kann man die Bilder direkt hochladen....

Ich hab den Code hier gepastet:
http://www.freebasic-portal.de/porticula/listbox-fehlerhaft-1033.html
fälschlicherweise "Listbox fehlerhaft" genannt, sollte "Editbox fehlerhaft" heißen.

Wie gesagt: Das Prog wird ohne Fehlermeldung compiliert. Die Editbox erscheint grau, als wäre sie inaktiv-, trotzdem nimmt sie Tastatureingaben an, aber keine Mausaktionen. Das aber auch nur, wenn ich SetFocus() aufrufe. Wenn man die Zeile auskommentiert, erscheint die Editbox zwar, bleibt aber inaktiv.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 01.12.2009, 23:19    Titel: Antworten mit Zitat

Das Flag DS_MODALFRAME scheint nur für Dialoge gültig zu sein.

Code:
Cast(HINSTANCE, GetWindowLong(hwnd, GWL_HINSTANCE))

Lass das lieber, es sei denn der Code ist in einer DLL gekapselt. Das ist nur umständlich und verwirrend... (Außerdem ist es selbst bei einer DLL die gleiche Instanz - Es ist nur ein anderes Modul, HINSTANCE != HMODULE)

Code:
Print "List
Da fehlt das abschließende Anführungszeichen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
max06



Anmeldungsdatum: 05.12.2004
Beiträge: 390
Wohnort: Augsburg

BeitragVerfasst am: 02.12.2009, 14:37    Titel: Antworten mit Zitat

Für schnelle Screenshots hab ich hier noch eine Version von meinem Screeny rumfliegen... zu finden unter http://screeny.max06.de/Screeny.zip ...

Wobei ich Screeny irgendwann mal neuschreiben werde... hab nur noch Teile von Source peinlich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 02.12.2009, 14:56    Titel: Antworten mit Zitat

max06 hat Folgendes geschrieben:
hab nur noch Teile von Source peinlich

Kenn ich grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elektronix



Anmeldungsdatum: 29.06.2006
Beiträge: 742

BeitragVerfasst am: 03.12.2009, 19:02    Titel: Antworten mit Zitat

28398 hat Folgendes geschrieben:
Das Flag DS_MODALFRAME scheint nur für Dialoge gültig zu sein.

Habs gelöscht- hat aber nichts bewirkt. Das Editfenster wird immer noch grau dargestellt und nimmt keine Mausaktionen an.
Zitat:

Code:
Cast(HINSTANCE, GetWindowLong(hwnd, GWL_HINSTANCE))

Lass das lieber, es sei denn der Code ist in einer DLL gekapselt. Das ist nur umständlich und verwirrend... (Außerdem ist es selbst bei einer DLL die gleiche Instanz - Es ist nur ein anderes Modul, HINSTANCE != HMODULE)

Das kann ich nicht einfach weglassen, sonst beschmeißt mich der Compiler mit einem "Argument count mistmatsch- äh: mismatch." Ich kann den Typecast löschen, aber dann bekomme ich die Warnung "passing Pointer to scalar." Ich hab mir das in C angewöhnt, weil ich da einen Compilerfehler bekommen hätte. Habs halt in FB übernommen, damit alles sauber und Fehler-/Warnungsfrei abläuft.
_________________
Und die Grundgebihr is aa scho drin- DOS is jo nett.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 03.12.2009, 19:03    Titel: Antworten mit Zitat

GetModuleHandle(NULL) zwinkern
Naja ich weiß jetzt spontan auch nicht mehr weiter...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Windows-spezifische Fragen Alle Zeiten sind GMT + 1 Stunde
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.

 Impressum :: Datenschutz