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

09.06.2007, 14:55

LoadBitmap - Syntaxfehler!?

Hallo

ich bin mal wieder auf euere Hilfe angewiesen.

Habe mir dieses Topic angeschaut: Win API: Bitmap laden und anzeigen

Habe versucht den folgenden Code zu kompilieren:

Zitat von »"Deviloper"«

C-/C++-Quelltext

1
SendMessage(hWndBitmapCtrl,  STM_SETIMAGE,  static_cast<WPARAM)>(IMAGE_BITMAP),  reinterpret_cast<LPARAM>(LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(TEST_BMP)));


Allerdings spuckt mir mein Compiler (VC++) eine Fehlermeldung aus.
Da fehlt ein ")" am Ende. Also hab ich einfach eine Klammer mehr hingesetzt und jetzt bekomme ich zwar nicht mehr den Fehler das ein ")" fehlt aber trotzdem einen Syntaxerror: ")".

Könnt ihr mir sagen was ich falsch mache?
Hier der Sourcecode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
  hBMP = CreateWindow ("STATIC",
                        "",
                        WS_VISIBLE | SS_BITMAP | WS_BORDER | WS_CHILD, 
                        50, 25,
                        90, 60,
                        hWnd,
                        NULL,
                        hInst,
                        NULL);


SendMessage(hBMP,  STM_SETIMAGE,  static_cast<WPARAM)>(IMAGE_BITMAP), reinterpret_cast<LPARAM>(LoadBitmap(GetModuleHandle(NULL), MAKEINTERSOURCE(BMP_SAMPLE))));


Fehler:

Zitat


.\main.cpp(157) : error C2059: Syntaxfehler: ')'

Zeile 157 ist die "SendMessage"-Zeile aus dem Code oben.

Hoffe ihr seid bei dem super Wetter trotzdem online und könnt mir helfen. ;)

Nette Grüße
SaRu_

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

09.06.2007, 15:01

C-/C++-Quelltext

1
static_cast<WPARAM)>(IMAGE_BITMAP)


Direkt nach WPARAM is dir ne Klammer mit reingerutscht.

P.S.: Hier fängts grad an zu donnern... Von wegen gutem Wetter! ;-)
@D13_Dreinig

3

09.06.2007, 15:30

Zitat von »"David_pb"«

C-/C++-Quelltext

1
static_cast<WPARAM)>(IMAGE_BITMAP)


Direkt nach WPARAM is dir ne Klammer mit reingerutscht.


:oops:
Und ich hab bald eine halbe Stunde gesucht und gesucht und nix gefunden.
Vielen Dank!

Zitat von »"David_pb"«


P.S.: Hier fängts grad an zu donnern... Von wegen gutem Wetter! ;-)


Schade für dich! Bei uns strahlt die Sonne schon die ganzen letzten Tage. 8)

Gruß
SaRu_

*EDIT*:

Bekomme nun keine Fehlermeldungen mehr aber es läuft trotzdem nicht.
Hat jemand eine Idee woran es liegt?

main.cpp

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
#include <windows.h>
#include "resource.h"

...

HWND hBMP;

...

hBMP = CreateWindow ("STATIC",
                        "",
                        WS_VISIBLE | SS_BITMAP | WS_BORDER | WS_CHILD, 
                        50, 25,
                        90, 60,
                        hWnd,
                        NULL,
                        hInst,
                        NULL);

 SendMessage(hBMP,  STM_SETIMAGE,  static_cast<WPARAM>(IMAGE_BITMAP), reinterpret_cast<LPARAM>(LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_SAMPLE))));

...


resource.h

C-/C++-Quelltext

1
#define BMP_SAMPLE 100


resource.rc

C-/C++-Quelltext

1
2
3
#include "resource.h"

BMP_SAMPLE HBITMAP "sample.bmp"


Das Programm läuft ohne Fehler... nur wird eben nichts angezeigt.

Hab ich was vergessen oder hab ich da irgendwas falsch verstanden und das geht so gar nicht?

Gruß
SaRu_

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

09.06.2007, 16:24

Wo erzeugst du denn ein STATIC Fenster?
@D13_Dreinig

5

09.06.2007, 17:01

Zum erzeugen des STATIC-Fensters hab ich eine eigene Funktion die dann in der WinMain-Funktion aufgerufen wird.
Also das erzeugen des STATIC-Fensters klappt, genau so wie das erzeugen von Buttons klappt.

