DirectX Rendu [Résolu]

Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
- - Dernière réponse : Galmiza
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
- 12 févr. 2007 à 13:07
Bonjour,

Je voulais savoir comment faire pour afficher le rendu d'une scéne 3D seulement dans une partie de la fenêtre.
(par exemple dans la moitié de la fenêtre)

Merci
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
3
Merci
Salut,
J'ai retrouvé un code que j'avais fait.
J'avais sur une même fenêtre un rendu 3D et une interface faite avec l'editeur de ressources Windows.

En voici un extrait:

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nCmdShow)
{

    MSG msg;                 // message from queue
    BOOL notDone = TRUE;       // flag for thread completion
    HMENU hMenu;

    g_hInstance = hInstance;

    // Loading windows
    WNDCLASS            wndClass;
    HWND                hWnd;

    wndClass.style = CS_HREDRAW | CS_VREDRAW;
    wndClass.lpfnWndProc = WindowProc ;        // Fonction gestionnaire d'evenements
    wndClass.cbClsExtra = 0;
    wndClass.cbWndExtra = 0;
    wndClass.hInstance = hInstance;
    wndClass.hIcon = NULL ;
    wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
    wndClass.hbrBackground = (HBRUSH) NULL;
    wndClass.lpszMenuName = NULL;
    wndClass.lpszClassName = "Class";
    RegisterClass( &wndClass );

    hMenu = LoadMenu(hInstance, (LPCTSTR)IDR_MENU);

    hWnd = CreateWindow(
            "Class",
            NULL,
            WS_OVERLAPPEDWINDOW | WS_SYSMENU ,
            0,
            0,
            800,
            800,
            (HWND) NULL, //parent
            (HMENU)hMenu, //hMenu,
            hInstance,
            NULL );

    SetWindowText(hWnd, "Title");
    ShowWindow(hWnd, nCmdShow/*SW_SHOWMAXIMIZED*/);

    hWndParam = CreateDialog(hInstance, MAKEINTRESOURCE(PARAMFRAME), hWnd, WndParamProc);

    ShowWindow(hWndParam, TRUE);
    UpdateWindow(hWnd);

    ...... }

Le prototype du gestionnaire d'évenements de l'interface:

BOOL CALLBACK WndParamProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

Le prototype du gestionnaire des évenements sur la fenêtre mère:

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

Le prototype du gestionnaire des évenements sur la fenêtre 3D (créée dans le WM_CREATE de
WindowProc
):
LPARAM CALLBACK WndDirect3DProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam );

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 207 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Galmiza
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
0
Merci
Salut,

Tu crées la fenetre principale (couleur de fond transparente).
Tu crées une fenêtre enfant à l'intérieur que tu positionnes comme tu veux.
Tu passes le HWND de l'enfant à direct3D lors de la création du device.

Lien: createwindow
Commenter la réponse de Galmiza
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
0
Merci
Ok merci.

En fait je crée 2 fenêtres
Une où je vais afficher ma scéne 3D et l'autre où je vais pouvoir inserer mes boutons(je veux faire une interface ;))

Je vais essayer si j'ai un probleme je te redemande.

Merci encore.
Commenter la réponse de seb2086
Messages postés
96
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 février 2010
0
Merci
Par contre faut-il que je crée un CALLBACK pour chaque fenêtre ?
Commenter la réponse de seb2086