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

Thunder

Frischling

  • »Thunder« ist der Autor dieses Themas

Beiträge: 15

Wohnort: PK

  • Private Nachricht senden

11

17.08.2006, 21:14

Kann mir denn echt keiner helfen? Ihr habts doch alle drauf... *schmoll*
Nee, aber versucht mal bitte zu helfen, wäre mir echt wichtig. Wenns sonst noch Fragen gibt, dann immer raus damit!

12

17.08.2006, 22:04

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
LRESULT CALLBACK WindowProc (HWND, UINT, WPARAM, LPARAM); 
bool    InitInstance(HINSTANCE, HWND);
bool    InitControls(HWND, HINSTANCE); 
int     Vokabelauswahl; 
int     Berechnung1 (int &Vokabelauswahl); 


// IDs der Child-Fenster 

// 

#define ID_STATICTEXT      4000 
#define ID_EDITBOX         4001 
#define ID_BTN_UEBERNEHMEN 4002 
#define ID_BTN_BEENDEN     4003 
#define ID_BTN_HILFE       4004 
#define ID_BTN_NEXT        4005 
#define ID_STATICTEXT2     4006 

// Globale Variablen 

HWND hText; 
HWND hText2;
HWND hEditBox;
HWND hUebernehmen;
HWND hBeenden;
HWND hHilfe; 
HWND hNext; 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpCmdLine*/, int /*nCmdShow*/) 
{ 
    HWND    hWnd    = NULL;
    MSG     msg;

    if (!InitInstance(hInstance, hWnd)) 
        return 0; 

    while (GetMessage(&msg, NULL, 0, 0)) 
    { 
        TranslateMessage(&msg); 
        DispatchMessage(&msg); 
    } 

    return (int)(msg.wParam); 
}

bool InitInstance(HINSTANCE hInstance, HWND hWnd) 
{ 
    WNDCLASSEX  wcex;
    const char  szClassName[] = "Zweites Fenster"; 

    wcex.cbSize         = sizeof (WNDCLASSEX); 
    wcex.style          = CS_HREDRAW | CS_VREDRAW; 
    wcex.lpfnWndProc    = WindowProc; 
    wcex.cbClsExtra     = 0; 
    wcex.cbWndExtra     = 0; 
    wcex.hInstance      = hInstance; 
    wcex.hIcon          = LoadIcon(NULL, IDI_APPLICATION); 
    wcex.hIconSm        = LoadIcon(NULL, IDI_APPLICATION); 
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW); 
    wcex.hbrBackground  = (HBRUSH)COLOR_BACKGROUND+1; 
    wcex.lpszMenuName   = NULL; 
    wcex.lpszClassName  = szClassName; 

    if (!RegisterClassEx(&wcex)) 
        return false; 

    hWnd = CreateWindow(szClassName, "Eine kleine Anwendung", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 300, 220, NULL, NULL, hInstance, NULL); 

    if (!hWnd)
    {
        MessageBox(0, 0, 0, 0);
        return false;
    }

    ShowWindow(hWnd, SW_SHOW);
    UpdateWindow(hWnd);

    return true; 
}

bool InitControls(HWND hWnd, HINSTANCE hInstance) 
{ 
    hText       = CreateWindow ("STATIC", "Beispielvokabel", WS_VISIBLE | WS_CHILD | ES_CENTER, 0, 0, 300, 20, hWnd, (HMENU)ID_STATICTEXT, hInstance, NULL); 
    
    if (!hText)
        return false;
    
    hText2      = CreateWindow ("STATIC", "Richtig ist: ", WS_VISIBLE | WS_CHILD | ES_CENTER, 0, 40, 300, 30, hWnd, (HMENU)ID_STATICTEXT2, hInstance, NULL); 

    if (!hText2)
        return false;

    hEditBox = CreateWindow ("EDIT", 
                            "Bitte Text eingeben", 
                            WS_VISIBLE | WS_CHILD | WS_BORDER | ES_CENTER, 
                            0, 20, 
                            300, 20, 
                            hWnd, 
                            (HMENU)ID_EDITBOX, 
                            hInstance, 
                            NULL); 

  // "Übernehmen"-Button als Child-Fenster erstellen 

  // 

  hUebernehmen = CreateWindow ("BUTTON", 
                           "Übernehmen", 
                           BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, 
                           20, 80, 
                           95, 40, 
                           hWnd, 
                           (HMENU)ID_BTN_UEBERNEHMEN, 
                           hInstance, 
                           NULL); 

  // "Beenden"-Button als Child-Fenster erstellen 

  // 

  hBeenden = CreateWindow ("BUTTON", 
                           "Beenden", 
                           BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, 
                           175, 80, 
                           95, 40, 
                           hWnd, 
                           (HMENU)ID_BTN_BEENDEN, 
                           hInstance, 
                           NULL); 


    hHilfe = CreateWindow ("BUTTON", 
                           "Hilfe", 
                           BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, 
                           175, 135, 
                           95, 40, 
                           hWnd, 
                           (HMENU)ID_BTN_HILFE, 
                           hInstance, 
                           NULL); 


    hNext = CreateWindow ("BUTTON", 
                           "Next", 
                           BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD, 
                           20, 135, 
                           95, 40, 
                           hWnd, 
                           (HMENU)ID_BTN_NEXT, 
                           hInstance, 
                           NULL); 

    return true;
} 

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    switch (message) 
    { 
    case WM_CREATE:
        {
            InitControls(hWnd, GetModuleHandle(0));
            return 0;
        } break;
    case WM_KEYDOWN: 
        { 
            switch (wParam) 
            { 
            case VK_TAB: 
                { 
                    Berechnung1(Vokabelauswahl); 
                } break;
            case VK_ESCAPE: 
                { 
                    SendMessage(hWnd, WM_CLOSE, 0, 0); 
                } break;
            } 
        } break;
    case WM_DESTROY: 
        { 
            PostQuitMessage(0); 
            return 0; 
        } break;
    case WM_COMMAND: 
        {  
            switch (wParam) 
            { 
                case ID_BTN_UEBERNEHMEN: 
                { 
                    if (Vokabelauswahl == 1) 
                        SetWindowText (hText2, "Richtig ist: Insel"); 
                    else if (Vokabelauswahl == 2) 
                        SetWindowText(hText2, "Richtig ist: Herr");
                } break;
                case ID_BTN_NEXT: 
                { 
                    Berechnung1(Vokabelauswahl); 
                } break;
                case ID_BTN_HILFE: 
                { 
                    MessageBox(hWnd, "Hier kommt dann die Hilfe hin...", "Hilfe", MB_OK | MB_ICONINFORMATION); 
                } break;
                case ID_BTN_BEENDEN: 
                { 
                    if (MessageBox(hWnd, "Wirklich beenden?", "Programm beenden", MB_YESNO | MB_ICONQUESTION)  == IDYES) 
                        SendMessage(hWnd, WM_CLOSE, 0, 0);
                } break;
            }
        } break; 
    } 

    return DefWindowProc(hWnd, message, wParam, lParam); 
}

