begin process at 2012 05 28 22:47:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

DirectX

 > 

Contrôle windows sur surface DirectDraw


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Contrôle windows sur surface DirectDraw

samedi 21 janvier 2006 à 19:08:45 | Contrôle windows sur surface DirectDraw

rom2n

Bonjours a tous,
je suis en train de développer un jeu en 2D avec DirectDraw et je voulais savoir comment on pouvais affiché un contrôle windows sur une surface DDraw.

J'avais trouvé une solution mais elle ne marche pas très bien :
je charge un controle windows sur une surface avec cette fonction :
IDirectDrawSurface *DDLoadWindow(IDirectDraw *pdd, HWND hWnd)
{
    HRESULT hr;
    HDC hDc;
    HDC hDcWnd;
    IDirectDrawSurface *pdds;

    hDcWnd = GetWindowDC(hWnd);
    int X = GetDeviceCaps(hDcWnd, HORZRES);
    int Y = GetDeviceCaps(hDcWnd, VERTRES);

    pdds = CreateOffScreenSurface(pdd, X, Y);

    if(pdds)
    {
        if((hr = pdds->GetDC(&hDc)) == DD_OK)
        {
            BitBlt(hDc, 0,0,X,Y, hDcWnd, 0,0, SRCCOPY);
            pdds->ReleaseDC(hDc);
        }
        else
            return false;
    }
    else
        return false;
    return pdds;
}

Ensuite pour actualiser l'image du controle je fais appelle a cette foction :
bool UpdateDC(IDirectDrawSurface *pdds, HWND hWnd)
{
    RECT rc;
    HRESULT hr;
    HDC hDc;
    HDC hDcWnd;

    hDcWnd = GetWindowDC(hWnd);
    int X = GetDeviceCaps(hDcWnd, HORZRES);
    int Y = GetDeviceCaps(hDcWnd, VERTRES);

    if(pdds)
    {
        if((hr = pdds->GetDC(&hDc)) == DD_OK)
        {
            BitBlt(hDc, 0,0,X,Y, hDcWnd, 0,0, SRCCOPY);
            pdds->ReleaseDC(hDc);
        }
        else
            return false;
    }
    else
        return false;
    return true;
}   

Ce qui donne, dans la boucle principal, a peu près ca :
RECT rc;

SetRect(&rc, 0, 0, 800, 600);
if (FAILED (lpDDSBack->BltFast (0,0, lpDDSFond, &rc, DDBLTFAST_WAIT)))
       return FALSE;

UpdateDC(lpDDSImgBouton, hWndBouton);

SetRect(&rc, 0, 0, 300, 30);
if (FAILED (lpDDSBack->BltFast(333, 250, lpDDSImgBouton, &rc, DDBLTFAST_WAIT)))
    return FALSE;

lpDDSPrim->Flip(NULL, DDFLIP_WAIT);
return true;

Mais quand je lance le programme, le bouton ne s'affiche pas sur le fond d'écran.
En mettant le blitting du fond d'écran juste après le blitting de l'image du bouton, celui ci s'affiche...
Je sais pas quoi faire, si vous avez une solution, je la prend volontier.
Merci d'avance.

mardi 24 janvier 2006 à 16:44:37 | Re : Contrôle windows sur surface DirectDraw

rom2n

Personne n'a d'idée ????
vendredi 27 janvier 2006 à 22:00:53 | Re : Contrôle windows sur surface DirectDraw

rom2n

Ce système n'a pas l'air répendu puisse que personne ne répond !
Pourtant, comme AOE, dans le menu de création des parties en réseaux, il ya EDIT, LISTBOX, STATIC, BUTTON... Ce n'est pas des controle windows peut-être ? Et je sais qu'il utilise DirectX comme lib graphique...



Cette discussion est classée dans : hwnd, return, hdc, hdcwnd, pdds


Répondre à ce message

Sujets en rapport avec ce message

API, probleme de synchronisation?? refresh visible dans la dlg:( [ par JackosKing ] yOp,Bon voilà, je debute en API? et je voulais coder des menus persos, le probleme c'est que ma fenetre n'arrete pas de se refresh, meme quand il n'y Edit Control [ par cybermatthieu ] Bonjours,Je suis en Train d'apprendre comment progrmmer en Win32 avec la Class Windows.h. Ce petit programme ne fait q'afficher des caracter mais j'ai API :: gestion du mulo [ par JackosKing ] LRESULT CALLBACK Twiny::WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ static bool activate = FALSE; switch ( message ) { case WM_MO disparition de mon bitmap. [ par oRTEEZ ] Voila j'ai une fenetre dans lequel je load mon un bitmap al'aide de la fonction suivante. Mon probleme es t que si je passe sur un autre prog mon imag PB EditBox [ par SfyLer ] Bonjour à tous !J'ai créé un scanner de port sous dos, et j'ai commencer a le faire sous windows, j'ai presque fini le seul pb que j'ai c'est que je n Dessiner un texte dans un hwnd en mode non erase.. [ par JackosKing ] lo,voilà pour le moment j'utilisai ceci pour dessiner un texte dans un bdg: char buf[10];// SYSTEMTIME CurrentTime; HFONT hFont; hFont=Creat ressources et API !!!! [ par Xs ] salut !voila, pour me simplifier la tache, j'utlise les ressources pour creer une boite de dialog (sous VC++ 6).mais j'obtiens, lors de la compilation probleme openGl niveau debutant [ par AmK ] salut je debute en openGL et j'ai du mal a creer une fenetre le compilateur me mets 2 erreurs :PS: les erreurs du compilateur(vc++ 6.0)sont plus bas ! Screenmate defectueux [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu J'essaye de faire un screenmate (une petite bestiole se promenant sur les fenetres), mais n'etant pas tres ex Une fenetre animee transparente [ par anthraxx ] Anthrax ignisque -- Le charbon et le feu C la seconde foi ke je poste sur ce sujet, mais j'ai un autre probleme. En gros: j'ai une fenetre transparent


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales