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

07.08.2012, 20:19

Problem mit Windows-Anwendung

Hallo Leute,

ich habe gestern beschlossen mir eine kleine Windows-Anwendung zu schreiben und wollte in einem "STATIC" handle, Text ausgeben, der sich auf Knopfdruck ändert. Dabei hat sich sofort ein Problem ergeben.
Hier ist der Teil in der Callback-Funktion der sich darum kümmern soll:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
case ID_BUTTON_TEXT:
 {
 char Text[256];  //char-Array erstellen

 strcpy_s (Text, "jo");  //char-Array füllen
 SetWindowText (hText2, Text);  //neuen Text ins Fenster schreiben
 
 return (0);

 }



Beim Kompilieren erhalte ich keinerlei Fehler, doch wenn ich das Programm dann ausführe, erscheint der text (im Beispiel: jo) nicht. Fenster ist richtig konfiguriert!
Vielen Dank für eure Hilfe :D derrod

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »derrod« (07.08.2012, 20:30)


S4My

unregistriert

2

07.08.2012, 20:24

Code-Tags ^^ .

3

07.08.2012, 20:26

sorry :D vergessen

4

07.08.2012, 20:35

Wird überhaupt zu ID_BUTTON_TEXT (sowas kenne ich garnicht) gewechselt? Was hat das mit einem Button zu tun?
Btw: SetWindowText setzt den Fenstertitel. ;)

FSA

Community-Fossil

  • Private Nachricht senden

5

07.08.2012, 20:38

Zitat von »Delop«

Wird überhaupt zu ID_BUTTON_TEXT (sowas kenne ich garnicht) gewechselt? Was hat das mit einem Button zu tun?

Das ist eine ID eines Steuerelements, die er selbst "erfunden" hat.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

6

07.08.2012, 21:03

genau! das ist eine id die ich mittels #define erzeugt habt!
was für einen befehl sollte ich denn stattdessen nutzen?

FSA

Community-Fossil

  • Private Nachricht senden

7

07.08.2012, 21:04

Zeig mal deine Nachrichtenschleife.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

8

07.08.2012, 21:18

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
LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam)
{
  // Messages auswerten
  switch (message)
  {
    // Fenster schließen? 
    case WM_DESTROY:
    {
      // Nachricht zum Beenden schicken
      PostQuitMessage (0);
      return (0);

    }

    case WM_COMMAND:
    {
      switch (wParam)
      {
        case ID_BUTTON_TEXT:
 {
 char Text[256];  //char-Array erstellen

 strcpy_s (Text, "jo");  //char-Array füllen
 SetWindowText (hText2, Text);  //neuen Text ins Fenster schreiben
 
 return (0);

 }
        
        // Wurde "Beenden" angeklickt?
        case ID_BTN_BEENDEN:
        {
          int Resultat; // Rückgabewert der Messagebox

          // Messagebox für Sicherheitsabfrage
          Resultat = MessageBox (hWnd, "Wirklich beenden?",
                                 "Programm beenden",
                                 MB_YESNO | MB_ICONQUESTION);

          // Wurde "Ja" angeklickt?
          if (Resultat == IDYES)
          {
            // Ja, also Programm beenden
            PostQuitMessage (0);
            return (0);

          }

          // Nein, also ganz normal weiter
          return (0);

        }
      } break;
    } break;
  }

  // Die Nachricht wurde nicht von uns verarbeitet, also
  // von Windows verarbeiten lassen
  return (DefWindowProc (hWnd, message, wParam, lParam) );

} // WindowProc

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

07.08.2012, 21:21

Du kannst das Stringliteral direkt an SetWindowText() übergeben. Was liefert SetWindowText() zurück? Wenn FALSE: Was sagt GetLastError()? Hat hText2 überhaupt einen gültigen Wert?

10

07.08.2012, 21:22

ah logisch! da fehlt mir einfach die erfahrung xD ich kann ja erstmal prüfen ob das erfolgreich ist... sorry :/

Werbeanzeige