int Berechnung1(int &Vokabelauswahl) 
{ 
    srand (timeGetTime ()); 
    Vokabelauswahl = (rand ()%2 )+1;

    if (Vokabelauswahl == 1) 
    { 
        SetWindowText(hText, "insula f."); 
        SetWindowText(hEditBox, ""); 
        SetWindowText(hText2, "Richtig ist: "); 
    } 

    else if (Vokabelauswahl == 2) 
    { 
        SetWindowText(hText, "dominus m."); 
        SetWindowText(hEditBox, ""); 
        SetWindowText(hText2, "Richtig ist: "); 
    } 

    return (0); 
}

So hatte keine Zeit für nen paar Funktionen die noch zu überarbeiten... aber dein Code war ja mal grauen voll! :D Ich guck mal ob ich dir das morgen weiter umbau :D
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

13

17.08.2006, 22:15

Nach dem abfragen des Buttons Next und Übernehmen und Hilfe musst du den Fokus zurück auf das Hauptfenster setzen. Dies machst du mit SetFokus. Dieser Funktion übergibst du nur das Handle des Haupfensters.
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Thunder

Frischling

  • »Thunder« ist der Autor dieses Themas

Beiträge: 15

Wohnort: PK

  • Private Nachricht senden

14

18.08.2006, 18:12

Jo, das ist genau das, was ich gesucht hab! Aber ich kenne diese Funktion Setfokus nicht! Könntest du mir mal kurz erklären, wie ich die benutze?
Aber schon mal dankeschön!

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

16

18.08.2006, 18:44

Zitat von »"Anfänger"«

Nach dem abfragen des Buttons Next und Übernehmen und Hilfe musst du den Fokus zurück auf das Hauptfenster setzen. Dies machst du mit SetFokus. Dieser Funktion übergibst du nur das Handle des Haupfensters.
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Thunder

Frischling

  • »Thunder« ist der Autor dieses Themas

Beiträge: 15

Wohnort: PK

  • Private Nachricht senden

17

21.08.2006, 15:51

Bin ich denn jetzt total bescheuert? Wie heißt denn das Handle meines Hauptfensters überhaupt? Müsste es nicht eigentlich hiermit klappen:

C-/C++-Quelltext

1
2
3
4
5
6
    case ID_BTN_NEXT:
    {
        Berechnung1 (Vokabelauswahl);
        HWND SetFocus (hWnd);
        return (0);
    }


Also so passiert erst mal überhaupt nix neues! Stell ich mich denn echt zu blöd an?

18

21.08.2006, 18:00

wieso setzt du ein HWND vor dein SetFokus?
und das musst du nach jeder buttonabfrage machen.
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

Thunder

Frischling

  • »Thunder« ist der Autor dieses Themas

Beiträge: 15

Wohnort: PK

  • Private Nachricht senden

19

21.08.2006, 21:05

Also das mit dem HWND stand so in der MSDN, wenn ich mich nicht irre, aber wenn ich so drüber nachdenke macht das irgendwie überhaupt keinen Sinn...
Aber Gegenfrage: Warum schreibst du denn SetFokus mit "k"? Kann man das so etwa auch schreiben?

Das Gurke

Community-Fossil

Beiträge: 1 996

Wohnort: Pinneberg

Beruf: Schüler

  • Private Nachricht senden

Werbeanzeige