Nur wird halt meine Bitmap net angezeigt. :(

Gruß
SaRu_

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

6

09.06.2007, 18:35

GetModuleHandle(NULL) funktioniert nicht immer bei sowas...übergib mal die HINSTANCE. vielleicht liegts daran...

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

09.06.2007, 19:11

Zitat von »"Firefly"«

GetModuleHandle(NULL) funktioniert nicht immer bei sowas...übergib mal die HINSTANCE. vielleicht liegts daran...


Wer sagt, dass das nicht funktioniert?
@D13_Dreinig

8

10.06.2007, 09:51

Hi,

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
hBMP = CreateWindow ("STATIC",
                        "",
                        WS_VISIBLE | SS_BITMAP | WS_BORDER | WS_CHILD,
                        50, 25,
                        90, 60,
                        hWnd,
                        NULL,
                        hInst,
                        NULL);

 SendMessage(hBMP,  STM_SETIMAGE,  static_cast<WPARAM>(IMAGE_BITMAP), reinterpret_cast<LPARAM>(LoadBitmap(hInst, MAKEINTRESOURCE(BMP_SAMPLE))));


Wäre das so richtig?
Wenn ja dann klappt es auf diesem Wege auch nicht! :(

Gruß
SaRu_

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

9

10.06.2007, 11:32

Mich würde immer noch der Code UM diesen bereits geposteten Code interessieren.
@D13_Dreinig

10

10.06.2007, 12:23

Hi,

klar bekommst du den Code:

main.cpp

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
#include <windows.h>
#include "resource.h"

LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam);

HWND ErstelleHauptfenster (HINSTANCE hInst);
void ErstelleSteuerelemente (HWND hWnd, HINSTANCE hInst);

#define ID_BTN_QUIT     4000


HWND hBMP1;        
HWND hQuit;


int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrevInst,
                    LPSTR lpcmdline, int ncmdshow)
{
  HWND hWnd; 
  MSG message; 

  
  hWnd = ErstelleHauptfenster (hInst);

  
  if (hWnd == NULL)
    return (0);

  ErstelleSteuerelemente (hWnd, hInst);
   

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

  }

  
  return (int)(message.wParam);

} 





HWND ErstelleHauptfenster (HINSTANCE hInst)
{
  HWND        hWnd;        
  WNDCLASSEX  windowclass; 

  
  const char szClassName[] = "Window";

  
  windowclass.cbSize = sizeof (WNDCLASSEX);

  
  windowclass.style = CS_HREDRAW | CS_VREDRAW;


  windowclass.lpfnWndProc = WindowProc;


  windowclass.cbClsExtra = 0;
  windowclass.cbWndExtra = 0;

 
  windowclass.hInstance = hInst;


  windowclass.hIcon   = LoadIcon (NULL, IDI_APPLICATION);
  windowclass.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
  windowclass.hCursor = LoadCursor (NULL, IDC_ARROW);

 
  windowclass.hbrBackground = (HBRUSH)COLOR_BACKGROUND+1;

 
  windowclass.lpszMenuName = NULL;

 
  windowclass.lpszClassName = szClassName;

  
  if (!RegisterClassEx (&windowclass) )
    return (NULL);

  
  hWnd = CreateWindowEx (NULL,
                         szClassName,
                         "Testprogramm - Bitmap",
                         WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                         CW_USEDEFAULT, CW_USEDEFAULT,
                         400, 250,
                         NULL,
                         NULL,
                         hInst,
                         NULL);

  
  return (hWnd);

} 



void ErstelleSteuerelemente (HWND hWnd, HINSTANCE hInst)
{


  hBMP1 = CreateWindow ("STATIC",
                        "",
                        WS_VISIBLE | SS_BITMAP | WS_BORDER | WS_CHILD, 
                        50, 25,
                        90, 60,
                        hWnd,
                        NULL,
                        hInst,
                        NULL);
  


  hQuit = CreateWindow ("BUTTON",
                        "Beenden",
                        BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,
                        160, 160,
                        80, 30,
                        hWnd,
                        (HMENU)ID_BTN_QUIT,
                        hInst,
                        NULL);

  SendMessage(hBMP1,  STM_SETIMAGE,  static_cast<WPARAM>(IMAGE_BITMAP), reinterpret_cast<LPARAM>(LoadBitmap(GetModuleHandle(NULL), MAKEINTRESOURCE(BMP_SAMPLE))));


}



LRESULT CALLBACK WindowProc (HWND hWnd, UINT message,
                             WPARAM wParam, LPARAM lParam)
{
  
  switch (message)
  {
    
    case WM_DESTROY:
    {
      
      PostQuitMessage (0);
      return (0);

    }

    
    case WM_COMMAND:
    {
      switch (wParam)
      {
        case ID_BTN_QUIT:
        {
    
      PostQuitMessage (0);
      return (0);       
            

        }break;
      } break;

    }

  }

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

}



resource.h

C-/C++-Quelltext

1
#define BMP_SAMPLE 100


resource.rc

C-/C++-Quelltext

1
2
3
#include "resource.h"

BMP_SAMPLE HBITMAP "sample1.bmp"



Gruß
SaRu_

Werbeanzeige