effektiv overlapning af dialogvinduer i Visual C ++ 6

Indlæg af Hanne Mølgaard Plasc

Problem



Hej der har jeg problemer med overlappning af børnevinduer, jeg har lavet en software med menudrevet interface (IDR\_MAINFRAME - CFormView


osv.) og ved at klikke på en af ​​menupunkterne vises et andet børnevindue (Dialogbaseret), hvor jeg beregner som en normal


calculator.Now hvis jeg åbner en anden post sige omregning af metrics, som også er i menuindtastning så overlapper med andre sådanne


vinduet bliver baggrundsvinduerne forfærdeligt forvirret, og hvis jeg flytter om regnemaskinen eller beregningen af ​​beregning af beregninger tilfældigt


de bliver desfigured og det er et rod. Også jeg har lagt et bitmap billede på baggrunden. Når jeg flytter regnemaskinen, kommer baggrundsbilledet også
bliver slettet.


Lad mig vide om, hvordan man håndterer dette problem. Jeg har googled og fundet, at håndtering af malemeddelelser eller WM\_ERASEBKGND hjælper .. men jeg


har prøvet dette stykke kode, som bare ikke hjælper i OnEraseBkGnd ();


BOOL COfficesoftDlg::OnEraseBkgnd(CDC* pDC) 
{
    // TODO: Add your message handler code here and/or call default
    CRect Rect;
    GetClientRect(Rect);
    //ClientToScreen(&Rect);
    //this->ScreenToClient(&Rect);
    this->InvalidateRect(Rect);
    return CDialog::OnEraseBkgnd(pDC);
}


hvordan kan jeg opnå den glatte overlapning af forskellige vinduer som et notesblok, der overlapper et orddokument eller endda en lommeregner eller endda en VC6


IDE i mit projekt.
Forklar det med et eksempel. Jeg er bare nybegynder, og jeg har brug for at forstå i detaljer ... tak og hilsner

Bedste reference



  1. Overstyr OnEraseBkgnd og returner sandt, så det stopper at slette baggrunden du maler. Tilbagevendende SAND siger, at du har udført arbejdet. Hvis du simpelthen kalder basisklassens implementering, vil den gøre det for dig, og du vil miste baggrunden, indtil den får mulighed for at male.

  2. Du får ikke noget malemeddelelser til forældresvinduet af en eller anden grund. Sørg for at du 'ringer modalet på den rigtige måde. DoModal () fungerer fint. Sørg for at du ikke bare opretter modal og viser den.

  3. Hvis dine vinduer er børn i samme dialog/vindue, og de overlapper hinanden, eller hvis du har børn i dialogboksen/vinduet, skal du sørge for at bruge klippebørn og klemmer (hvis børn i et vindue overlapper hinanden). Ellers kommer de til at male i enhver rækkefølge, de vælger at kunstgive overalt.

  4. Sørg for at du maler til hukommelse og bitblting tilbage til din dialog, ellers får du en blinkende effekt.