Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » QueryInterface

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.07.2005, 21:25 Uhr
Antialc



Hi

Bin hier noch absolut neu. Habe Programmieren als LK in der Schule. Bin also kein absoluter Noob. Die meisten Fragen dürften trotzdem ziemlich blöd klingen. Von mir aus flamt mich halt zu. So lange ich schlauer dadurch werd

Ich versuch mich gerade mit der WinApi und DirectDraw.


C++:
LPDIRECTDRAW7            lpDDraw7 = NULL;

if (lpDDraw->QueryInterface(IID_IDirectDraw7, (void **)&lpDDraw7)!= DD_OK)
    {
        MessageBox(hwnd, "Keine Schnittstelle zu DirectDraw7 vorhanden", NULL, MB_OK);
        return FALSE;
    }



Hier hab ich Probleme. Er sagt:
main.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IDirectDraw7
main.obj : error LNK2019: Nicht aufgelöstes externes Symbol '_DirectDrawCreate@12', verwiesen in Funktion '"int __cdecl InitDirectDraw(struct HWND__ *)" (?InitDirectDraw@@YAHPAUHWND__@@@Z)'
Debug/API.exe : fatal error LNK1120: 2 unaufgelöste externe Verweise

Ich war ja heilfroh, dass ich wenigstens mal ne Objektdatei bekommen hab. Aber er währe schon schön wenn der Rest auch funktionieren würde.
(windows.h und ddraw.h sind included)
--
Microsoft Visual C++.NET Version 7
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.07.2005, 22:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Ich vermute mal du musst noch ne lib deinem projekt hinzufügen...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.07.2005, 06:18 Uhr
Antialc



Hhmm.
Das is aber blöd. Jetzt wollte ich durch die WinApi und DirectDraw doch endlich mal unabhänig von irgendwelchen blöden libs sein.
Gibt es überhaupt eine directx lib?

Wenn ja könnt mir vll mal jmd den link veraten. Hab nix gefunden. Weder bei google noch bei microsoft. Komm bloß immer wieder zu diesem Kai Schmiegelt mit seinem gfx. Das war aber gerade der Grund warum ich mal direkt die WinApi ausprobieren wollte.
--
Microsoft Visual C++.NET Version 7
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.07.2005, 10:01 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ddraw.lib musst einbinden. Die sollten beim DirectX SDK dabei sein. Ohne libs gehts nunmal nicht, da der Compiler ja wissen muss wie er die Funktionen in den DirectX-DLL's ansprechen muss und dazu braucht er nun mal die libs
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.07.2005, 14:25 Uhr
Antialc



Hat sich leider nicht viel getan.


C++:
#include <windows.h>
#include <ddraw.h>
#include <d3drm.h>
#pragma comment (lib, "ddraw.lib")



So siehts aus.
main.obj : error LNK2001: Nichtaufgelöstes externes Symbol _IID_IDirectDraw7

Immerhin is schon mal einer weg. Aber was muss noch rein um des andere auch noch weg zu bekommen?
--
Microsoft Visual C++.NET Version 7
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.07.2005, 15:05 Uhr
Oliver
S2-Pixelgeneral


Für die GUIDS musste noch die dxguid.lib hinzufügen.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.07.2005, 14:49 Uhr
Antialc



Cool, jetzt gehts.
Danke!!!

Hab mir jetzt eine Funktion ManipulatePaintSurface() geschrieben.


C++:
void ManipulatePaintSurface(void)
{
    BYTE *lpByteScreen;
    int  i;

    if (lpDPaint7->Lock(NULL, &DDPaintDesc2, DDLOCK_WAIT, NULL) == DD_OK)
    {
        //hier niemals einen Breakpoint platzieren oder mit dem Debugger hinein springen

        //einen byte-Pointer auf die Adresse der Bilddaten setzen
        lpByteScreen = (BYTE*)DDPaintDesc2.lpSurface;

        //die ersten 50 Byte im Screen mit 255 belegen:
        for (i=0;i<50;i++)
        {
            *lpByteScreen = 255;
            lpByteScreen++;
        }
        //Surface entsperren
        lpDPaint7->Unlock(NULL);
    }
    else MessageBox(NULL, "Konnte Zeichenfläche nicht sperren", NULL, MB_OK);
}



DDPaintDesc2.lpSurface habe ich mal gecastet, da mir der Typ net gepasst hat. Ich weiss, dass man das nicht machen sollte (es schwachsin ist) aber immerhin, es geht.
Bloß bekommen ich jetzt immer nach dem beenden des Progs eine Fehlermeldung wegen Speicherverletzung.
--
Microsoft Visual C++.NET Version 7
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: