Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    funzione bitblt con finestre inattive

    Salve,

    io faccio gli stamp delle singole finestre e non di tutto lo schermo, passandogli l'handle della finestra interessata, vorrei sapere se si puo' fare anche se la finestra non la metto in primo piano o addirittura minimizzata.

    Ringrazio anticipatamente per eventuali risposte.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma il linguaggio usato? Il codice?

    Hai fatto una prova da solo?

    Ottieni errori, malfunzionamenti? Quali?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Salve oregon,

    sto usando il delphi e non ottengo errori, ho solo domandato se si puo fare con una finestra inattiva o ancora meglio se ridotta ad icona nella barra delle applicazioni.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Rifaccio la domanda ... Hai provato con una finestra non attiva?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Salve oregon,

    si ho provato con una finestra non attiva mi fa la foto della parte dove e' la finestra ma nella foto ci finiscono le cose che stanno in primo piano

    codice:
    
      Bmp := TBitmap.Create;
      tmpDC := GetWindowDC(hWind); 
      GetWindowRect(hWind, Size);
      Bmp.Width := Size.Right - Size.Left;
      Bmp.Height := Size.Bottom - Size.Top;
      BitBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, tmpDC, 0, 0, SRCCOPY);
      Bmp.PixelFormat := pf32bit;
      ReleaseDC(hWind, tmpDC);
    hWind e' l'handle della finestra che mi interessa e se nella funzione dove ottengo quest'handle imposto

    SetForegroundWindow(hWind)

    va bene ottengo una foto delle dimensioni della finestra e con la finestra dentro la foto

    se pero la fiestra sta sotto ad altre ottengo la foto di quella parte dello schermo e delle dimensioni della finestra, ma pero nella foto ci stanno le finestre in primo piano

    io invece vorrei avere quella di finestra che sia dietro ad alre o che stia accantonata nella barra.

    spero di essere stato piu chiaro adesso

  6. #6
    Non è un problema banale; il DC della finestra viene ridisegnato soltanto quando è necessario, e ovviamente se un pezzo della finestra è coperto o addirittura la finestra è minimizzata ottieni risultati bizzarri (o addirittura non puoi ottenere il DC).

    In ogni caso, per aggirare il problema esiste la funzione PrintWindow, che genera un WM_PRINT per la finestra target, facendole disegnare il suo contenuto nel tuo DC. Tieni conto però che non tutti i programmi implementano il WM_PRINT correttamente.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Salve MItaly,

    Grazie per la risposta, ma cosa intendi per "non tutti i programmi implementano il WM_PRINT correttamente", ho letto che sta nel "user.h" chiamato da "window.h" quindi se glie lo infilo io dovrebbe andare o sbaio?

  8. #8
    Il tuo programma non c'entra niente, tutto dipende da come gli altri programmi implementano la gestione del WM_PRINT.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9


    Sapete indirizzarmi invece per come fare a leggerla da sorgente sta pagina? (è un browser game)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.