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

21

27.12.2006, 22:22

Öhm sooo holt man sich sicherlich nicht eine formatierte Fehlermeldung ...

Man junge guck einmal in die verdammte MSDN -,-
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

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

22

28.12.2006, 11:35

Okay, ich habe jetzt die VAriante aus der MSDN genommen und bekomme trotzdem den gleichen Code, nämlich NULL.

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
if(hBitmap[i] == NULL) 
                { 
                    MessageBoxW(hwnd,L"Bild konnte nicht geladen werden",L"Error",0); 
                    
                    TCHAR szBuf[80]; 
                    LPVOID lpMsgBuf;
                    DWORD dw = GetLastError(); 

                    FormatMessage(
                        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
                        FORMAT_MESSAGE_FROM_SYSTEM,
                        NULL,
                        dw,
                        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                        (LPTSTR) &lpMsgBuf,
                        0, NULL );

                    wsprintf(szBuf, L" failed with error %d: %s", dw, lpMsgBuf); 
                 
                    MessageBox(NULL, szBuf, L"Error", MB_OK); 

                    LocalFree(lpMsgBuf);
                    ExitProcess(dw); 

                    return -1; 
                }


Kann mir jemand sagen, was das bedeutet, oder ist die Fehlermeldung noch immer falsch geholt?

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

23

28.12.2006, 11:43

anscheinend wurde die Bitmap nicht geladen


2. Guck dir doch mal an wie das Windows-Nachrichten System funktioniert! Es beantwortet sicher deine Fragen
3. Guck dir mal schleifenbasierte Programme an!

spacegaier

Alter Hase

  • »spacegaier« ist der Autor dieses Themas

Beiträge: 572

Beruf: Student

  • Private Nachricht senden

24

28.12.2006, 11:51

Nein tut es nicht. Mir ist die grundlegende Funktione der Windowsnachrichten bekannt, sehe aber keinen Zusammenhang zu meinem Problem kannst du mir einen Tipp geben?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

28.12.2006, 12:08

Zitat von »"spacegaier"«

Was bringt der Aufwand? Ich sehe hierin keinen Vorteil. Warum soll ich mir die alten Objekte holen, die mich doch nicht mehr interessieren, denn täten sie das hätte ich sie ja irgendwo gespeichert, oder?


spätestens beim löschen des device contextes sollten wieder die defaultobjekte drin sein, das gehört zum guten ton ;)
steht übigens auch in der msdn...

Zitat von »"MSDN"«


SelectObject()
.
.
.
Remarks
This function returns the previously selected object of the specified type.

An application should always replace a new object with the original, default object after it has finished drawing with the new object.

An application cannot select a bitmap into more than one device context at a time.


und vermutlich wird deine bitmap einfach nicht geladen. stimmen die pfade alle?
du kannst ja mal versuchen absolute statt relative pfadangaben zu verwenden und schauen ob es dann geht...

Firefly

Alter Hase

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

26

28.12.2006, 20:15

beim schleifenbasierten system folgt der ablauf nicht einem linearen prinzip. Das heißt dass alle Werte unabhängig gehalten werden. Man muss also z.B. in deinem Fall deshalb die Objekte global definieren.
Durch das Schlüsselwort static schafft man das in C++ auch ohne globale Definition...

Werbeanzeige