Thread: How to use reimp

  1. #1
    Registered User
    Join Date
    Jan 2010
    Posts
    14

    Question How to use reimp

    Hi everybody!

    I`m trying to convert the DirectX .lib`s to .a`s so that I can code DirectX in Dev-C++. But when I use reimp on the library, I get two files named '0' and '22' ...
    Would anybody mind helping me a little bit ?

  2. #2
    Registered User
    Join Date
    Mar 2005
    Location
    Juneda
    Posts
    291
    Or also you can take a look at devpaks.org, on DirectX section you'll find the dxsdk9.0 ready to use on DevC++

    Hope that helps
    Niara

  3. #3
    Registered User
    Join Date
    Jan 2010
    Posts
    14

    Question Still not working...

    Quote Originally Posted by Niara View Post
    Or also you can take a look at devpaks.org, on DirectX section you'll find the dxsdk9.0 ready to use on DevC++

    Hope that helps
    Niara
    Thanks, I got the libraries and can now compile my code. But when I try to open the executable, I get a messagebox with a message like "DX Win32 Test.exe has encountered a problem and needs to close. We are sorry for the inconvenience. If you were in the middle of something, the information you were working on might be lost ...". So ... it`s still not working.

    My code is :
    Code:
    // include the basic windows header files and the Direct3D header file
    #include <windows.h>
    #include <windowsx.h>
    #include <d3d9.h>
    
    
    // include the Direct3D Library file
    // #pragma comment (lib, "d3d9.lib")
    
    // global declarations
    LPDIRECT3D9 d3d;    // the pointer to our Direct3D interface
    LPDIRECT3DDEVICE9 d3ddev;    // the pointer to the device class
    
    // function prototypes
    void initD3D(HWND hWnd);    // sets up and initializes Direct3D
    void render_frame(void);    // renders a single frame
    void cleanD3D(void);    // closes Direct3D and releases memory
    
    // the WindowProc function prototype
    LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
    
    
    // the entry point for any Windows program
    int WINAPI WinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPSTR lpCmdLine,
                       int nCmdShow)
    {
        HWND hWnd;
        WNDCLASSEX wc;
    
        ZeroMemory(&wc, sizeof(WNDCLASSEX));
    
        wc.cbSize = sizeof(WNDCLASSEX);
        wc.style = CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc = WindowProc;
        wc.hInstance = hInstance;
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)COLOR_WINDOW;
        wc.lpszClassName = "WindowClass";
    
        RegisterClassEx(&wc);
    
        hWnd = CreateWindowEx (
               0,                   /* Extended possibilites for variation */
               "DX Windows APP",    /* Classname */
               "Windows App",       /* Title Text */
               WS_OVERLAPPEDWINDOW, /* default window */
               CW_USEDEFAULT,       /* Windows decides the position */
               CW_USEDEFAULT,       /* where the window ends up on the screen */
               544,                 /* The programs width */
               375,                 /* and height in pixels */
               HWND_DESKTOP,        /* The window is a child-window to desktop */
               NULL,                /* No menu */
               hInstance,           /* Program Instance handler */
               NULL);               /* No Window Creation data */
    
        ShowWindow(hWnd, nCmdShow);
    
        // set up and initialize Direct3D
        initD3D(hWnd);
    
        // enter the main loop:
    
        MSG msg;
    
        while(TRUE)
        {
            while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
    
            if(msg.message == WM_QUIT)
                break;
    
            render_frame();
        }
    
        // clean up DirectX and COM
        cleanD3D();
    
        return msg.wParam;
    }
    
    
    // this is the main message handler for the program
    LRESULT CALLBACK WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
            case WM_DESTROY:
                {
                    PostQuitMessage(0);
                    return 0;
                } break;
        }
    
        return DefWindowProc (hWnd, message, wParam, lParam);
    }
    
    
    // this function initializes and prepares Direct3D for use
    void initD3D(HWND hWnd)
    {
        d3d = Direct3DCreate9(D3D_SDK_VERSION);    // create the Direct3D interface
    
        D3DPRESENT_PARAMETERS d3dpp;    // create a struct to hold various device information
    
        ZeroMemory(&d3dpp, sizeof(d3dpp));    // clear out the struct for use
        d3dpp.Windowed = TRUE;    // program windowed, not fullscreen
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // discard old frames
        d3dpp.hDeviceWindow = hWnd;    // set the window to be used by Direct3D
    
    
        // create a device class using this information and the info from the d3dpp stuct
        d3d->CreateDevice(D3DADAPTER_DEFAULT,
                          D3DDEVTYPE_HAL,
                          hWnd,
                          D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                          &d3dpp,
                          &d3ddev);
    }
    
    
    // this is the function used to render a single frame
    void render_frame(void)
    {
        // clear the window to a deep blue
        d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 40, 100), 1.0f, 0);
    
        d3ddev->BeginScene();    // begins the 3D scene
    
        // do 3D rendering on the back buffer here
    
        d3ddev->EndScene();    // ends the 3D scene
    
        d3ddev->Present(NULL, NULL, NULL, NULL);   // displays the created frame on the screen
    }
    
    
    // this is the function that cleans up Direct3D and COM
    void cleanD3D(void)
    {
        d3ddev->Release();    // close and release the 3D device
        d3d->Release();    // close and release Direct3D
    }

  4. #4
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    Code:
       ZeroMemory(&d3dpp, sizeof(d3dpp));    // clear out the struct for use
        d3dpp.Windowed = TRUE;    // program windowed, not fullscreen
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // discard old frames
        d3dpp.hDeviceWindow = hWnd;    // set the window to be used by Direct3D
    I see this in many books and it is just plain wrong. Make sure you initialize every member of the D3DPRESENT_PARAMETERS structure and you will save yourself a lot of headaches.

    For windowed mode the format of the back buffer must be D3DFMT_UNKNOWN. Check the SDK documentation for CreateDevice() and D3DPRESENT_PARAMETERS and you will find the solution to your problem. Don't assume that 0 is the correct default setting for the members in D3DPRESENT_PARAMETERS.

  5. #5
    Registered User
    Join Date
    Jan 2010
    Posts
    14
    Though it worked on MSVC ( 2010 Express Editon ).

    Anyway, I`ll check that out. Thanks !

  6. #6
    Registered User
    Join Date
    Jan 2010
    Posts
    14
    I checked out what you said, and added the line ( it`s in bold ):

    Code:
        ZeroMemory(&d3dpp, sizeof(d3dpp));    // clear out the struct for use
        d3dpp.Windowed = TRUE;    // program windowed, not fullscreen
        d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;    // discard old frames
        d3dpp.hDeviceWindow = hWnd;    // set the window to be used by Direct3D
        d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
    But I get the same error when I compile and run it ( and again, it works in MSVC but not in Dev-C++ ) .
    Last edited by Fujy; 04-20-2010 at 10:05 AM.

  7. #7
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    Though it worked on MSVC ( 2010 Express Editon ).
    Are you interested in what works in extremely isolated and small programs or are you interested in what works all the time every time?

  8. #8
    Registered User
    Join Date
    Jan 2010
    Posts
    14
    What I meant is that if the code is that if the code is wrong, why does it still work ?

  9. #9
    Registered User
    Join Date
    Dec 2006
    Location
    Canada
    Posts
    3,229
    Right code is guaranteed to work.

    Wrong code is not guaranteed to not work.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Installing Direct X
    By bumfluff in forum Game Programming
    Replies: 36
    Last Post: 11-15-2006, 07:18 PM