Classe CDC

Definisce una classe di oggetti di un contesto di dispositivo.

Sintassi

class CDC : public CObject

Membri

Costruttori pubblici

Nome Descrizione
CDC::CDC Costruisce un oggetto CDC.

Metodi pubblici

Nome Descrizione
CDC::AbortDoc Termina il processo di stampa corrente, cancellando tutto ciò che l'applicazione ha scritto nel dispositivo dall'ultima chiamata della StartDoc funzione membro.
CDC::AbortPath Chiude e rimuove tutti i percorsi nel contesto del dispositivo.
CDC::AddMetaFileComment Copia il commento da un buffer in un metafile in formato avanzato specificato.
CDC::AlphaBlend Visualizza bitmap con pixel trasparenti o semitrasparenti.
CDC::AngleArc Disegna un segmento di linea e un arco e sposta la posizione corrente al punto finale dell'arco.
CDC::Arc Disegna un arco ellittico.
CDC::ArcTo Disegna un arco ellittico. Questa funzione è simile a Arc, ad eccezione del fatto che la posizione corrente viene aggiornata.
CDC::Attach Collega un contesto di dispositivo Windows a questo CDC oggetto.
CDC::BeginPath Apre una parentesi di percorso nel contesto del dispositivo.
CDC::BitBlt Copia una bitmap da un contesto di dispositivo specificato.
CDC::Chord Disegna un accordo (figura chiusa delimitata dall'intersezione di un'ellisse e un segmento di linea).
CDC::CloseFigure Chiude una figura aperta in un percorso.
CDC::CreateCompatibleDC Crea un contesto di memoria-dispositivo compatibile con un altro contesto di dispositivo. È possibile usarlo per preparare le immagini in memoria.
CDC::CreateDC Crea un contesto di dispositivo per un dispositivo specifico.
CDC::CreateIC Crea un contesto informativo per un dispositivo specifico. In questo modo è possibile ottenere rapidamente informazioni sul dispositivo senza creare un contesto di dispositivo.
CDC::DeleteDC Elimina il contesto di dispositivo Windows associato a questo CDC oggetto.
CDC::DeleteTempMap Chiamato dal CWinApp gestore tempo di inattività per eliminare qualsiasi oggetto temporaneo CDC creato da FromHandle. Scollega anche il contesto del dispositivo.
CDC::Detach Scollega il contesto del dispositivo Windows da questo CDC oggetto.
CDC::DPtoHIMETRIC Converte le unità di dispositivo in HIMETRIC unità.
CDC::DPtoLP Converte le unità di dispositivo in unità logiche.
CDC::Draw3dRect Disegna un rettangolo tridimensionale.
CDC::DrawDragRect Cancella e ridisegna un rettangolo mentre viene trascinato.
CDC::DrawEdge Disegna i bordi di un rettangolo.
CDC::DrawEscape Accede alle funzionalità di disegno di una visualizzazione video che non sono direttamente disponibili tramite l'interfaccia GDI (Graphics Device Interface).
CDC::DrawFocusRect Disegna un rettangolo nello stile utilizzato per indicare lo stato attivo.
CDC::DrawFrameControl Disegnare un controllo cornice.
CDC::DrawIcon Disegna un'icona.
CDC::DrawState Visualizza un'immagine e applica un effetto visivo per indicare uno stato.
CDC::DrawText Disegna testo formattato nel rettangolo specificato.
CDC::DrawTextEx Disegna testo formattato nel rettangolo specificato utilizzando altri formati.
CDC::Ellipse Disegna un ellisse.
CDC::EndDoc Termina un processo di stampa avviato dalla StartDoc funzione membro.
CDC::EndPage Informa il driver di dispositivo che una pagina sta terminando.
CDC::EndPath Chiude una parentesi di percorso e seleziona il percorso definito dalla parentesi quadra nel contesto del dispositivo.
CDC::EnumObjects Enumera le penne e i pennelli disponibili in un contesto di dispositivo.
CDC::Escape Consente alle applicazioni di accedere alle strutture che non sono direttamente disponibili da un particolare dispositivo tramite GDI. Consente anche l'accesso alle funzioni di escape di Windows. Le chiamate di escape effettuate da un'applicazione vengono convertite e inviate al driver di dispositivo.
CDC::ExcludeClipRect Crea una nuova area di ritaglio costituita dall'area di ritaglio esistente meno il rettangolo specificato.
CDC::ExcludeUpdateRgn Impedisce il disegno all'interno di aree non valide di una finestra escludendo un'area aggiornata nella finestra da un'area di ritaglio.
CDC::ExtFloodFill Riempie un'area con il pennello corrente. Offre maggiore flessibilità rispetto alla CDC::FloodFill funzione membro.
CDC::ExtTextOut Scrive una stringa di caratteri all'interno di un'area rettangolare utilizzando il tipo di carattere attualmente selezionato.
CDC::FillPath Chiude tutte le figure aperte nel percorso corrente e riempie l'interno del percorso utilizzando la modalità corrente di riempimento del pennello e del poligono.
CDC::FillRect Riempie un determinato rettangolo usando un pennello specifico.
CDC::FillRgn Riempie un'area specifica con il pennello specificato.
CDC::FillSolidRect Riempie un rettangolo con un colore a tinta unita.
CDC::FlattenPath Trasforma tutte le curve nel percorso selezionato nel contesto di dispositivo corrente e trasforma ogni curva in una sequenza di linee.
CDC::FloodFill Riempie un'area con il pennello corrente.
CDC::FrameRect Disegna un bordo intorno a un rettangolo.
CDC::FrameRgn Disegna un bordo intorno a un'area specifica usando un pennello.
CDC::FromHandle Restituisce un puntatore a un CDC oggetto quando viene assegnato un handle a un contesto di dispositivo. Se un CDC oggetto non è collegato all'handle, viene creato e collegato un oggetto temporaneo CDC .
CDC::GetArcDirection Restituisce la direzione dell'arco corrente per il contesto di dispositivo.
CDC::GetAspectRatioFilter Recupera l'impostazione per il filtro delle proporzioni corrente.
CDC::GetBkColor Recupera il colore di sfondo corrente.
CDC::GetBkMode Recupera la modalità in background.
CDC::GetBoundsRect Restituisce il rettangolo di delimitazione accumulato corrente per il contesto di dispositivo specificato.
CDC::GetBrushOrg Recupera l'origine del pennello corrente.
CDC::GetCharABCWidths Recupera le larghezze, in unità logiche, di caratteri consecutivi in un determinato intervallo dal tipo di carattere corrente.
CDC::GetCharABCWidthsI Recupera le larghezze, in unità logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere TrueType corrente.
CDC::GetCharacterPlacement Recupera vari tipi di informazioni su una stringa di caratteri.
CDC::GetCharWidth Recupera le larghezze frazionarie di caratteri consecutivi in un determinato intervallo dal tipo di carattere corrente.
CDC::GetCharWidthI Recupera le larghezze, in coordinate logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere corrente.
CDC::GetClipBox Recupera le dimensioni del rettangolo di delimitazione più stretto intorno al limite di ritaglio corrente.
CDC::GetColorAdjustment Recupera i valori di regolazione del colore per il contesto di dispositivo.
CDC::GetCurrentBitmap Restituisce un puntatore all'oggetto attualmente selezionato CBitmap .
CDC::GetCurrentBrush Restituisce un puntatore all'oggetto attualmente selezionato CBrush .
CDC::GetCurrentFont Restituisce un puntatore all'oggetto attualmente selezionato CFont .
CDC::GetCurrentPalette Restituisce un puntatore all'oggetto attualmente selezionato CPalette .
CDC::GetCurrentPen Restituisce un puntatore all'oggetto attualmente selezionato CPen .
CDC::GetCurrentPosition Recupera la posizione corrente della penna (in coordinate logiche).
CDC::GetDCBrushColor Recupera il colore corrente del pennello.
CDC::GetDCPenColor Recupera il colore corrente della penna.
CDC::GetDeviceCaps Recupera un tipo specificato di informazioni specifiche del dispositivo sulle funzionalità di un determinato dispositivo di visualizzazione.
CDC::GetFontData Recupera le informazioni sulle metriche dei tipi di carattere da un file di tipo di carattere scalabile. Le informazioni da recuperare vengono identificate specificando un offset nel file del tipo di carattere e la lunghezza delle informazioni da restituire.
CDC::GetFontLanguageInfo Restituisce informazioni sul tipo di carattere attualmente selezionato per il contesto di visualizzazione specificato.
CDC::GetGlyphOutline Recupera la curva del contorno o la bitmap per un carattere di struttura nel tipo di carattere corrente.
CDC::GetGraphicsMode Recupera la modalità grafica corrente per il contesto di dispositivo specificato.
CDC::GetHalftoneBrush Recupera un pennello mezzotone.
CDC::GetKerningPairs Recupera le coppie di crenatura dei caratteri per il tipo di carattere attualmente selezionato nel contesto di dispositivo specificato.
CDC::GetLayout Recupera il layout di un contesto di dispositivo (DC). Il layout può essere da sinistra a destra (impostazione predefinita) o da destra a sinistra (con mirroring).
CDC::GetMapMode Recupera la modalità di mapping corrente.
CDC::GetMiterLimit Restituisce il limite di miter per il contesto di dispositivo.
CDC::GetNearestColor Recupera il colore logico più vicino a un colore logico specificato che il dispositivo specificato può rappresentare.
CDC::GetOutlineTextMetrics Recupera le informazioni sulle metriche dei tipi di carattere per i tipi di carattere TrueType.
CDC::GetOutputCharWidth Recupera la larghezza dei singoli caratteri in un gruppo consecutivo di caratteri dal tipo di carattere corrente usando il contesto del dispositivo di output.
CDC::GetOutputTabbedTextExtent Calcola la larghezza e l'altezza di una stringa di caratteri nel contesto del dispositivo di output.
CDC::GetOutputTextExtent Calcola la larghezza e l'altezza di una riga di testo nel contesto del dispositivo di output usando il tipo di carattere corrente per determinare le dimensioni.
CDC::GetOutputTextMetrics Recupera le metriche per il tipo di carattere corrente dal contesto del dispositivo di output.
CDC::GetPath Recupera le coordinate che definiscono gli endpoint delle linee e i punti di controllo delle curve presenti nel percorso selezionato nel contesto del dispositivo.
CDC::GetPixel Recupera il valore del colore RGB del pixel in corrispondenza del punto specificato.
CDC::GetPolyFillMode Recupera la modalità di riempimento poligono corrente.
CDC::GetROP2 Recupera la modalità di disegno corrente.
CDC::GetSafeHdc Restituisce CDC::m_hDC, il contesto del dispositivo di output.
CDC::GetStretchBltMode Recupera la modalità di estensione bitmap corrente.
CDC::GetTabbedTextExtent Calcola la larghezza e l'altezza di una stringa di caratteri nel contesto del dispositivo dell'attributo.
CDC::GetTextAlign Recupera i flag di allineamento del testo.
CDC::GetTextCharacterExtra Recupera l'impostazione corrente per la quantità di spaziatura intercaracter.
CDC::GetTextColor Recupera il colore del testo corrente.
CDC::GetTextExtent Calcola la larghezza e l'altezza di una riga di testo nel contesto del dispositivo dell'attributo usando il tipo di carattere corrente per determinare le dimensioni.
CDC::GetTextExtentExPointI Recupera il numero di caratteri in una stringa specificata che verrà inserita all'interno di uno spazio specificato e riempie una matrice con l'extent di testo per ognuno di questi caratteri.
CDC::GetTextExtentPointI Recupera la larghezza e l'altezza della matrice specificata di indici del glifo.
CDC::GetTextFace Copia il nome del carattere tipografico del tipo di carattere corrente in un buffer come stringa con terminazione Null.
CDC::GetTextMetrics Recupera le metriche per il tipo di carattere corrente dal contesto del dispositivo dell'attributo.
CDC::GetViewportExt Recupera gli extent x e y del riquadro di visualizzazione.
CDC::GetViewportOrg Recupera le coordinate x e y dell'origine del riquadro di visualizzazione.
CDC::GetWindow Restituisce la finestra associata al contesto di dispositivo di visualizzazione.
CDC::GetWindowExt Recupera gli extent x e y della finestra associata.
CDC::GetWindowOrg Recupera le coordinate x e y dell'origine della finestra associata.
CDC::GetWorldTransform Recupera lo spazio globale corrente nella trasformazione dello spazio delle pagine.
CDC::GradientFill Riempie strutture rettangolo e triangolo con un colore di gradazione.
CDC::GrayString Disegna testo in grigio (grigio) nella posizione specificata.
CDC::HIMETRICtoDP Converte le unità HIMETRIC in unità dispositivo.
CDC::HIMETRICtoLP Converte le unità HIMETRIC in unità logiche.
CDC::IntersectClipRect Crea una nuova area di ritaglio formando l'intersezione dell'area corrente e un rettangolo.
CDC::InvertRect Inverte il contenuto di un rettangolo.
CDC::InvertRgn Inverte i colori in un'area.
CDC::IsPrinting Determina se il contesto del dispositivo viene utilizzato per la stampa.
CDC::LineTo Disegna una linea dalla posizione corrente fino a, ma non include, un punto.
CDC::LPtoDP Converte le unità logiche in unità dispositivo.
CDC::LPtoHIMETRIC Converte le unità logiche in unità HIMETRIC.
CDC::MaskBlt Combina i dati di colore per le bitmap di origine e di destinazione usando l'operazione di maschera e raster specificata.
CDC::ModifyWorldTransform Modifica la trasformazione globale per un contesto di dispositivo usando la modalità specificata.
CDC::MoveTo Sposta la posizione corrente.
CDC::OffsetClipRgn Sposta l'area di ritaglio del dispositivo specificato.
CDC::OffsetViewportOrg Modifica l'origine del riquadro di visualizzazione rispetto alle coordinate dell'origine del riquadro di visualizzazione corrente.
CDC::OffsetWindowOrg Modifica l'origine della finestra rispetto alle coordinate dell'origine della finestra corrente.
CDC::PaintRgn Riempie un'area con il pennello selezionato.
CDC::PatBlt Crea un modello di bit.
CDC::Pie Disegna una wedge a forma di torta.
CDC::PlayMetaFile Riproduce il contenuto del metafile specificato nel dispositivo specificato. La versione avanzata di PlayMetaFile visualizza l'immagine archiviata nel metafile in formato avanzato specificato. Il metafile può essere riprodotto un numero qualsiasi di volte.
CDC::PlgBlt Esegue un trasferimento bit-block dei bit dei dati di colore dal rettangolo specificato nel contesto del dispositivo di origine al parallelogramma specificato nel contesto di dispositivo specificato nel contesto di dispositivo specificato.
CDC::PolyBezier Disegna una o più spline di Bzier. La posizione corrente non viene usata o aggiornata.
CDC::PolyBezierTo Disegna uno o più spline di Bzier e sposta la posizione corrente al punto finale dell'ultima spline di Bzier.
CDC::PolyDraw Disegna un set di segmenti di linea e spline di Bzier. Questa funzione aggiorna la posizione corrente.
CDC::Polygon Disegna un poligono costituito da due o più punti (vertici) collegati da linee.
CDC::Polyline Disegna un set di segmenti di linea che collegano i punti specificati.
CDC::PolylineTo Disegna una o più linee rette e sposta la posizione corrente al punto finale dell'ultima linea.
CDC::PolyPolygon Crea due o più poligoni riempiti usando la modalità di riempimento poligono corrente. I poligoni possono essere disgiunti o possono sovrapporsi.
CDC::PolyPolyline Disegna più serie di segmenti di linea collegati. La posizione corrente non viene usata o aggiornata da questa funzione.
CDC::PtVisible Specifica se il punto specificato si trova all'interno dell'area di ritaglio.
CDC::RealizePalette Mappe voci della tavolozza logica corrente nella tavolozza del sistema.
CDC::Rectangle Disegna un rettangolo utilizzando la penna corrente e lo riempie usando il pennello corrente.
CDC::RectVisible Determina se una parte del rettangolo specificato si trova all'interno dell'area di ritaglio.
CDC::ReleaseAttribDC Rilascia m_hAttribDC, il contesto del dispositivo dell'attributo.
CDC::ReleaseOutputDC Rilascia m_hDC, il contesto del dispositivo di output.
CDC::ResetDC Aggiornamenti il contesto del m_hAttribDC dispositivo.
CDC::RestoreDC Ripristina il contesto del dispositivo in uno stato precedente salvato con SaveDC.
CDC::RoundRect Disegna un rettangolo con angoli arrotondati usando la penna corrente e riempita utilizzando il pennello corrente.
CDC::SaveDC Salva lo stato corrente del contesto di dispositivo.
CDC::ScaleViewportExt Modifica l'extent del riquadro di visualizzazione rispetto ai valori correnti.
CDC::ScaleWindowExt Modifica gli extent della finestra rispetto ai valori correnti.
CDC::ScrollDC Scorre un rettangolo di bit orizzontalmente e verticalmente.
CDC::SelectClipPath Seleziona il percorso corrente come area di ritaglio per il contesto di dispositivo, combinando la nuova area con qualsiasi area di ritaglio esistente usando la modalità specificata.
CDC::SelectClipRgn Combina l'area specificata con l'area di ritaglio corrente usando la modalità specificata.
CDC::SelectObject Seleziona un oggetto di disegno GDI, ad esempio una penna.
CDC::SelectPalette Seleziona la tavolozza logica.
CDC::SelectStockObject Seleziona una delle penne predefinite, i pennelli o i tipi di carattere forniti da Windows.
CDC::SetAbortProc Imposta una funzione di callback fornita dal programmatore che Windows chiama se un processo di stampa deve essere interrotto.
CDC::SetArcDirection Imposta la direzione del disegno da utilizzare per le funzioni arco e rettangolo.
CDC::SetAttribDC Imposta m_hAttribDC, il contesto del dispositivo dell'attributo.
CDC::SetBkColor Imposta il colore di sfondo corrente.
CDC::SetBkMode Imposta la modalità di sfondo.
CDC::SetBoundsRect Controlla l'accumulo di informazioni sul rettangolo di delimitazione per il contesto di dispositivo specificato.
CDC::SetBrushOrg Specifica l'origine del pennello successivo selezionato in un contesto di dispositivo.
CDC::SetColorAdjustment Imposta i valori di regolazione del colore per il contesto di dispositivo usando i valori specificati.
CDC::SetDCBrushColor Imposta il colore corrente del pennello.
CDC::SetDCPenColor Imposta il colore corrente della penna.
CDC::SetGraphicsMode Imposta la modalità grafica corrente per il contesto di dispositivo specificato.
CDC::SetLayout Modifica il layout di un contesto di dispositivo (DC).
CDC::SetMapMode Imposta la modalità di mapping corrente.
CDC::SetMapperFlags Modifica l'algoritmo utilizzato dal mapper del tipo di carattere quando esegue il mapping dei tipi di carattere logici ai tipi di carattere fisici.
CDC::SetMiterLimit Imposta il limite per la lunghezza dei join di miter per il contesto di dispositivo.
CDC::SetOutputDC Imposta m_hDC, il contesto del dispositivo di output.
CDC::SetPixel Imposta il pixel in corrispondenza del punto specificato sull'approssimazione più vicina del colore specificato.
CDC::SetPixelV Imposta il pixel in corrispondenza delle coordinate specificate sull'approssimazione più vicina del colore specificato. SetPixelV è più veloce rispetto SetPixel al fatto che non è necessario restituire il valore di colore del punto disegnato.
CDC::SetPolyFillMode Imposta la modalità di riempimento poligono.
CDC::SetROP2 Imposta la modalità di disegno corrente.
CDC::SetStretchBltMode Imposta la modalità di estensione bitmap.
CDC::SetTextAlign Imposta i flag di allineamento del testo.
CDC::SetTextCharacterExtra Imposta la quantità di spaziatura intercharacter.
CDC::SetTextColor Imposta il colore del testo.
CDC::SetTextJustification Aggiunge spazio ai caratteri di interruzione in una stringa.
CDC::SetViewportExt Imposta gli extent x e y del riquadro di visualizzazione.
CDC::SetViewportOrg Imposta l'origine del riquadro di visualizzazione.
CDC::SetWindowExt Imposta gli extent x e y della finestra associata.
CDC::SetWindowOrg Imposta l'origine della finestra del contesto di dispositivo.
CDC::SetWorldTransform Imposta lo spazio globale corrente sulla trasformazione dello spazio delle pagine.
CDC::StartDoc Informa il driver di dispositivo che è in corso l'avvio di un nuovo processo di stampa.
CDC::StartPage Informa il driver di dispositivo che è in corso l'avvio di una nuova pagina.
CDC::StretchBlt Sposta una bitmap da un rettangolo di origine e un dispositivo in un rettangolo di destinazione, estendendo o comprimendo la bitmap, se necessario per adattare le dimensioni del rettangolo di destinazione.
CDC::StrokeAndFillPath Chiude tutte le figure aperte in un percorso, colpisce il contorno del percorso utilizzando la penna corrente e riempie l'interno utilizzando il pennello corrente.
CDC::StrokePath Esegue il rendering del percorso specificato utilizzando la penna corrente.
CDC::TabbedTextOut Scrive una stringa di caratteri in una posizione specificata, espandendo le schede nei valori specificati in una matrice di posizioni tabulazioni.
CDC::TextOut Scrive una stringa di caratteri in una posizione specificata utilizzando il tipo di carattere attualmente selezionato.
CDC::TransparentBlt Trasferisce un blocco bit di dati colore dal contesto del dispositivo di origine specificato in un contesto di dispositivo di destinazione, rendendo trasparente un colore specificato nel trasferimento.
CDC::UpdateColors Aggiornamenti l'area client del contesto di dispositivo associando i colori correnti nell'area client alla tavolozza del sistema in base a pixel per pixel.
CDC::WidenPath Ridefinisce il percorso corrente come area che verrebbe disegnata se il percorso fosse tracciato utilizzando la penna attualmente selezionata nel contesto del dispositivo.

Operatori pubblici

Nome Descrizione
CDC::operator HDC Recupera l'handle del contesto di dispositivo.

Membri dati pubblici

Nome Descrizione
CDC::m_hAttribDC Contesto attributo-dispositivo utilizzato da questo CDC oggetto.
CDC::m_hDC Contesto del dispositivo di output usato da questo CDC oggetto.

Osservazioni:

L'oggetto CDC fornisce funzioni membro per l'utilizzo di un contesto di dispositivo, ad esempio uno schermo o una stampante, e i membri per l'utilizzo di un contesto di visualizzazione associato all'area client di una finestra.

Eseguire tutte le operazioni di disegno tramite le funzioni membro di un CDC oggetto . La classe fornisce funzioni membro per le operazioni di contesto del dispositivo, l'uso di strumenti di disegno, la selezione di oggetti GDI (Type-Safe Graphics Device Interface) e l'uso di colori e tavolozze. Fornisce inoltre funzioni membro per ottenere e impostare attributi di disegno, mapping, utilizzo del riquadro di visualizzazione, utilizzo dell'extent della finestra, conversione delle coordinate, utilizzo di aree, ritaglio, linee di disegno e disegno di forme semplici, puntini di sospensione e poligoni. Sono inoltre disponibili funzioni membro per il disegno di testo, l'uso di tipi di carattere, l'uso di escape della stampante, lo scorrimento e la riproduzione di metafile.

Per usare un CDC oggetto, crearlo e quindi chiamarne le funzioni membro che parallele funzioni di Windows che usano contesti di dispositivo.

Nota

In Windows 95/98 tutte le coordinate dello schermo sono limitate a 16 bit. Pertanto, un int oggetto passato a una CDC funzione membro deve trovarsi nell'intervallo da -32768 a 32767.

Per usi specifici, la libreria di classi Microsoft Foundation fornisce diverse classi derivate da CDC . CPaintDC incapsula le chiamate a BeginPaint e EndPaint. CClientDC gestisce un contesto di visualizzazione associato all'area client di una finestra. CWindowDC gestisce un contesto di visualizzazione associato a un'intera finestra, inclusi i relativi controlli e frame. CMetaFileDC associa un contesto di dispositivo a un metafile.

CDC fornisce due funzioni GetLayout membro e SetLayout, per ripristinare il layout di un contesto di dispositivo, che non eredita il layout da una finestra. Tale orientamento da destra a sinistra è necessario per le applicazioni scritte per le impostazioni cultura, ad esempio arabo o ebraico, in cui il layout dei caratteri non è lo standard europeo.

CDC contiene due contesti di dispositivo e m_hDCm_hAttribDC, che, alla creazione di un CDC oggetto, fanno riferimento allo stesso dispositivo. CDC indirizza tutte le chiamate GDI di output a m_hDC e la maggior parte delle chiamate GDI degli attributi a m_hAttribDC. Un esempio di chiamata di attributo è GetTextColor, mentre SetTextColor è una chiamata di output.

Ad esempio, il framework usa questi due contesti di dispositivo per implementare un CMetaFileDC oggetto che invierà l'output a un metafile durante la lettura degli attributi da un dispositivo fisico. L'anteprima di stampa viene implementata nel framework in modo simile. È anche possibile usare i due contesti di dispositivo in modo analogo nel codice specifico dell'applicazione.

In alcuni casi potrebbero essere necessarie informazioni sulle metriche di testo dai contesti di m_hDC dispositivo e m_hAttribDC . Le coppie di funzioni seguenti offrono questa funzionalità:

Usa m_hAttribDC Usa m_hDC
GetTextExtent GetOutputTextExtent
GetTabbedTextExtent GetOutputTabbedTextExtent
GetTextMetrics GetOutputTextMetrics
GetCharWidth GetOutputCharWidth

Per altre informazioni su CDC, vedere Contesti di dispositivo.

Gerarchia di ereditarietà

CObject

CDC

Requisiti

Intestazione:afxwin.h

CDC::AbortDoc

Termina il processo di stampa corrente e cancella tutto ciò che l'applicazione ha scritto nel dispositivo dall'ultima chiamata alla StartDoc funzione membro.

int AbortDoc();

Valore restituito

Valore maggiore o uguale a 0 se ha esito positivo o negativo se si è verificato un errore. L'elenco seguente mostra i valori di errore comuni e i relativi significati:

  • SP_ERROR Errore generale.

  • SP_OUTOFDISK Spazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.

  • SP_OUTOFMEMORY Memoria insufficiente per lo spooling.

  • SP_USERABORT L'utente ha terminato il processo tramite Gestione stampa.

Osservazioni:

Questa funzione membro sostituisce l'escape della ABORTDOC stampante.

AbortDoc deve essere usato per terminare quanto segue:

  • Operazioni di stampa che non specificano una funzione di interruzione tramite SetAbortProc.

  • Operazioni di stampa che non hanno ancora raggiunto la prima NEWFRAME chiamata di escape o NEXTBAND .

Se un'applicazione rileva un errore di stampa o un'operazione di stampa annullata, non deve tentare di terminare l'operazione utilizzando le EndDoc funzioni membro o AbortDoc della classe CDC. GDI termina automaticamente l'operazione prima di restituire il valore di errore.

Se l'applicazione visualizza una finestra di dialogo per consentire all'utente di annullare l'operazione di stampa, deve chiamare AbortDoc prima di eliminare definitivamente la finestra di dialogo.

Se Gestione stampa è stato usato per avviare il processo di stampa, la chiamata AbortDoc cancella l'intero processo di spooling, ovvero la stampante non riceve nulla. Se Print Manager non è stato utilizzato per avviare il processo di stampa, è possibile che i dati siano stati inviati alla stampante prima AbortDoc della chiamata. In questo caso, il driver della stampante avrebbe reimpostato la stampante (quando possibile) e chiuso il processo di stampa.

Esempio

Vedere l'esempio per CDC::StartDoc.

CDC::AbortPath

Chiude e rimuove tutti i percorsi nel contesto del dispositivo.

BOOL AbortPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Se nel contesto del dispositivo è presente una parentesi di percorso aperta, la parentesi di percorso viene chiusa e il percorso viene rimosso. Se nel contesto del dispositivo è presente un percorso chiuso, il percorso viene rimosso.

CDC::AddMetaFileComment

Copia il commento da un buffer in un metafile in formato avanzato specificato.

BOOL AddMetaFileComment(
    UINT nDataSize,
    const BYTE* pCommentData);

Parametri

nDataSize
Specifica la lunghezza in byte del buffer dei commenti.

pCommentData
Punta al buffer che contiene il commento.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Un commento può includere informazioni private, ad esempio l'origine dell'immagine e la data di creazione. Un commento deve iniziare con una firma dell'applicazione, seguita dai dati. I commenti non devono contenere dati specifici della posizione. I dati specifici della posizione specificano la posizione di un record e non devono essere inclusi perché un metafile può essere incorporato all'interno di un altro metafile. Questa funzione può essere usata solo con metafile avanzati.

CDC::AlphaBlend

Chiamare questa funzione membro per visualizzare bitmap con pixel trasparenti o semitrasparenti.

BOOL AlphaBlend(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    BLENDFUNCTION blend);

Parametri

xDest
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.

yDest
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.

nDestWidth
Specifica la larghezza, in unità logiche, del rettangolo di destinazione.

nDestHeight
Specifica l'altezza, in unità logiche, del rettangolo di destinazione.

pSrcDC
Puntatore al contesto del dispositivo di origine.

xSrc
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.

ySrc
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.

nSrcWidth
Specifica la larghezza, in unità logiche, del rettangolo di origine.

nSrcHeight
Specifica l'altezza, in unità logiche, del rettangolo di origine.

blend
Specifica una BLENDFUNCTION struttura.

Valore restituito

TRUE se l'esito è positivo; in caso contrario, FALSE.

Osservazioni:

Per altre informazioni, vedere AlphaBlend in Windows SDK.

CDC::AngleArc

Disegna un segmento di linea e un arco.

BOOL AngleArc(
    int x,
    int y,
    int nRadius,
    float fStartAngle,
    float fSweepAngle);

Parametri

x
Specifica la coordinata x logica del centro del cerchio.

y
Specifica la coordinata y logica del centro del cerchio.

nRadius
Specifica il raggio del cerchio in unità logiche. Questo valore deve essere positivo.

fStartAngle
Specifica l'angolo iniziale in gradi rispetto all'asse x.

fSweepAngle
Specifica l'angolo di sweep in gradi rispetto all'angolo iniziale.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Il segmento di linea viene disegnato dalla posizione corrente all'inizio dell'arco. L'arco viene disegnato lungo il perimetro di un cerchio con il raggio e il centro specificati. La lunghezza dell'arco è definita dagli angoli iniziale e spazza specificati.

AngleArc sposta la posizione corrente al punto finale dell'arco. L'arco disegnato da questa funzione può sembrare ellittico, a seconda della modalità di trasformazione e mapping corrente. Prima di disegnare l'arco, questa funzione disegna il segmento di linea dalla posizione corrente all'inizio dell'arco. L'arco viene disegnato creando un cerchio immaginario con il raggio specificato intorno al punto centrale specificato. Il punto iniziale dell'arco è determinato misurando in senso antiorario dall'asse x del cerchio in base al numero di gradi nell'angolo iniziale. Il punto finale si trova in modo analogo misurando in senso antiorario dal punto iniziale in base al numero di gradi nell'angolo di sweep.

Se l'angolo di sweep è maggiore di 360 gradi, l'arco viene spazzato più volte. Questa funzione disegna linee utilizzando la penna corrente. La figura non viene riempita.

CDC::Arc

Disegna un arco ellittico.

BOOL Arc(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Arc(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Parametri

x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).

y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).

x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).

y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).

x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

x4
Specifica la coordinata x del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

y4
Specifica la coordinata y del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un LPRECT oggetto o CRect per questo parametro.

ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

ptEnd
Specifica le coordinate x e y del punto che definisce il punto finale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

L'arco disegnato utilizzando la funzione è un segmento dell'ellisse definita dal rettangolo di delimitazione specificato.

Il punto iniziale effettivo dell'arco è il punto in cui un raggio disegnato dal centro del rettangolo di delimitazione attraverso il punto iniziale specificato interseca l'ellisse. Il punto finale effettivo dell'arco è il punto in cui un raggio disegnato dal centro del rettangolo di delimitazione attraverso il punto finale specificato interseca l'ellisse. L'arco viene disegnato in direzione antiorario. Poiché un arco non è una figura chiusa, non viene riempito. Sia la larghezza che l'altezza del rettangolo devono essere maggiori di 2 unità e inferiori a 32.767 unità.

Esempio

void CDCView::DrawArc(CDC *pDC)
{
   // Fill the client area with a thin circle. The circle's
   // interior is not filled. The circle's perimeter is
   // blue from 6 o'clock to 3 o'clock and red from 3
   // o'clock to 6 o'clock.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens.
   CPen penBlue;
   CPen penRed;
   CPen *pOldPen;

   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen.

   pOldPen = pDC->SelectObject(&penBlue);

   pDC->Arc(rectClient,
            CPoint(rectClient.right, rectClient.CenterPoint().y),
            CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw from 6 o'clock to 3 o'clock, counterclockwise,
   // in a red pen.
   pDC->SelectObject(&penRed);

   // Keep the same parameters, but reverse start
   // and end points.
   pDC->Arc(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::ArcTo

Disegna un arco ellittico.

BOOL ArcTo(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL ArcTo(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Parametri

x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).

y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).

x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).

y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).

x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

x4
Specifica la coordinata x del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

y4
Specifica la coordinata y del punto che definisce l'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un puntatore a una RECT struttura di dati o a un CRect oggetto per questo parametro.

ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura di dati o un CPoint oggetto per questo parametro.

ptEnd
Specifica le coordinate x e y del punto che definisce il punto finale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura di dati o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione è simile a CDC::Arc, ad eccezione del fatto che la posizione corrente viene aggiornata. I punti ( x1, y1) e ( x2, y2) specificano il rettangolo di delimitazione. Un'ellisse formata dal rettangolo di delimitazione specificato definisce la curva dell'arco. L'arco estende in senso antiorario (direzione dell'arco predefinito) dal punto in cui interseca la linea radiale dal centro del rettangolo di delimitazione a ( *x3*, y3). L'arco termina dove interseca la linea radiale dal centro del rettangolo di delimitazione a ( x4, y4). Se il punto iniziale e il punto finale sono uguali, viene disegnata un'ellisse completa.

Una linea viene disegnata dalla posizione corrente al punto iniziale dell'arco. Se non si verifica alcun errore, la posizione corrente viene impostata sul punto finale dell'arco. L'arco viene disegnato utilizzando la penna corrente; non è riempito.

CDC::Attach

Utilizzare questa funzione membro per associare un hDC oggetto all'oggetto CDC .

BOOL Attach(HDC hDC);

Parametri

hDC
Contesto di dispositivo Windows.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

l'oggetto hDC viene archiviato sia in m_hDC, nel contesto del dispositivo di output che in m_hAttribDC, il contesto del dispositivo dell'attributo.

CDC::BeginPath

Apre una parentesi di percorso nel contesto del dispositivo.

BOOL BeginPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Dopo l'apertura di una parentesi di percorso, un'applicazione può iniziare a chiamare le funzioni di disegno GDI per definire i punti che si trovano nel percorso. Un'applicazione può chiudere una parentesi di percorso aperta chiamando la EndPath funzione membro. Quando un'applicazione chiama BeginPath, tutti i percorsi precedenti vengono eliminati.

Vedere BeginPath in Windows SDK per un elenco delle funzioni di disegno che definiscono i punti in un percorso.

Esempio

// This implementation uses GDI paths to draw the outline of
// some text in a TrueType font. The path is used to record the way
// the TrueType font would be drawn. Then, the function uses the data
// returned from CDC::GetPath() to draw the font--without filling it.
void CDCView::DrawPath(CDC *pDC)
{
   // Describe a 24-point truetype font of normal weight
   LOGFONT lf;
   memset(&lf, 0, sizeof(lf));
   lf.lfHeight = -MulDiv(24, pDC->GetDeviceCaps(LOGPIXELSY), 72);
   lf.lfWeight = FW_NORMAL;
   lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;

   // create and select it
   CFont newFont;
   if (!newFont.CreateFontIndirect(&lf))
      return;
   CFont *pOldFont = pDC->SelectObject(&newFont);

   // use a path to record how the text was drawn
   pDC->BeginPath();
   pDC->TextOut(10, 10, _T("Outline this!"));
   pDC->EndPath();

   // Find out how many points are in the path. Note that
   // for long strings or complex fonts, this number might be
   // gigantic!
   int nNumPts = pDC->GetPath(NULL, NULL, 0);
   if (nNumPts == 0)
      return;

   // Allocate memory to hold points and stroke types from
   // the path.
   LPPOINT lpPoints = NULL;
   LPBYTE lpTypes = NULL;
   try
   {
      lpPoints = new POINT[nNumPts];
      lpTypes = new BYTE[nNumPts];
   }
   catch (CException *pe)
   {
      delete[] lpPoints;
      lpPoints = NULL;
      delete[] lpTypes;
      lpTypes = NULL;
      pe->Delete();
   }
   if (lpPoints == NULL || lpTypes == NULL)
      return;

   // Now that we have the memory, really get the path data.
   nNumPts = pDC->GetPath(lpPoints, lpTypes, nNumPts);

   // If it worked, draw the lines. Windows 98 doesn't support
   // the PolyDraw API, so we use our own member function to do
   // similar work. If you're targeting only later versions of
   // Windows, you can use the PolyDraw() API and avoid the
   // COutlineView::PolyDraw() member function.

   if (nNumPts != -1)
      pDC->PolyDraw(lpPoints, lpTypes, nNumPts);

   // Release the memory we used
   delete[] lpPoints;
   delete[] lpTypes;

   // Put back the old font
   pDC->SelectObject(pOldFont);

   return;
}

CDC::BitBlt

Copia una bitmap dal contesto del dispositivo di origine in questo contesto di dispositivo corrente.

BOOL BitBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    DWORD dwRop);

Parametri

x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo di destinazione.

y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di destinazione.

nWidth
Specifica la larghezza(in unità logiche) del rettangolo di destinazione e della bitmap di origine.

nHeight
Specifica l'altezza (in unità logiche) del rettangolo di destinazione e della bitmap di origine.

pSrcDC
Puntatore a un CDC oggetto che identifica il contesto di dispositivo da cui verrà copiata la bitmap. Deve essere NULL se dwRop specifica un'operazione raster che non include un'origine.

xSrc
Specifica la coordinata x logica dell'angolo superiore sinistro della bitmap di origine.

ySrc
Specifica la coordinata y logica dell'angolo superiore sinistro della bitmap di origine.

dwRop
Specifica l'operazione raster da eseguire. I codici di operazione raster definiscono il modo in cui GDI combina i colori nelle operazioni di output che coinvolgono un pennello corrente, una possibile bitmap di origine e una bitmap di destinazione. Per un elenco dei codici di operazione raster per dwRop e le relative descrizioni, vedere BitBlt in Windows SDK

Per un elenco completo dei codici di operazione raster, vedere Informazioni sui codici di operazione raster in Windows SDK.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

L'applicazione può allineare le finestre o le aree client sui limiti dei byte per garantire che le BitBlt operazioni si verifichino su rettangoli allineati ai byte. Impostare i CS_BYTEALIGNWINDOW flag o CS_BYTEALIGNCLIENT quando si registrano le classi della finestra.

BitBlt le operazioni sui rettangoli allineati ai byte sono notevolmente più veloci rispetto BitBlt alle operazioni sui rettangoli non allineati a byte. Se si desidera specificare stili di classe come l'allineamento dei byte per il proprio contesto di dispositivo, è necessario registrare una classe finestra anziché basarsi sulle classi di Microsoft Foundation per farlo. Usare la funzione AfxRegisterWndClassglobale .

GDI trasforma nWidth e nHeight, una volta usando il contesto del dispositivo di destinazione e una volta usando il contesto del dispositivo di origine. Se gli extent risultanti non corrispondono, GDI usa la funzione Windows StretchBlt per comprimere o estendere la bitmap di origine in base alle esigenze.

Se le bitmap di destinazione, origine e motivo non hanno lo stesso formato di colore, la BitBlt funzione converte le bitmap di origine e pattern in modo che corrispondano alla destinazione. I colori di primo piano e di sfondo della bitmap di destinazione vengono usati nella conversione.

Quando la BitBlt funzione converte una bitmap monocromatica in colore, imposta i bit bianchi (1) sul colore di sfondo e i bit neri (0) sul colore di primo piano. Vengono usati i colori di primo piano e di sfondo del contesto di dispositivo di destinazione. Per convertire il colore in monocromatico, BitBlt imposta i pixel che corrispondono al colore di sfondo su bianco e imposta tutti gli altri pixel su nero. BitBlt usa i colori di primo piano e di sfondo del contesto del dispositivo colore per eseguire la conversione da colore a monocromatico.

Non tutti i contesti di dispositivo supportano BitBlt. Per verificare se un determinato contesto di dispositivo supporta BitBlt, usare la GetDeviceCaps funzione membro e specificare l'indice RASTERC piattaforma di strumenti analitici.

Esempio

Vedere l'esempio per CDC::CreateCompatibleDC.

CDC::CDC

Costruisce un oggetto CDC.

CDC();

CDC::Chord

Disegna un accordo (figura chiusa delimitata dall'intersezione di un'ellisse e un segmento di linea).

BOOL Chord(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Chord(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Parametri

x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione dell'accordo (in unità logiche).

y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione dell'accordo (in unità logiche).

x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione dell'accordo (in unità logiche).

y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione dell'accordo (in unità logiche).

x3
Specifica la coordinata x del punto che definisce il punto iniziale dell'accordo (in unità logiche).

y3
Specifica la coordinata y del punto che definisce il punto iniziale dell'accordo (in unità logiche).

x4
Specifica la coordinata x del punto che definisce l'endpoint dell'accordo (in unità logiche).

y4
Specifica la coordinata y del punto che definisce l'endpoint dell'accordo (in unità logiche).

lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un LPRECT oggetto o CRect per questo parametro.

ptStart
Specifica le coordinate x e y del punto che definisce il punto iniziale dell'accordo (in unità logiche). Questo punto non deve mentire esattamente sul accordo. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

*ptEnd*
Specifica le coordinate x e y del punto che definisce il punto finale dell'accordo (in unità logiche). Questo punto non deve mentire esattamente sul accordo. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

I parametri ( x1, y1) e ( x2, y2) specificano rispettivamente gli angoli superiore sinistro e inferiore destro di un rettangolo che delimita l'ellisse che fa parte dell'accordo. I parametri ( x3, y3) e ( x4, y4) specificano gli endpoint di una riga che interseca l'ellisse. La corda viene disegnata utilizzando la penna selezionata e riempita utilizzando il pennello selezionato.

La figura disegnata dalla Chord funzione si estende fino a , ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1.

Esempio

void CDCView::DrawChord(CDC *pDC)
{
   // Fill the client area with a circle. The circle is
   // blue and filled with blue, but has a chord cut out
   // of it from 3 o'clock to 6 o'clock. That chord is
   // red and filled with a red diagonal hatch.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens and similar brushes.
   CPen penBlue, penRed;
   CBrush brushBlue, brushRed;
   CBrush *pOldBrush;
   CPen *pOldPen;

   brushBlue.CreateSolidBrush(RGB(0, 0, 255));
   brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen with a solid blue fill.
   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

   pDC->Chord(rectClient,
              CPoint(rectClient.right, rectClient.CenterPoint().y),
              CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw the remaining quarter chord from 6 o'clock
   // to 3 o'clock, counterclockwise, in a red pen
   // with the hatched brush.
   pDC->SelectObject(&penRed);
   pDC->SelectObject(&brushRed);

   // Keep the same parameters, but reverse start and
   // end points.
   pDC->Chord(rectClient,
              CPoint(rectClient.CenterPoint().x, rectClient.right),
              CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::CloseFigure

Chiude una figura aperta in un percorso.

BOOL CloseFigure();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

La funzione chiude la figura disegnando una linea dalla posizione corrente al primo punto della figura (in genere, il punto specificato dalla chiamata più recente alla MoveTo funzione membro) e connette le linee utilizzando lo stile di unione linea. Se una figura viene chiusa usando la LineTo funzione membro anziché CloseFigure, vengono usati i estremità finali per creare l'angolo anziché un join. CloseFigure deve essere chiamato solo se è presente una parentesi di percorso aperta nel contesto del dispositivo.

Una figura in un percorso è aperta a meno che non venga chiusa in modo esplicito usando questa funzione. Una figura può essere aperta anche se il punto corrente e il punto iniziale della figura sono uguali. Qualsiasi linea o curva aggiunta al percorso dopo CloseFigure l'avvio di una nuova figura.

CDC::CreateCompatibleDC

Crea un contesto di dispositivo di memoria compatibile con il dispositivo specificato da pDC.

BOOL CreateCompatibleDC(CDC* pDC);

Parametri

pDC
Puntatore a un contesto di dispositivo. Se pDC è NULL, la funzione crea un contesto di dispositivo di memoria compatibile con la visualizzazione del sistema.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Un contesto di dispositivo di memoria è un blocco di memoria che rappresenta una superficie di visualizzazione. Può essere usato per preparare le immagini in memoria prima di copiarle nella superficie effettiva del dispositivo compatibile.

Quando viene creato un contesto di dispositivo di memoria, GDI seleziona automaticamente una bitmap monocromatica monocromatica per essa. Le funzioni di output GDI possono essere usate con un contesto di dispositivo di memoria solo se è stata creata e selezionata una bitmap in tale contesto.

Questa funzione può essere usata solo per creare contesti di dispositivo compatibili per i dispositivi che supportano operazioni raster. Per informazioni sui trasferimenti di blocchi di bit tra contesti di dispositivo, vedere la CDC::BitBlt funzione membro. Per determinare se un contesto di dispositivo supporta operazioni raster, vedere la RC_BITBLT funzionalità raster nella funzione CDC::GetDeviceCapsmembro .

Esempio

// This handler loads a bitmap from system resources,
// centers it in the view, and uses BitBlt() to paint the bitmap
// bits.
void CDCView::DrawBitmap(CDC *pDC)
{
   // load IDB_BITMAP1 from our resources
   CBitmap bmp;
   if (bmp.LoadBitmap(IDB_BITMAP1))
   {
      // Get the size of the bitmap
      BITMAP bmpInfo;
      bmp.GetBitmap(&bmpInfo);

      // Create an in-memory DC compatible with the
      // display DC we're using to paint
      CDC dcMemory;
      dcMemory.CreateCompatibleDC(pDC);

      // Select the bitmap into the in-memory DC
      CBitmap *pOldBitmap = dcMemory.SelectObject(&bmp);

      // Find a centerpoint for the bitmap in the client area
      CRect rect;
      GetClientRect(&rect);
      int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
      int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;

      // Copy the bits from the in-memory DC into the on-
      // screen DC to actually do the painting. Use the centerpoint
      // we computed for the target offset.
      pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
                  0, 0, SRCCOPY);

      dcMemory.SelectObject(pOldBitmap);
   }
   else
   {
      TRACE0("ERROR: Where's IDB_BITMAP1?\n");
   }
}

CDC::CreateDC

Crea un contesto di dispositivo per il dispositivo specificato.

BOOL CreateDC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

Parametri

lpszDriverName
Punta a una stringa con terminazione Null che specifica il nome file (senza estensione) del driver di dispositivo (ad esempio, "EPSON"). È anche possibile passare un CString oggetto per questo parametro.

lpszDeviceName
Punta a una stringa con terminazione Null che specifica il nome del dispositivo specifico da supportare ,ad esempio "EPSON FX-80". Il lpszDeviceName parametro viene usato se il modulo supporta più dispositivi. È anche possibile passare un CString oggetto per questo parametro.

lpszOutput
Punta a una stringa con terminazione Null che specifica il nome del file o del dispositivo per il supporto di output fisico (porta di output o file). È anche possibile passare un CString oggetto per questo parametro.

lpInitData
Punta a una DEVMODE struttura contenente dati di inizializzazione specifici del dispositivo per il driver di dispositivo. La funzione Windows DocumentProperties recupera questa struttura compilata per un determinato dispositivo. Il lpInitData parametro deve essere NULL se il driver di dispositivo deve usare l'inizializzazione predefinita (se presente) specificata dall'utente tramite il Pannello di controllo.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il PRINT.H file di intestazione è obbligatorio se viene utilizzata la DEVMODE struttura .

I nomi dei dispositivi seguono queste convenzioni: un punto finale (:) consigliato, ma facoltativo. Windows rimuove i due punti di terminazione in modo che il nome di un dispositivo che termina con due punti venga mappato alla stessa porta dello stesso nome senza due punti. I nomi dei driver e delle porte non devono contenere spazi iniziali o finali. Le funzioni di output GDI non possono essere usate con contesti informativi.

CDC::CreateIC

Crea un contesto informativo per il dispositivo specificato.

BOOL CreateIC(
    LPCTSTR lpszDriverName,
    LPCTSTR lpszDeviceName,
    LPCTSTR lpszOutput,
    const void* lpInitData);

Parametri

lpszDriverName
Punta a una stringa con terminazione Null che specifica il nome file (senza estensione) del driver di dispositivo (ad esempio, "EPSON"). È possibile passare un CString oggetto per questo parametro.

lpszDeviceName
Punta a una stringa con terminazione Null che specifica il nome del dispositivo specifico da supportare ,ad esempio "EPSON FX-80". Il lpszDeviceName parametro viene usato se il modulo supporta più dispositivi. È possibile passare un CString oggetto per questo parametro.

lpszOutput
Punta a una stringa con terminazione Null che specifica il nome del file o del dispositivo per il supporto di output fisico (file o porta). È possibile passare un CString oggetto per questo parametro.

lpInitData
Punta ai dati di inizializzazione specifici del dispositivo per il driver di dispositivo. Il lpInitData parametro deve essere NULL se il driver di dispositivo deve usare l'inizializzazione predefinita (se presente) specificata dall'utente tramite il Pannello di controllo. Vedere CreateDC per il formato dati per l'inizializzazione specifica del dispositivo.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

Il contesto delle informazioni offre un modo rapido per ottenere informazioni sul dispositivo senza creare un contesto di dispositivo.

I nomi dei dispositivi seguono queste convenzioni: un punto finale (:) consigliato, ma facoltativo. Windows rimuove i due punti di terminazione in modo che il nome di un dispositivo che termina con due punti venga mappato alla stessa porta dello stesso nome senza due punti. I nomi dei driver e delle porte non devono contenere spazi iniziali o finali. Le funzioni di output GDI non possono essere usate con contesti informativi.

CDC::DeleteDC

In generale, non chiamare questa funzione; il distruttore lo farà per te.

BOOL DeleteDC();

Valore restituito

Diverso da zero se la funzione è stata completata correttamente; in caso contrario, 0.

Osservazioni:

La DeleteDC funzione membro elimina i contesti di dispositivo Windows associati all'oggetto m_hDC corrente CDC . Se questo CDC oggetto è l'ultimo contesto di dispositivo attivo per un determinato dispositivo, vengono rilasciate tutte le risorse di archiviazione e di sistema usate dal dispositivo.

Un'applicazione non deve chiamare DeleteDC se gli oggetti sono stati selezionati nel contesto del dispositivo. Gli oggetti devono essere selezionati prima del contesto di dispositivo prima dell'eliminazione.

Un'applicazione non deve eliminare un contesto di dispositivo il cui handle è stato ottenuto chiamando CWnd::GetDC. Al contrario, deve chiamare CWnd::ReleaseDC per liberare il contesto di dispositivo. Le CClientDC classi e CWindowDC vengono fornite per eseguire il wrapping di questa funzionalità.

La DeleteDC funzione viene in genere usata per eliminare i contesti di dispositivo creati con CreateDC, CreateICo CreateCompatibleDC.

Esempio

Vedere l'esempio per CPrintDialog::GetPrinterDC.

CDC::DeleteTempMap

Chiamato automaticamente dal CWinApp gestore inattiva, DeleteTempMap elimina tutti gli oggetti temporanei CDC creati da FromHandle, ma non elimina temporaneamente gli handle del contesto di dispositivo ( hDCs) associati temporaneamente agli CDC oggetti .

static void PASCAL DeleteTempMap();

CDC::Detach

Chiamare questa funzione per scollegare m_hDC (il contesto del dispositivo di output) dall'oggetto CDC e impostare sia m_hDC che m_hAttribDC su NULL.

HDC Detach();

Valore restituito

Contesto di dispositivo Windows.

CDC::DPtoHIMETRIC

Usare questa funzione quando si assegnano HIMETRIC dimensioni a OLE, convertendo i pixel in HIMETRIC.

void DPtoHIMETRIC(LPSIZE lpSize) const;

Parametri

lpSize
Punta a una struttura o a un oggetto SIZE.CSize

Osservazioni:

Se la modalità di mapping dell'oggetto contesto di dispositivo è MM_LOENGLISH, , MM_HIENGLISHMM_LOMETRICo MM_HIMETRIC, la conversione è basata sul numero di pixel nel pollice fisico. Se la modalità di mapping è una delle altre modalità non vincolate ,ad esempio MM_TEXT, la conversione è basata sul numero di pixel nel pollice logico.

CDC::DPtoLP

Converte le unità di dispositivo in unità logiche.

void DPtoLP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void DPtoLP(LPRECT lpRect) const;
void DPtoLP(LPSIZE lpSize) const;

Parametri

lpPoints
Punta a una matrice di POINT strutture o CPoint oggetti.

nCount
Numero di punti nella matrice.

lpRect
Punta a una struttura o CRect a un RECT oggetto . Questo parametro viene usato per il semplice caso di conversione di un rettangolo da punti dispositivo a punti logici.

lpSize
Punta a una struttura o CSize a un SIZE oggetto .

Osservazioni:

La funzione esegue il mapping delle coordinate di ogni punto o dimensione di una dimensione, dal sistema di coordinate del dispositivo al sistema di coordinate logico GDI. La conversione dipende dalla modalità di mapping corrente e dalle impostazioni delle origini e degli extent per la finestra e il viewport del dispositivo.

CDC::Draw3dRect

Chiamare questa funzione membro per disegnare un rettangolo tridimensionale.

void Draw3dRect(
    LPCRECT lpRect,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

void Draw3dRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clrTopLeft,
    COLORREF clrBottomRight);

Parametri

lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un puntatore a una RECT struttura o a un CRect oggetto per questo parametro.

clrTopLeft
Specifica il colore dei lati superiore e sinistro del rettangolo tridimensionale.

clrBottomRight
Specifica il colore dei lati inferiore e destro del rettangolo tridimensionale.

x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo tridimensionale.

y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo tridimensionale.

cx
Specifica la larghezza del rettangolo tridimensionale.

cy
Specifica l'altezza del rettangolo tridimensionale.

Osservazioni:

Il rettangolo verrà disegnato con i lati superiore e sinistro nel colore specificato da clrTopLeft e i lati inferiore e destro nel colore specificato da clrBottomRight.

Esempio

void CDCView::Draw3dRect(CDC *pDC)
{
   // get the client area
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels on all sides
   rect.DeflateRect(20, 20);

   // draw a rectangle with red top and left sides, and
   // green right and bottom sides.
   pDC->Draw3dRect(rect, RGB(255, 0, 0), RGB(0, 255, 0));

   // This call to the four-integer override would draw
   // the same rectangle with a little less convenience:

   // pDC->Draw3dRect(rect.left, rect.top, rect.Width(), rect.Height(),
   //    RGB(255, 0, 0), RGB(0, 255, 0));
}

CDC::DrawDragRect

Chiamare ripetutamente questa funzione membro per ridisegnare un rettangolo di trascinamento.

void DrawDragRect(
    LPCRECT lpRect,
    SIZE size,
    LPCRECT lpRectLast,
    SIZE sizeLast,
    CBrush* pBrush = NULL,
    CBrush* pBrushLast = NULL);

Parametri

lpRect
Punta a una RECT struttura o a un CRect oggetto che specifica le coordinate logiche di un rettangolo, in questo caso la posizione finale del rettangolo da ridisegnare.

size
Specifica lo spostamento dall'angolo superiore sinistro del bordo esterno all'angolo superiore sinistro del bordo interno (ovvero lo spessore del bordo) di un rettangolo.

lpRectLast
Punta a una RECT struttura o a un CRect oggetto che specifica le coordinate logiche della posizione di un rettangolo, in questo caso la posizione originale del rettangolo da ridisegnare.

sizeLast
Specifica lo spostamento dall'angolo superiore sinistro del bordo esterno all'angolo superiore sinistro del bordo interno (ovvero lo spessore del bordo) del rettangolo originale da ridisegnare.

pBrush
Puntatore a un oggetto pennello. Impostare su NULL per usare il pennello halftone predefinito.

pBrushLast
Puntatore all'ultimo oggetto pennello utilizzato. Impostare su NULL per usare il pennello halftone predefinito.

Osservazioni:

Chiamarlo in un ciclo mentre si esegue il campionamento della posizione del mouse per fornire feedback visivo. Quando si chiama DrawDragRect, il rettangolo precedente viene cancellato e ne viene disegnato uno nuovo. Ad esempio, quando l'utente trascina un rettangolo sullo schermo, DrawDragRect cancellerà il rettangolo originale e ne ridisegnerà uno nuovo nella nuova posizione. Per impostazione predefinita, DrawDragRect disegna il rettangolo usando un pennello mezzotone per eliminare lo sfarfallio e per creare l'aspetto di un rettangolo che si muove senza problemi.

La prima volta che si chiama DrawDragRect, il lpRectLast parametro deve essere NULL.

CDC::DrawEdge

Chiamare questa funzione membro per disegnare i bordi di un rettangolo del tipo e dello stile specificati.

BOOL DrawEdge(
    LPRECT lpRect,
    UINT nEdge,
    UINT nFlags);

Parametri

lpRect
Puntatore a una RECT struttura che contiene le coordinate logiche del rettangolo.

nEdge
Specifica il tipo di bordo interno ed esterno da disegnare. Questo parametro deve essere una combinazione di un flag di bordo interno e di un flag di bordo esterno. Vedere DrawEdge in Windows SDK per una tabella dei tipi di parametro.

nFlags
Flag che specificano il tipo di bordo da disegnare. Vedere DrawEdge in Windows SDK per una tabella dei valori del parametro. Per le linee diagonali, i BF_RECT flag specificano il punto finale del vettore delimitato dal parametro rettangolo.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

CDC::DrawEscape

Accede alle funzionalità di disegno di una visualizzazione video che non sono direttamente disponibili tramite l'interfaccia GDI (Graphics Device Interface).

int DrawEscape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData);

Parametri

nEscape
Specifica la funzione di escape da eseguire.

nInputSize
Specifica il numero di byte di dati a cui punta il lpszInputData parametro .

lpszInputData
Punta alla struttura di input necessaria per l'escape specificato.

Valore restituito

Specifica il risultato della funzione. Maggiore di zero se ha esito positivo, ad eccezione dell'escape QUERYESCSUPPORT di disegno, che controlla solo l'implementazione; oppure zero se l'escape non è implementato o minore di zero se si è verificato un errore.

Osservazioni:

Quando un'applicazione chiama DrawEscape, i dati identificati da nInputSize e lpszInputData vengono passati direttamente al driver di visualizzazione specificato.

CDC::DrawFocusRect

Disegna un rettangolo nello stile utilizzato per indicare che il rettangolo ha lo stato attivo.

void DrawFocusRect(LPCRECT lpRect);

Parametri

lpRect
Punta a una RECT struttura o a un CRect oggetto che specifica le coordinate logiche del rettangolo da disegnare.

Osservazioni:

Poiché si tratta di una funzione XOR booleana (^), la chiamata a questa funzione una seconda volta con lo stesso rettangolo rimuove il rettangolo dalla visualizzazione. Impossibile scorrere il rettangolo disegnato da questa funzione. Per scorrere un'area contenente un rettangolo disegnato da questa funzione, chiamare DrawFocusRect prima per rimuovere il rettangolo dalla visualizzazione, quindi scorrere l'area e quindi chiamare DrawFocusRect di nuovo per disegnare il rettangolo nella nuova posizione.

Attenzione

DrawFocusRect funziona solo in MM_TEXT modalità . In altre modalità, questa funzione non disegna correttamente il rettangolo di attivazione, ma non restituisce valori di errore.

CDC::DrawFrameControl

Chiamare questa funzione membro per disegnare un controllo frame del tipo e dello stile specificati.

BOOL DrawFrameControl(
    LPRECT lpRect,
    UINT nType,
    UINT nState);

Parametri

lpRect
Puntatore a una RECT struttura che contiene le coordinate logiche del rettangolo.

nType
Specifica il tipo di controllo cornice da disegnare. Per un elenco dei valori possibili di questo parametro, vedere il uType parametro in DrawFrameControl in Windows SDK.

nState
Specifica lo stato iniziale del controllo frame. Può essere uno o più dei valori descritti per il uState parametro in DrawFrameControl in Windows SDK. Usare il nState valore DFCS_ADJUSTRECT per regolare il rettangolo di delimitazione per escludere il bordo circostante del pulsante di pressione.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

In diversi casi, nState dipende dal nType parametro . L'elenco seguente mostra la relazione tra i quattro nType valori e nState:

  • DFC_BUTTON

    • DFCS_BUTTON3STATE Pulsante a tre stati

    • DFCS_BUTTONCHECK Casella di controllo

    • DFCS_BUTTONPUSH Pulsante

    • DFCS_BUTTONRADIO Pulsante di opzione

    • DFCS_BUTTONRADIOIMAGE Immagine per il pulsante di opzione (non è necessaria l'immagine)

    • DFCS_BUTTONRADIOMASK Maschera per il pulsante di opzione (nonsquare needs mask)

  • DFC_CAPTION

    • DFCS_CAPTIONCLOSE Pulsante Chiudi

    • DFCS_CAPTIONHELP Pulsante ?

    • DFCS_CAPTIONMAX Pulsante Ingrandisci

    • DFCS_CAPTIONMIN Pulsante Riduci a icona

    • DFCS_CAPTIONRESTORE Pulsante Ripristina

  • DFC_MENU

    • DFCS_MENUARROW Freccia sottomenu

    • DFCS_MENUBULLET Proiettile

    • DFCS_MENUCHECK Segno di spunta

  • DFC_SCROLL

    • DFCS_SCROLLCOMBOBOX Barra di scorrimento casella combinata

    • DFCS_SCROLLDOWN Freccia giù della barra di scorrimento

    • DFCS_SCROLLLEFT Freccia sinistra della barra di scorrimento

    • DFCS_SCROLLRIGHT Freccia destra della barra di scorrimento

    • DFCS_SCROLLSIZEGRIP Ridimensiona il grip nell'angolo inferiore destro della finestra

    • DFCS_SCROLLUP Freccia su della barra di scorrimento

Esempio

Questo codice disegna il gripper delle dimensioni nell'angolo inferiore destro della finestra. È appropriato per il OnPaint gestore di una finestra di dialogo, che non dispone di stili e normalmente non contiene altri controlli (ad esempio una barra di stato) che possono assegnare un gripper di dimensioni.

void CDCView::DrawFC(CDC *pDC)
{
   CRect rc;
   GetClientRect(&rc);

   rc.left = rc.right - ::GetSystemMetrics(SM_CXHSCROLL);
   rc.top = rc.bottom - ::GetSystemMetrics(SM_CYVSCROLL);

   pDC->DrawFrameControl(rc, DFC_SCROLL, DFCS_SCROLLSIZEGRIP);
}

CDC::DrawIcon

Disegna un'icona nel dispositivo rappresentato dall'oggetto corrente CDC .

BOOL DrawIcon(
    int x,
    int y,
    HICON hIcon);

BOOL DrawIcon(
    POINT point,
    HICON hIcon);

Parametri

x
Specifica la coordinata x logica dell'angolo superiore sinistro dell'icona.

y
Specifica la coordinata y logica dell'angolo superiore sinistro dell'icona.

hIcon
Identifica l'handle dell'icona da disegnare.

point
Specifica le coordinate x e y logiche dell'angolo superiore sinistro dell'icona. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione è stata completata correttamente; in caso contrario, 0.

Osservazioni:

La funzione posiziona l'angolo superiore sinistro dell'icona nella posizione specificata da x e y. La posizione è soggetta alla modalità di mapping corrente del contesto di dispositivo.

La risorsa icona deve essere stata caricata in precedenza usando le funzioni CWinApp::LoadIcon, CWinApp::LoadStandardIcono CWinApp::LoadOEMIcon. È necessario selezionare la MM_TEXT modalità di mapping prima di usare questa funzione.

Esempio

Vedere l'esempio per CWnd::IsIconic.

CDC::DrawState

Chiamare questa funzione membro per visualizzare un'immagine e applicare un effetto visivo per indicare uno stato, ad esempio uno stato disabilitato o predefinito.

Nota

Per tutti gli nFlag stati ad eccezione DSS_NORMALdi , l'immagine viene convertita in monocromatica prima dell'applicazione dell'effetto visivo.

BOOL DrawState(
    CPoint pt,
    CSize size,
    HBITMAP hBitmap,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    CBitmap* pBitmap,
    UINT nFlags,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    HICON hIcon,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    HICON hIcon,
    UINT nFlags,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    LPCTSTR lpszText,
    UINT nFlags,
    BOOL bPrefixText = TRUE,
    int nTextLen = 0,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    LPCTSTR lpszText,
    UINT nFlags,
    BOOL bPrefixText = TRUE,
    int nTextLen = 0,
    CBrush* pBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    DRAWSTATEPROC lpDrawProc,
    LPARAM lData,
    UINT nFlags,
    HBRUSH hBrush = NULL);

BOOL DrawState(
    CPoint pt,
    CSize size,
    DRAWSTATEPROC lpDrawProc,
    LPARAM lData,
    UINT nFlags,
    CBrush* pBrush = NULL);

Parametri

pt
Specifica la posizione dell'immagine.

size
Specifica le dimensioni dell'immagine.

hBitmap
Handle di una bitmap.

nFlags
Flag che specificano il tipo di immagine e lo stato. Vedere DrawState in Windows SDK per i possibili tipi e stati nFlags .

hBrush
Handle di un pennello.

pBitmap
Puntatore a un oggetto CBitmap.

pBrush
Puntatore a un oggetto CBrush.

hIcon
Handle di un'icona.

lpszText
Puntatore al testo.

bPrefixText
Testo che può contenere un tasto di scelta rapida. Il lData parametro specifica l'indirizzo della stringa e il nTextLen parametro specifica la lunghezza. Se nTextLen è 0, si presuppone che la stringa sia con terminazione Null.

nTextLen
Lunghezza della stringa di testo a lpszTextcui punta . Se nTextLen è 0, si presuppone che la stringa sia con terminazione Null.

lpDrawProc
Puntatore a una funzione di callback usata per eseguire il rendering di un'immagine. Questo parametro è obbligatorio se il tipo di immagine in nFlags è DST_COMPLEX. È facoltativo e può essere NULL se il tipo di immagine è DST_TEXT. Per tutti gli altri tipi di immagine, questo parametro viene ignorato. Per altre informazioni sulla funzione di callback, vedere la DrawStateProc funzione in Windows SDK.

lData
Specifica le informazioni sull'immagine. Il significato di questo parametro dipende dal tipo di immagine.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

CDC::DrawText

Chiamare questa funzione membro per formattare il testo nel rettangolo specificato. Per specificare altre opzioni di formattazione, usare CDC::DrawTextEx.

virtual int DrawText(
    LPCTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat);

int DrawText(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat);

Parametri

lpszString
Punta alla stringa da disegnare. Se nCount è -1, la stringa deve essere con terminazione Null.

nCount
Specifica il numero di caratteri nella stringa. Se nCount è -1, lpszString si presuppone che sia un puntatore lungo a una stringa con terminazione Null e DrawText calcola automaticamente il conteggio dei caratteri.

lpRect
Punta a una struttura o CRect a un RECT oggetto che contiene il rettangolo (in coordinate logiche) in cui deve essere formattato il testo.

str
Oggetto CString contenente i caratteri specificati da disegnare.

nFormat
Specifica il metodo di formattazione del testo. Può essere qualsiasi combinazione dei valori descritti per il uFormat parametro in DrawText in Windows SDK. (combinare usando l'operatore OR bit per bit):

Nota

Alcune uFormat combinazioni di flag possono causare la modifica della stringa passata. L'uso di DT_MODIFYSTRING con DT_END_ELLIPSIS o DT_PATH_ELLIPSIS può causare la modifica della stringa, causando un'asserzione nell'override CString . I valori DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNALDT_NOCLIP, e DT_NOPREFIX non possono essere usati con il DT_TABSTOP valore .

Valore restituito

Altezza del testo se la funzione ha esito positivo.

Osservazioni:

Formatta il testo espandendo le schede in spazi appropriati, allineando il testo a sinistra, a destra o al centro del rettangolo specificato e suddividendo il testo in righe che rientrano nel rettangolo specificato. Il tipo di formattazione viene specificato da nFormat.

Questa funzione membro usa il tipo di carattere, il colore del testo e il colore di sfondo del contesto di dispositivo selezionati per disegnare il testo. A meno che non venga usato il DT_NOCLIP formato, DrawText ritaglia il testo in modo che il testo non venga visualizzato all'esterno del rettangolo specificato. Si presuppone che la formattazione abbia più righe, a meno che non venga specificato il DT_SINGLELINE formato.

Se il tipo di carattere selezionato è troppo grande per il rettangolo specificato, la DrawText funzione membro non tenta di sostituire un tipo di carattere più piccolo.

Se viene specificato il DT_CALCRECT flag, il rettangolo specificato da lpRect verrà aggiornato in modo da riflettere la larghezza e l'altezza necessarie per disegnare il testo.

Se il flag di allineamento del TA_UPDATECP testo è stato impostato (vedere CDC::SetTextAlign), DrawText visualizzerà il testo a partire dalla posizione corrente, anziché a sinistra del rettangolo specificato. DrawText non eseguirà il wrapping del testo quando il TA_UPDATECP flag è stato impostato (ovvero, il DT_WORDBREAK flag non avrà alcun effetto).

Il colore del testo può essere impostato da CDC::SetTextColor.

CDC::DrawTextEx

Formatta il testo nel rettangolo specificato.

virtual int DrawTextEx(
    LPTSTR lpszString,
    int nCount,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

int DrawTextEx(
    const CString& str,
    LPRECT lpRect,
    UINT nFormat,
    LPDRAWTEXTPARAMS lpDTParams);

Parametri

lpszString
Punta alla stringa da disegnare. Se nCount è -1, la stringa deve essere terminata con null.

nCount
Specifica il numero di caratteri nella stringa. Se nCount è -1, lpszString si presuppone che sia un puntatore lungo a una stringa con terminazione Null e DrawText calcola automaticamente il conteggio dei caratteri.

lpRect
Punta a una struttura o CRect a un RECT oggetto che contiene il rettangolo (in coordinate logiche) in cui deve essere formattato il testo.

str
Oggetto CString contenente i caratteri specificati da disegnare.

nFormat
Specifica il metodo di formattazione del testo. Può essere qualsiasi combinazione dei valori descritti per il uFormat parametro in DrawText in Windows SDK. (Combinare usando bit per bitOperatore OR :

Nota

Alcune uFormat combinazioni di flag possono causare la modifica della stringa passata. L'uso di DT_MODIFYSTRING con DT_END_ELLIPSIS o DT_PATH_ELLIPSIS può causare la modifica della stringa, causando un'asserzione nell'override CString . I valori DT_CALCRECT, DT_EXTERNALLEADING, DT_INTERNALDT_NOCLIP, e DT_NOPREFIX non possono essere usati con il DT_TABSTOP valore .

lpDTParams
Puntatore a una DRAWTEXTPARAMS struttura che specifica più opzioni di formattazione. Questo parametro può essere NULL.

Osservazioni:

Formatta il testo espandendo le schede in spazi appropriati, allineando il testo a sinistra, a destra o al centro del rettangolo specificato e suddividendo il testo in righe che rientrano nel rettangolo specificato. Il tipo di formattazione viene specificato da nFormat e lpDTParams. Per altre informazioni, vedere CDC::DrawText e DrawTextEx in Windows SDK.

Il colore del testo può essere impostato da CDC::SetTextColor.

CDC::Ellipse

Disegna un ellisse.

BOOL Ellipse(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Ellipse(LPCRECT lpRect);

Parametri

x1
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo di delimitazione dell'ellisse.

y1
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di delimitazione dell'ellisse.

x2
Specifica la coordinata x logica dell'angolo inferiore destro del rettangolo di delimitazione dell'ellisse.

y2
Specifica la coordinata y logica dell'angolo inferiore destro del rettangolo di delimitazione dell'ellisse.

lpRect
Specifica il rettangolo di delimitazione dell'ellisse. È anche possibile passare un CRect oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il centro dell'ellisse è il centro del rettangolo di delimitazione specificato da x1, y1x2, e y2o lpRect. L'ellisse viene disegnata con la penna corrente e il suo interno viene riempito con il pennello corrente.

La figura disegnata da questa funzione si estende fino a, ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1.

Se la larghezza o l'altezza del rettangolo di delimitazione è 0, non viene disegnata alcuna ellisse.

CDC::EndDoc

Termina un processo di stampa avviato da una chiamata alla StartDoc funzione membro.

int EndDoc();

Valore restituito

Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.

Osservazioni:

Questa funzione membro sostituisce l'escape della ENDDOC stampante e deve essere chiamata immediatamente dopo il completamento di un processo di stampa riuscito.

Se un'applicazione rileva un errore di stampa o un'operazione di stampa annullata, non deve tentare di terminare l'operazione utilizzando EndDoc o AbortDoc. GDI termina automaticamente l'operazione prima di restituire il valore di errore.

Questa funzione non deve essere usata all'interno dei metafile.

Esempio

Vedere l'esempio per CDC::StartDoc.

CDC::EndPage

Informa il dispositivo che l'applicazione ha completato la scrittura in una pagina.

int EndPage();

Valore restituito

Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.

Osservazioni:

Questa funzione membro viene in genere usata per indirizzare il driver di dispositivo a passare a una nuova pagina.

Questa funzione membro sostituisce l'escape della NEWFRAME stampante. A differenza di NEWFRAME, questa funzione viene sempre chiamata dopo la stampa di una pagina.

Esempio

Vedere l'esempio per CDC::StartDoc.

CDC::EndPath

Chiude una parentesi di percorso e seleziona il percorso definito dalla parentesi quadra nel contesto del dispositivo.

BOOL EndPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Esempio

Vedere l'esempio per CDC::BeginPath.

CDC::EnumObjects

Enumera le penne e i pennelli disponibili in un contesto di dispositivo.

int EnumObjects(
    int nObjectType,
    int (CALLBACK* lpfn)(
    LPVOID,
    LPARAM),
    LPARAM lpData);

Parametri

nObjectType
Specifica il tipo di oggetto. Può avere i valori OBJ_BRUSH o OBJ_PEN.

lpfn
Indirizzo dell'istanza di routine della funzione di callback fornita dall'applicazione. Vedere la sezione "Osservazioni" di seguito.

lpData
Punta ai dati forniti dall'applicazione. I dati vengono passati alla funzione di callback insieme alle informazioni sull'oggetto.

Valore restituito

Specifica l'ultimo valore restituito dalla funzione di callback. Il suo significato è definito dall'utente.

Osservazioni:

Per ogni oggetto di un determinato tipo, la funzione di callback passata viene chiamata con le informazioni per tale oggetto. Il sistema chiama la funzione di callback fino a quando non sono presenti più oggetti o la funzione di callback restituisce 0.

Le nuove funzionalità di Microsoft Visual C++ consentono di usare una funzione comune come funzione passata a EnumObjects. L'indirizzo passato a EnumObjects è un puntatore a una funzione esportata con EXPORT e con la convenzione di chiamata Pascal. Nelle applicazioni in modalità di protezione non è necessario creare questa funzione con la funzione Windows MakeProcInstance o liberare la funzione dopo l'uso con la FreeProcInstance funzione Windows.

Non è inoltre necessario esportare il nome della funzione in un'istruzione EXPORTS nel file di definizione del modulo dell'applicazione. È invece possibile usare il modificatore di EXPORT funzione, come in

int CALLBACK EXPORT AFunction (LPSTR, LPSTR);

per fare in modo che il compilatore emetta il record di esportazione appropriato per l'esportazione in base al nome senza aliasing. Questo funziona per la maggior parte delle esigenze. Per alcuni casi speciali, ad esempio l'esportazione di una funzione ordinale o l'aliasing dell'esportazione, è comunque necessario usare un'istruzione EXPORTS in un file di definizione del modulo.

Per la compilazione di programmi Microsoft Foundation, in genere si useranno le opzioni del /GA compilatore e /GEs . L'opzione /Gw del compilatore non viene usata con le classi Microsoft Foundation. Se si usa la funzione MakeProcInstanceWindows , sarà necessario eseguire il cast esplicito del puntatore di funzione restituito da FARPROC al tipo necessario in questa API. Le interfacce di registrazione del callback sono ora indipendenti dai tipi (è necessario passare un puntatore a funzione che punta al tipo di funzione corretto per il callback specifico).

Inoltre, tutte le funzioni di callback devono intercettare le eccezioni di Microsoft Foundation prima di tornare a Windows, perché le eccezioni non possono essere generate attraverso i limiti di callback. Per altre informazioni sulle eccezioni, vedere l'articolo Eccezioni.

Esempio

// print some info about a pen we're ready to enumerate
BOOL CALLBACK EnumObjectHandler(LPVOID lpLogObject, LPARAM /* lpData */)
{
   LOGPEN *pPen = (LOGPEN *)lpLogObject;

   switch (pPen->lopnStyle)
   {
   case PS_SOLID:
      TRACE0("PS_SOLID:      ");
      break;
   case PS_DASH:
      TRACE0("PS_DASH:       ");
      break;
   case PS_DOT:
      TRACE0("PS_DOT:        ");
      break;
   case PS_DASHDOT:
      TRACE0("PS_DASHDOT:    ");
      break;
   case PS_DASHDOTDOT:
      TRACE0("PS_DASHDOTDOT: ");
      break;
   case PS_NULL:
      TRACE0("PS_NULL:       ");
      break;
   case PS_INSIDEFRAME:
      TRACE0("PS_INSIDEFRAME:");
      break;
   default:
      TRACE0("unk style:");
   }

   TRACE2("Color: 0x%8.8X, Width: %d\n", pPen->lopnColor, pPen->lopnWidth);
   return TRUE;
}

// get the default printer and enumerate the pens it has
void CDCView::OnEnumPens()
{
   CPrintDialog dlg(FALSE);
   dlg.GetDefaults();
   HDC hdc = dlg.GetPrinterDC();

   if (hdc != NULL)
   {
      CDC dc;
      dc.Attach(hdc);
      VERIFY(dc.EnumObjects(OBJ_PEN, EnumObjectHandler, 0));
   }
}

CDC::Escape

Questa funzione membro è praticamente obsoleta per la programmazione Win32.

virtual int Escape(
    int nEscape,
    int nCount,
    LPCSTR lpszInData,
    LPVOID lpOutData);

int Escape(
    int nEscape,
    int nInputSize,
    LPCSTR lpszInputData,
    int nOutputSize,
    LPSTR lpszOutputData);

Parametri

nEscape
Specifica la funzione di escape da eseguire.

Per un elenco completo delle funzioni di escape, vedere Escape in Windows SDK.

nCount
Specifica il numero di byte di dati a lpszInDatacui punta .

lpszInData
Punta alla struttura dei dati di input necessaria per questo escape.

lpOutData
Punta alla struttura che deve ricevere l'output da questo escape. Il lpOutData parametro è NULL se non vengono restituiti dati.

nInputSize
Specifica il numero di byte di dati a cui punta il lpszInputData parametro .

lpszInputData
Punta alla struttura di input necessaria per l'escape specificato.

nOutputSize
Specifica il numero di byte di dati a cui punta il lpszOutputData parametro .

lpszOutputData
Punta alla struttura che riceve l'output da questo escape. Questo parametro deve essere NULL se non vengono restituiti dati.

Valore restituito

Se la funzione ha esito positivo, viene restituito un valore positivo, ad eccezione dell'escape, che controlla solo l'implementazione QUERYESCSUPPORT . Se l'escape non è implementato, viene restituito zero. Se si è verificato un errore, viene restituito un valore negativo. Di seguito sono riportati i valori di errore comuni:

  • SP_ERROR Errore generale.

  • SP_OUTOFDISK Spazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.

  • SP_OUTOFMEMORY Memoria insufficiente per lo spooling.

  • SP_USERABORT L'utente ha terminato il processo tramite Gestione stampa.

Osservazioni:

Degli escape della stampante originale, è supportato solo QUERYESCSUPPORT per le applicazioni Win32. Tutti gli altri escape della stampante sono obsoleti e sono supportati solo per la compatibilità con le applicazioni a 16 bit.

Per la programmazione Win32, CDC ora fornisce sei funzioni membro che sostituisce le sequenze di escape della stampante corrispondenti:

Supporta inoltre CDC::GetDeviceCaps indici Win32 che sostituisce altri caratteri di escape della stampante. Per altre informazioni, vedere GetDeviceCaps in Windows SDK.

Questa funzione membro consente alle applicazioni di accedere alle strutture di un particolare dispositivo che non sono direttamente disponibili tramite GDI.

Usare la prima versione se l'applicazione usa valori di escape predefiniti. Usare la seconda versione se l'applicazione definisce valori di escape privati. Per altre informazioni sulla seconda versione, vedere ExtEscape in Windows SDK.

CDC::ExcludeClipRect

Crea una nuova area di ritaglio costituita dall'area di ritaglio esistente meno il rettangolo specificato.

int ExcludeClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int ExcludeClipRect(LPCRECT lpRect);

Parametri

x1
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo.

y1
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo.

x2
Specifica la coordinata x logica dell'angolo inferiore destro del rettangolo.

y2
Specifica la coordinata y logica dell'angolo inferiore destro del rettangolo.

lpRect
Specifica il rettangolo. Può anche essere un CRect oggetto .

Valore restituito

Specifica il tipo della nuova area di ritaglio. Può essere uno dei valori seguenti:

  • COMPLEXREGION L'area ha bordi sovrapposti.

  • ERROR Nessuna area creata.

  • NULLREGION L'area è vuota.

  • SIMPLEREGION L'area non ha bordi sovrapposti.

Osservazioni:

La larghezza del rettangolo, specificata dal valore assoluto di x2 - x1, non deve superare 32.767 unità. Questo limite si applica anche all'altezza del rettangolo.

CDC::ExcludeUpdateRgn

Impedisce il disegno all'interno di aree non valide di una finestra escludendo un'area aggiornata nella finestra dall'area di ritaglio associata all'oggetto CDC .

int ExcludeUpdateRgn(CWnd* pWnd);

Parametri

pWnd
Punta all'oggetto finestra la cui finestra viene aggiornata.

Valore restituito

Tipo di area esclusa. Può essere uno dei valori seguenti:

  • COMPLEXREGION L'area ha bordi sovrapposti.

  • ERROR Nessuna area creata.

  • NULLREGION L'area è vuota.

  • SIMPLEREGION L'area non ha bordi sovrapposti.

CDC::ExtFloodFill

Riempie un'area della superficie di visualizzazione con il pennello corrente.

BOOL ExtFloodFill(
    int x,
    int y,
    COLORREF crColor,
    UINT nFillType);

Parametri

x
Specifica la coordinata x logica del punto in cui inizia il riempimento.

y
Specifica la coordinata y logica del punto in cui inizia il riempimento.

crColor
Specifica il colore del limite o dell'area da riempire. L'interpretazione di crColor dipende dal valore di nFillType.

nFillType
Specifica il tipo di riempimento flood da eseguire. Deve essere uno dei valori seguenti:

  • FLOODFILLBORDER L'area di riempimento è delimitata dal colore specificato da crColor. Questo stile è identico al riempimento eseguito da FloodFill.

  • FLOODFILLSURFACE L'area di riempimento è definita dal colore specificato da crColor. Il riempimento continua verso l'esterno in tutte le direzioni fino a quando si incontra il colore. Questo stile è utile per riempire aree con confini colorati.

Valore restituito

Diverso da zero se la funzione ha esito positivo; In caso contrario, 0 se non è stato possibile completare il riempimento, se il punto specificato ha il colore limite specificato da crColor (se FLOODFILLBORDER richiesto), se il punto specificato non ha il colore specificato da crColor (se FLOODFILLSURFACE richiesto) o se il punto non è esterno all'area di ritaglio.

Osservazioni:

Questa funzione membro offre maggiore flessibilità rispetto FloodFill a perché è possibile specificare un tipo di riempimento in nFillType.

Se nFillType è impostato su FLOODFILLBORDER, si presuppone che l'area sia completamente delimitata dal colore specificato da crColor. La funzione inizia in corrispondenza del punto specificato da x e y riempie tutte le direzioni del limite di colore.

Se nFillType è impostato su FLOODFILLSURFACE, la funzione inizia al punto specificato da x e y continua in tutte le direzioni, riempiendo tutte le aree adiacenti contenenti il colore specificato da crColor.

Solo i contesti di memoria e i dispositivi che supportano la tecnologia raster-display supportano ExtFloodFill. Per altre informazioni, vedere la GetDeviceCaps funzione membro.

CDC::ExtTextOut

Chiamare questa funzione membro per scrivere una stringa di caratteri all'interno di un'area rettangolare usando il tipo di carattere attualmente selezionato.

virtual BOOL ExtTextOut(
    int x,
    int y,
    UINT nOptions,
    LPCRECT lpRect,
    LPCTSTR lpszString,
    UINT nCount,
    LPINT lpDxWidths);

BOOL ExtTextOut(
    int x,
    int y,
    UINT nOptions,
    LPCRECT lpRect,
    const CString& str,
    LPINT lpDxWidths);

Parametri

x
Specifica la coordinata x logica della cella di caratteri per il primo carattere nella stringa specificata.

y
Specifica la coordinata y logica della parte superiore della cella di caratteri per il primo carattere nella stringa specificata.

nOptions
Specifica il tipo di rettangolo. Questo parametro può essere uno, entrambi o nessuno dei valori seguenti:

  • ETO_CLIPPED Specifica che il testo viene ritagliato nel rettangolo.

  • ETO_OPAQUE Specifica che il colore di sfondo corrente riempie il rettangolo. È possibile impostare ed eseguire query sul colore di sfondo corrente con le SetBkColor funzioni membro e GetBkColor .

lpRect
Punta a una RECT struttura che determina le dimensioni del rettangolo. Questo parametro può essere NULL. È anche possibile passare un CRect oggetto per questo parametro.

lpszString
Punta alla stringa di caratteri specificata da disegnare. È anche possibile passare un CString oggetto per questo parametro.

nCount
Specifica il numero di caratteri nella stringa.

lpDxWidths
Punta a una matrice di valori che indicano la distanza tra le origini delle celle di caratteri adiacenti. Ad esempio, [ lpDxWidthsi] le unità logiche separano le origini della cella di caratteri e della cella ii di caratteri + 1. Se lpDxWidths è NULL, ExtTextOut usa la spaziatura predefinita tra i caratteri.

str
Oggetto CString contenente i caratteri specificati da disegnare.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

L'area rettangolare può essere opaca (riempita con il colore di sfondo corrente) e può essere un'area di ritaglio.

Se nOptions è 0 e lpRect è NULL, la funzione scrive il testo nel contesto di dispositivo senza usare un'area rettangolare. Per impostazione predefinita, la posizione corrente non viene usata o aggiornata dalla funzione. Se un'applicazione deve aggiornare la posizione corrente quando chiama ExtTextOut, l'applicazione può chiamare la CDC funzione SetTextAlign membro con nFlags impostato su TA_UPDATECP. Quando questo flag è impostato, Windows ignora x e y nelle chiamate successive a ExtTextOut e usa invece la posizione corrente. Quando un'applicazione usa TA_UPDATECP per aggiornare la posizione corrente, ExtTextOut imposta la posizione corrente sulla fine della riga di testo precedente o sulla posizione specificata dall'ultimo elemento della matrice a lpDxWidthscui punta , a qualsiasi valore maggiore.

CDC::FillPath

Chiude tutte le figure aperte nel percorso corrente e riempie l'interno del percorso utilizzando la modalità corrente di riempimento del pennello e del poligono.

BOOL FillPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Dopo il riempimento dell'interno, il percorso viene rimosso dal contesto del dispositivo.

CDC::FillRect

Chiamare questa funzione membro per riempire un determinato rettangolo usando il pennello specificato.

void FillRect(
    LPCRECT lpRect,
    CBrush* pBrush);

Parametri

lpRect
Punta a una RECT struttura che contiene le coordinate logiche del rettangolo da riempire. È anche possibile passare un CRect oggetto per questo parametro.

pBrush
Identifica il pennello utilizzato per riempire il rettangolo.

Osservazioni:

La funzione riempie il rettangolo completo, inclusi i bordi sinistro e superiore, ma non riempie i bordi destro e inferiore.

Il pennello deve essere creato usando le CBrush funzioni CreateHatchBrushmembro , CreatePatternBrushe CreateSolidBrusho recuperate dalla GetStockObject funzione Windows.

Quando si riempie il rettangolo specificato, FillRect non include i lati destro e inferiore del rettangolo. GDI riempie un rettangolo fino a, ma non include, la colonna destra e la riga inferiore, indipendentemente dalla modalità di mapping corrente. FillRect confronta i valori dei topmembri , bottom, lefte right del rettangolo specificato. Se bottom è minore o uguale a oppure se right è minore o uguale a topleft, il rettangolo non viene disegnato.

FillRect è simile a CDC::FillSolidRect. Tuttavia, FillRect accetta un pennello e pertanto può essere usato per riempire un rettangolo con un colore a tinta unita, un colore dithered, pennelli tratteggi o un motivo. FillSolidRect utilizza solo colori a tinta unita (indicati da un COLORREF parametro). FillRect in genere è più lento di FillSolidRect.

CDC::FillRgn

Riempie l'area specificata da pRgn con il pennello specificato da pBrush.

BOOL FillRgn(
    CRgn* pRgn,
    CBrush* pBrush);

Parametri

pRgn
Puntatore all'area da riempire. Le coordinate per l'area specificata vengono specificate in unità logiche.

pBrush
Identifica il pennello da utilizzare per riempire l'area.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il pennello deve essere creato usando le CBrush funzioni CreateHatchBrushmembro , , CreateSolidBrushCreatePatternBrusho essere recuperato da GetStockObject.

Esempio

Vedere l'esempio per CRgn::CreateRoundRectRgn.

CDC::FillSolidRect

Chiamare questa funzione membro per riempire il rettangolo specificato con il colore a tinta unita specificato.

void FillSolidRect(
    LPCRECT lpRect,
    COLORREF clr);

void FillSolidRect(
    int x,
    int y,
    int cx,
    int cy,
    COLORREF clr);

Parametri

lpRect
Specifica il rettangolo di delimitazione (in unità logiche). È possibile passare un puntatore a una RECT struttura di dati o a un CRect oggetto per questo parametro.

clr Specifica il colore da utilizzare per riempire il rettangolo.

x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo.

y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di destinazione.

cx
Specifica la larghezza del rettangolo.

cy
Specifica l'altezza del rettangolo.

Osservazioni:

FillSolidRect è molto simile a CDC::FillRect. Tuttavia, FillSolidRect usa solo colori a tinta unita (indicati dal COLORREF parametro), mentre FillRect accetta un pennello e pertanto può essere usato per riempire un rettangolo con un colore a tinta unita, un colore dithered, pennelli tratteggi o un motivo. FillSolidRect in genere è più veloce di FillRect.

Nota

Quando si chiama FillSolidRect, il colore di sfondo, impostato in precedenza tramite SetBkColor, viene impostato sul colore indicato da clr.

CDC::FlattenPath

Trasforma tutte le curve nel percorso selezionato nel contesto di dispositivo corrente e trasforma ogni curva in una sequenza di linee.

BOOL FlattenPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

CDC::FloodFill

Riempie un'area della superficie di visualizzazione con il pennello corrente.

BOOL FloodFill(
    int x,
    int y,
    COLORREF crColor);

Parametri

x
Specifica la coordinata x logica del punto in cui inizia il riempimento.

y
Specifica la coordinata y logica del punto in cui inizia il riempimento.

crColor
Specifica il colore del limite.

Valore restituito

Diverso da zero se la funzione ha esito positivo; In caso contrario, viene restituito 0 se non è stato possibile completare il riempimento, il punto specificato ha il colore limite specificato da crColoro il punto si trova all'esterno dell'area di ritaglio.

Osservazioni:

Si presuppone che l'area sia delimitata come specificato da crColor. La FloodFill funzione inizia nel punto specificato da x e y continua in tutte le direzioni fino al limite del colore.

Solo i contesti di memoria e i dispositivi che supportano la tecnologia raster-display supportano la FloodFill funzione membro. Per informazioni sulle RC_BITBLT funzionalità, vedere la GetDeviceCaps funzione membro.

La ExtFloodFill funzione offre funzionalità simili ma maggiore flessibilità.

CDC::FrameRect

Disegna un bordo intorno al rettangolo specificato da lpRect.

void FrameRect(
    LPCRECT lpRect,
    CBrush* pBrush);

Parametri

lpRect
Punta a una struttura o CRect a un RECT oggetto che contiene le coordinate logiche degli angoli superiore sinistro e inferiore destro del rettangolo. È anche possibile passare un CRect oggetto per questo parametro.

pBrush
Identifica il pennello da utilizzare per incorniciare il rettangolo.

Osservazioni:

La funzione usa il pennello specificato per disegnare il bordo. La larghezza e l'altezza del bordo sono sempre 1 unità logica.

Se la coordinata del bottom rettangolo è minore o uguale a topo se right è minore o uguale a left, il rettangolo non viene disegnato.

Il bordo disegnato da FrameRect si trova nella stessa posizione di un bordo disegnato dalla Rectangle funzione membro utilizzando le stesse coordinate (se Rectangle usa una penna di 1 larghezza unità logica). L'interno del rettangolo non viene riempito da FrameRect.

CDC::FrameRgn

Disegna un bordo intorno all'area specificata pRgn utilizzando il pennello specificato da pBrush.

BOOL FrameRgn(
    CRgn* pRgn,
    CBrush* pBrush,
    int nWidth,
    int nHeight);

Parametri

pRgn
Punta all'oggetto che identifica l'area CRgn da racchiudere in un bordo. Le coordinate per l'area specificata vengono specificate in unità logiche.

pBrush
Punta all'oggetto CBrush che identifica il pennello da utilizzare per disegnare il bordo.

nWidth
Specifica la larghezza del bordo in tratti pennelli verticali nelle unità dispositivo.

nHeight
Specifica l'altezza del bordo in tratti pennelli orizzontali nelle unità dispositivo.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Esempio

Vedere l'esempio per CRgn::CombineRgn.

CDC::FromHandle

Restituisce un puntatore a un CDC oggetto quando viene assegnato un handle a un contesto di dispositivo.

static CDC* PASCAL FromHandle(HDC hDC);

Parametri

hDC
Contiene un handle per un contesto di dispositivo Windows.

Valore restituito

Il puntatore può essere temporaneo e non deve essere archiviato oltre l'uso immediato.

Osservazioni:

Se un CDC oggetto non è collegato all'handle, viene creato e collegato un oggetto temporaneo CDC .

Esempio

Vedere l'esempio per CPrintDialog::GetPrinterDC.

CDC::GetArcDirection

Restituisce la direzione dell'arco corrente per il contesto di dispositivo.

int GetArcDirection() const;

Valore restituito

Specifica la direzione dell'arco corrente, se ha esito positivo. Di seguito sono riportati i valori restituiti validi:

  • AD_COUNTERCLOCKWISE Archi e rettangoli disegnati in senso antiorario.

  • AD_CLOCKWISE Arcs e rettangoli disegnati in senso orario.

Se si verifica un errore, il valore restituito è zero.

Osservazioni:

Le funzioni arc e rettangolo usano la direzione dell'arco.

CDC::GetAspectRatioFilter

Recupera l'impostazione per il filtro delle proporzioni corrente.

CSize GetAspectRatioFilter() const;

Valore restituito

Oggetto CSize che rappresenta le proporzioni utilizzate dal filtro delle proporzioni corrente.

Osservazioni:

Le proporzioni sono il rapporto formato dalla larghezza e dall'altezza di un dispositivo. Le informazioni sulle proporzioni di un dispositivo vengono usate nella creazione, nella selezione e nella visualizzazione dei tipi di carattere. Windows fornisce un filtro speciale, il filtro proporzionali, per selezionare i tipi di carattere progettati per una particolare proporzioni da tutti i tipi di carattere disponibili. Il filtro usa le proporzioni specificate dalla SetMapperFlags funzione membro.

CDC::GetBkColor

Restituisce il colore di sfondo corrente.

COLORREF GetBkColor() const;

Valore restituito

Valore di colore RGB.

Osservazioni:

Se la modalità di sfondo è OPAQUE, il sistema usa il colore di sfondo per riempire le lacune nelle linee in stile, le lacune tra le linee trattette nei pennelli e lo sfondo nelle celle di caratteri. Il sistema usa anche il colore di sfondo durante la conversione delle bitmap tra contesti di dispositivo a colori e monocromatici.

CDC::GetBkMode

Restituisce la modalità di sfondo.

int GetBkMode() const;

Valore restituito

Modalità di sfondo corrente, che può essere OPAQUE o TRANSPARENT.

Osservazioni:

La modalità di sfondo definisce se il sistema rimuove i colori di sfondo esistenti sull'area di disegno prima di disegnare testo, pennelli tratteggi o qualsiasi stile di penna che non sia una linea continua.

CDC::GetBoundsRect

Restituisce il rettangolo di delimitazione accumulato corrente per il contesto di dispositivo specificato.

UINT GetBoundsRect(
    LPRECT lpRectBounds,
    UINT flags);

Parametri

lpRectBounds
Punta a un buffer che riceverà il rettangolo di delimitazione corrente. Il rettangolo viene restituito in coordinate logiche.

flags
Specifica se il rettangolo di delimitazione deve essere cancellato dopo che è stato restituito. Questo parametro deve essere zero o impostato sul valore seguente:

  • DCB_RESET Forza la cancellazione del rettangolo di delimitazione dopo la restituzione.

Valore restituito

Specifica lo stato corrente del rettangolo di delimitazione se la funzione ha esito positivo. Può essere una combinazione dei valori seguenti:

  • DCB_ACCUMULATE Si sta verificando l'accumulo del rettangolo di delimitazione.

  • DCB_RESET Il rettangolo di delimitazione è vuoto.

  • DCB_SET Il rettangolo di delimitazione non è vuoto.

  • DCB_ENABLE L'accumulo di delimitazione è attivo.

  • DCB_DISABLE L'accumulo di delimitazione è disattivato.

CDC::GetBrushOrg

Recupera l'origine (in unità dispositivo) del pennello attualmente selezionato per il contesto di dispositivo.

CPoint GetBrushOrg() const;

Valore restituito

Origine corrente del pennello (in unità dispositivo) come CPoint oggetto .

Osservazioni:

L'origine iniziale del pennello si trova in corrispondenza (0,0) dell'area client. Il valore restituito specifica questo punto nelle unità dispositivo rispetto all'origine della finestra desktop.

CDC::GetCharacterPlacement

Recupera vari tipi di informazioni su una stringa di caratteri.

DWORD GetCharacterPlacement(
    LPCTSTR lpString,
    int nCount,
    int nMaxExtent,
    LPGCP_RESULTS lpResults,
    DWORD dwFlags) const;

DWORD GetCharacterPlacement(
    CString& str,
    int nMaxExtent,
    LPGCP_RESULTS lpResults,
    DWORD dwFlags) const;

Parametri

lpString
Puntatore alla stringa di caratteri da elaborare.

nCount
Specifica la lunghezza della stringa. Per la versione ANSI, si tratta di un BYTE conteggio e per la funzione Unicode è un WORD conteggio. Per ulteriori informazioni, vedere GetCharacterPlacement.

nMaxExtent
Specifica l'extent massimo (in unità logiche) in cui viene elaborata la stringa. I caratteri che, se elaborati, superano questo extent vengono ignorati. I calcoli per qualsiasi ordinamento o matrice di glifi necessari si applicano solo ai caratteri inclusi. Questo parametro viene usato solo se il GCP_MAXEXTENT valore viene specificato nel dwFlags parametro . Poiché la funzione elabora la stringa di input, ogni carattere e il relativo extent vengono aggiunti all'output, all'extent e ad altre matrici solo se l'extent totale non ha ancora superato il valore massimo. Una volta raggiunto il limite, l'elaborazione verrà arrestata.

lpResults
Puntatore a una GCP_Results struttura che riceve i risultati della funzione.

dwFlags
Specifica come elaborare la stringa nelle matrici necessarie. Questo parametro può essere uno o più dei valori elencati nella dwFlags sezione dell'argomento GetCharacterPlacement .

str
Puntatore a un CString oggetto da elaborare.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è la larghezza e l'altezza della stringa in unità logiche.

Se la funzione ha esito negativo, il valore restituito è zero.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetCharacterPlacement, come descritto in Windows SDK.

CDC::GetCharABCWidths

Recupera la larghezza dei caratteri consecutivi in un intervallo specificato dal tipo di carattere TrueType corrente.

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABC lpabc) const;

BOOL GetCharABCWidths(
    UINT nFirstChar,
    UINT nLastChar,
    LPABCFLOAT lpABCF) const;

Parametri

nFirstChar
Specifica il primo carattere nell'intervallo di caratteri del tipo di carattere corrente per cui vengono restituite le larghezze dei caratteri.

nLastChar
Specifica l'ultimo carattere nell'intervallo di caratteri del tipo di carattere corrente per cui vengono restituite le larghezze dei caratteri.

lpabc
Punta a una matrice di ABC strutture che ricevono la larghezza del carattere quando la funzione restituisce. Questa matrice deve contenere almeno il numero ABC di strutture presenti nell'intervallo specificato dai nFirstChar parametri e nLastChar .

lpABCF
Punta a un buffer fornito dall'applicazione con una matrice di ABCFLOAT strutture per ricevere la larghezza dei caratteri quando la funzione restituisce. Le larghezze restituite da questa funzione sono nel formato A virgola mobile I edizione Enterprise E.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Le larghezze vengono restituite in unità logiche. Questa funzione ha esito positivo solo con i tipi di carattere TrueType.

L'indicatore di rasterizzazione TrueType fornisce la spaziatura dei caratteri "ABC" dopo che è stata selezionata una dimensione punto specifica. La spaziatura "A" è la distanza aggiunta alla posizione corrente prima di posizionare il glifo. La spaziatura "B" è la larghezza della parte nera del glifo. La spaziatura "C" viene aggiunta alla posizione corrente per tenere conto dello spazio vuoto a destra del glifo. La larghezza avanzata totale è data da A + B + C.

Quando la GetCharABCWidths funzione membro recupera larghezze negative "A" o "C" per un carattere, tale carattere include sporgenti o sovrasporgenti.

Per convertire le larghezze ABC in unità di progettazione dei tipi di carattere, un'applicazione deve creare un tipo di carattere la cui altezza (come specificato nel lfHeight membro della LOGFONT struttura) è uguale al valore archiviato nel ntmSizeEM membro della NEWTEXTMETRIC struttura. Il valore del ntmSizeEM membro può essere recuperato chiamando la EnumFontFamilies funzione Windows.

Le larghezze ABC del carattere predefinito vengono utilizzate per i caratteri che non rientrano nell'intervallo del tipo di carattere attualmente selezionato.

Per recuperare la larghezza dei caratteri nei tipi di carattere non TrueType, le applicazioni devono usare la GetCharWidth funzione Windows.

CDC::GetCharABCWidthsI

Recupera le larghezze, in unità logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere TrueType corrente.

BOOL GetCharABCWidthsI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPABC lpabc) const;

Parametri

giFirst
Specifica il primo indice del glifo nel gruppo di indici di glifi consecutivi del tipo di carattere corrente. Questo parametro viene usato solo se il pgi parametro è NULL.

cgi
Specifica il numero di indici del glifo.

pgi
Puntatore a una matrice contenente indici del glifo. Se il valore è NULL, viene invece usato il giFirst parametro . Il cgi parametro specifica il numero di indici glifi in questa matrice.

lpabc
Puntatore a una matrice di ABC strutture che ricevono la larghezza dei caratteri. Questa matrice deve contenere almeno tutte ABC le strutture in cui sono presenti indici glifi specificati dal cgi parametro .

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetCharABCWidthsI, come descritto in Windows SDK.

CDC::GetCharWidth

Recupera le larghezze dei singoli caratteri in un gruppo consecutivo di caratteri dal tipo di carattere corrente, utilizzando m_hAttribDC, il contesto del dispositivo di input.

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

BOOL GetCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    float* lpFloatBuffer) const;

Parametri

nFirstChar
Specifica il primo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.

nLastChar
Specifica l'ultimo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.

lpBuffer
Punta a un buffer che riceverà i valori di larghezza per un gruppo consecutivo di caratteri nel tipo di carattere corrente.

lpFloatBuffer
Punta a un buffer per ricevere le larghezze dei caratteri. Le larghezze restituite sono nel formato a virgola mobile A 32 bit edizione Enterprise E. Le larghezze vengono misurate lungo la linea di base dei caratteri.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Ad esempio, se nFirstChar identifica la lettera 'a' e nLastChar identifica la lettera 'z', la funzione recupera le larghezze di tutti i caratteri minuscoli.

La funzione archivia i valori nel buffer a lpBuffercui punta . Questo buffer deve essere sufficientemente grande da contenere tutte le larghezze. Ciò significa che nell'esempio specificato devono essere presenti almeno 26 voci.

Se un carattere nel gruppo consecutivo di caratteri non esiste in un tipo di carattere specifico, verrà assegnato il valore di larghezza del carattere predefinito.

CDC::GetCharWidthI

Recupera le larghezze, in coordinate logiche, di indici glifi consecutivi in un intervallo specificato dal tipo di carattere corrente.

BOOL GetCharWidthI(
    UINT giFirst,
    UINT cgi,
    LPWORD pgi,
    LPINT lpBuffer) const;

Parametri

giFirst
Specifica il primo indice del glifo nel gruppo di indici di glifi consecutivi del tipo di carattere corrente. Questo parametro viene usato solo se il pgi parametro è NULL.

cgi
Specifica il numero di indici del glifo.

pgi
Puntatore a una matrice contenente indici del glifo. Se il valore è NULL, viene invece usato il giFirst parametro . Il cgi parametro specifica il numero di indici glifi in questa matrice.

lpBuffer
Puntatore a un buffer che riceve le larghezze.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetCharWidthI, come descritto in Windows SDK.

CDC::GetClipBox

Recupera le dimensioni del rettangolo di delimitazione più stretto intorno al limite di ritaglio corrente.

virtual int GetClipBox(LPRECT lpRect) const;

Parametri

lpRect
Punta alla struttura o CRect all'oggetto RECT che deve ricevere le dimensioni del rettangolo.

Valore restituito

Tipo dell'area di ritaglio. Può essere uno dei valori seguenti:

  • COMPLEXREGION L'area di ritaglio presenta bordi sovrapposti.

  • ERROR Il contesto del dispositivo non è valido.

  • NULLREGION L'area di ritaglio è vuota.

  • SIMPLEREGION L'area di ritaglio non ha bordi sovrapposti.

Osservazioni:

Le dimensioni vengono copiate nel buffer a lpRectcui punta .

CDC::GetColorAdjustment

Recupera i valori di regolazione del colore per il contesto di dispositivo.

BOOL GetColorAdjustment(LPCOLORADJUSTMENT lpColorAdjust) const;

Parametri

lpColorAdjust
Punta a una COLORADJUSTMENT struttura di dati per ricevere i valori di regolazione del colore.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

CDC::GetCurrentBitmap

Restituisce un puntatore all'oggetto attualmente selezionato CBitmap .

CBitmap* GetCurrentBitmap() const;

Valore restituito

Puntatore a un CBitmap oggetto, se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Questa funzione membro può restituire oggetti temporanei.

CDC::GetCurrentBrush

Restituisce un puntatore all'oggetto attualmente selezionato CBrush .

CBrush* GetCurrentBrush() const;

Valore restituito

Puntatore a un CBrush oggetto, se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Questa funzione membro può restituire oggetti temporanei.

CDC::GetCurrentFont

Restituisce un puntatore all'oggetto attualmente selezionato CFont .

CFont* GetCurrentFont() const;

Valore restituito

Puntatore a un CFont oggetto, se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Questa funzione membro può restituire oggetti temporanei.

CDC::GetCurrentPalette

Restituisce un puntatore all'oggetto attualmente selezionato CPalette .

CPalette* GetCurrentPalette() const;

Valore restituito

Puntatore a un CPalette oggetto, se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Questa funzione membro può restituire oggetti temporanei.

CDC::GetCurrentPen

Restituisce un puntatore all'oggetto attualmente selezionato CPen .

CPen* GetCurrentPen() const;

Valore restituito

Puntatore a un CPen oggetto, se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Questa funzione membro può restituire oggetti temporanei.

CDC::GetCurrentPosition

Recupera la posizione corrente (in coordinate logiche).

CPoint GetCurrentPosition() const;

Valore restituito

Posizione corrente come CPoint oggetto .

Osservazioni:

La posizione corrente può essere impostata con la MoveTo funzione membro.

CDC::GetDCBrushColor

Recupera il colore corrente del pennello.

COLORREF GetDCBrushColor() const;

Valore restituito

Se la funzione ha esito positivo, il valore restituito è il COLORREF valore per il colore corrente del pennello.

Se la funzione ha esito negativo, il valore restituito è CLR_INVALID.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetDCBrushColor, come descritto in Windows SDK.

CDC::GetDCPenColor

Recupera il colore corrente della penna.

COLORREF GetDCPenColor() const;

Valore restituito

Se la funzione ha esito positivo, il valore restituito è il COLORREF valore per il colore della penna corrente.

Se la funzione ha esito negativo, il valore restituito è CLR_INVALID.

Osservazioni:

Questa funzione membro usa la funzione GetDCPenColorWin32 , come descritto in Windows SDK.

CDC::GetDeviceCaps

Recupera un'ampia gamma di informazioni specifiche del dispositivo sul dispositivo di visualizzazione.

int GetDeviceCaps(int nIndex) const;

Parametri

nIndex
Specifica il tipo di informazioni da restituire. Per un elenco di valori, vedere GetDeviceCaps in Windows SDK.

Valore restituito

Valore della funzionalità richiesta se la funzione ha esito positivo.

Esempio

Vedere l'esempio per CPrintDialog::GetDefaults.

CDC::GetFontData

Recupera informazioni sulle metriche dei tipi di carattere da un file di tipo di carattere scalabile.

DWORD GetFontData(
    DWORD dwTable,
    DWORD dwOffset,
    LPVOID lpData,
    DWORD cbData) const;

Parametri

dwTable
Specifica il nome della tabella delle metriche da restituire. Questo parametro può essere una delle tabelle delle metriche documentate nella specifica TrueType Font Files pubblicata da Microsoft Corporation. Se questo parametro è 0, le informazioni vengono recuperate a partire dall'inizio del file di tipo di carattere.

dwOffset
Specifica l'offset dall'inizio della tabella in corrispondenza della quale iniziare a recuperare le informazioni. Se questo parametro è 0, le informazioni vengono recuperate a partire dall'inizio della tabella specificata dal dwTable parametro . Se questo valore è maggiore o uguale alla dimensione della tabella, GetFontData restituisce 0.

lpData
Punta a un buffer che riceverà le informazioni sul tipo di carattere. Se questo valore è NULL, la funzione restituisce le dimensioni del buffer necessario per i dati del tipo di carattere specificati nel dwTable parametro .

cbData
Specifica la lunghezza, in byte, delle informazioni da recuperare. Se questo parametro è 0, GetFontData restituisce le dimensioni dei dati specificati nel dwTable parametro .

Valore restituito

Specifica il numero di byte restituiti nel buffer a lpData cui punta se la funzione ha esito positivo; in caso contrario, -1.

Osservazioni:

Le informazioni da recuperare vengono identificate specificando un offset nel file del tipo di carattere e la lunghezza delle informazioni da restituire.

Un'applicazione può talvolta utilizzare la GetFontData funzione membro per salvare un tipo di carattere TrueType con un documento. A tale scopo, l'applicazione determina se il tipo di carattere può essere incorporato e quindi recupera l'intero file di tipo di carattere, specificando 0 per i dwTableparametri , dwOffsete cbData .

Le applicazioni possono determinare se un tipo di carattere può essere incorporato controllando il otmfsType membro della OUTLINETEXTMETRIC struttura. Se è impostato il bit 1 di , l'incorporamento non è consentito per il tipo di otmfsType carattere. Se bit 1 è chiaro, il tipo di carattere può essere incorporato. Se è impostato il bit 2, l'incorporamento è di sola lettura.

Se un'applicazione tenta di utilizzare questa funzione per recuperare informazioni per un tipo di carattere non TrueType, la GetFontData funzione membro restituisce -1.

CDC::GetFontLanguageInfo

Restituisce informazioni sul tipo di carattere attualmente selezionato per il contesto di visualizzazione specificato.

DWORD GetFontLanguageInfo() const;

Valore restituito

Il valore restituito identifica le caratteristiche del tipo di carattere attualmente selezionato. Per un elenco completo dei valori possibili, vedere GetFontLanguageInfo.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetFontLanguageInfo, come descritto in Windows SDK.

CDC::GetGlyphOutline

Recupera la curva del contorno o la bitmap per un carattere di struttura nel tipo di carattere corrente.

DWORD GetGlyphOutline(
    UINT nChar,
    UINT nFormat,
    LPGLYPHMETRICS lpgm,
    DWORD cbBuffer,
    LPVOID lpBuffer,
    const MAT2* lpmat2) const;

Parametri

nChar
Specifica il carattere per cui devono essere restituite le informazioni.

nFormat
Specifica il formato in cui la funzione deve restituire informazioni. Può essere uno dei valori seguenti o 0:

Valore Significato
GGO_BITMAP Restituisce la bitmap del glifo. Quando la funzione termina, il buffer a cui lpBuffer punta contiene una bitmap a 1 bit per pixel le cui righe iniziano sui limiti doubleword.
GGO_NATIVE Restituisce i punti dati della curva nel formato nativo del rasterizzatore, usando le unità dispositivo. Quando si specifica questo valore, qualsiasi trasformazione specificata in lpmat2 viene ignorata.

Quando il valore di nFormat è 0, la funzione riempie una GLYPHMETRICS struttura ma non restituisce i dati della struttura del glifo.

lpgm
Punta a una GLYPHMETRICS struttura che descrive la posizione del glifo nella cella di caratteri.

cbBuffer
Specifica le dimensioni del buffer in cui la funzione copia le informazioni sul carattere di struttura. Se questo valore è 0 e il nFormat parametro è il GGO_BITMAP valore o GGO_NATIVE , la funzione restituisce le dimensioni necessarie del buffer.

lpBuffer
Punta a un buffer in cui la funzione copia le informazioni sul carattere di struttura. Se nFormat specifica il GGO_NATIVE valore, le informazioni vengono copiate sotto forma di TTPOLYGONHEADER strutture e TTPOLYCURVE . Se questo valore è NULL e nFormat è il GGO_BITMAP valore o GGO_NATIVE , la funzione restituisce le dimensioni necessarie del buffer.

lpmat2
Punta a una MAT2 struttura che contiene una matrice di trasformazione per il carattere. Questo parametro non può essere NULL, anche quando viene specificato il GGO_NATIVE valore per nFormat.

Valore restituito

Dimensioni, in byte, del buffer necessario per le informazioni recuperate se cbBuffer è 0 o lpBuffer è NULL. In caso contrario, è un valore positivo se la funzione ha esito positivo o -1 se si verifica un errore.

Osservazioni:

Un'applicazione può ruotare i caratteri recuperati in formato bitmap specificando una matrice di trasformazione 2 by-2 nella struttura a lpmat2cui punta .

Un contorno del glifo viene restituito come una serie di contorni. Ogni contorno è definito da una TTPOLYGONHEADER struttura seguita da tutte le TTPOLYCURVE strutture necessarie per descriverla. Tutti i punti vengono restituiti come POINTFX strutture e rappresentano posizioni assolute, non spostamenti relativi. Il punto iniziale specificato dal pfxStart membro della TTPOLYGONHEADER struttura è il punto in cui inizia la struttura di un contorno. Le TTPOLYCURVE strutture che seguono possono essere record polilinei o record spline. I record polilinei sono una serie di punti; linee disegnate tra i punti descrivono il contorno del carattere. I record spline rappresentano le curve quadratiche usate da TrueType, ovvero quadratiche b-splines.

CDC::GetGraphicsMode

Recupera la modalità grafica corrente per il contesto di dispositivo specificato.

int GetGraphicsMode() const;

Valore restituito

Restituisce la modalità grafica corrente in caso di esito positivo. Per un elenco dei valori che questo metodo può restituire, vedere GetGraphicsMode.

Restituisce 0 in caso di errore.

Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Questo metodo esegue il wrapping della funzione GetGraphicsModeGDI di Windows.

CDC::GetHalftoneBrush

Chiamare questa funzione membro per recuperare un pennello halftone.

static CBrush* PASCAL GetHalftoneBrush();

Valore restituito

Puntatore a un CBrush oggetto se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Un pennello a metàtone mostra i pixel che sono in alternativa di primo piano e colori di sfondo per creare un motivo dithering. Il diagramma seguente mostra un esempio di modello dithering creato da un pennello mezzotone:

Diagram that shows how a dithered pen stroke is composed.

Il diagramma mostra in che modo il colore di sfondo del nero e il colore di primo piano del giallo vengono combinati in un motivo alternando i pixel neri e gialli tra loro per creare un tratto di penna dithered.

CDC::GetKerningPairs

Recupera le coppie di crenatura dei caratteri per il tipo di carattere attualmente selezionato nel contesto di dispositivo specificato.

int GetKerningPairs(
    int nPairs,
    LPKERNINGPAIR lpkrnpair) const;

Parametri

nPairs
Specifica il numero di KERNINGPAIR strutture a lpkrnpaircui punta . La funzione non copierà più coppie di crenatura rispetto a quelle specificate da nPairs.

lpkrnpair
Punta a una matrice di KERNINGPAIR strutture che ricevono le coppie di crenatura quando la funzione restituisce. Questa matrice deve contenere almeno il numero di strutture specificato da nPairs. Se questo parametro è NULL, la funzione restituisce il numero totale di coppie di crenatura per il tipo di carattere.

Valore restituito

Specifica il numero di coppie di crenatura recuperate o il numero totale di coppie di crenatura nel tipo di carattere, se la funzione ha esito positivo. Zero viene restituito se la funzione ha esito negativo o non sono presenti coppie di crenatura per il tipo di carattere.

CDC::GetLayout

Chiamare questa funzione membro per determinare il layout del testo e della grafica per un contesto di dispositivo, ad esempio una stampante o un metafile.

DWORD GetLayout() const;

Valore restituito

In caso di esito positivo, i flag di layout per il contesto di dispositivo corrente. In caso contrario, GDI_ERROR. Per informazioni sull'errore estese, chiamare GetLastError. Per un elenco dei flag di layout, vedere CDC::SetLayout.

Osservazioni:

Il layout predefinito è da sinistra a destra.

CDC::GetMapMode

Recupera la modalità di mapping corrente.

int GetMapMode() const;

Valore restituito

Modalità di mapping.

Osservazioni:

Per una descrizione delle modalità di mapping, vedere la SetMapMode funzione membro.

Nota

Se si chiama SetLayout per modificare il controller di dominio in layout da destra a sinistra, SetLayout la modalità di mapping viene automaticamente modificata in MM_ISOTROPIC. Di conseguenza, qualsiasi chiamata successiva a GetMapMode restituirà MM_ISOTROPIC.

CDC::GetMiterLimit

Restituisce il limite di miter per il contesto di dispositivo.

float GetMiterLimit() const;

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il limite di miter viene utilizzato quando si disegnano linee geometriche con join di miter.

CDC::GetNearestColor

Restituisce il colore a tinta unita che meglio corrisponde a un colore logico specificato.

COLORREF GetNearestColor(COLORREF crColor) const;

Parametri

crColor
Specifica il colore da associare.

Valore restituito

Valore di colore RGB (rosso, verde, blu) che definisce il colore a tinta unita più vicino al crColor valore che il dispositivo può rappresentare.

Osservazioni:

Il dispositivo specificato deve essere in grado di rappresentare questo colore.

CDC::GetOutlineTextMetrics

Recupera le informazioni sulle metriche per i tipi di carattere TrueType.

UINT GetOutlineTextMetrics(
    UINT cbData,
    LPOUTLINETEXTMETRIC lpotm) const;

Parametri

lpotm
Punta a una matrice di OUTLINETEXTMETRIC strutture. Se questo parametro è NULL, la funzione restituisce le dimensioni del buffer necessario per i dati delle metriche recuperati.

cbData
Specifica le dimensioni, in byte, del buffer in cui vengono restituite le informazioni.

lpotm
Punta a una OUTLINETEXTMETRIC struttura. Se questo parametro è NULL, la funzione restituisce le dimensioni del buffer necessario per le informazioni sulle metriche recuperate.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

La OUTLINETEXTMETRIC struttura contiene la maggior parte delle informazioni sulle metriche dei tipi di carattere fornite con il formato TrueType, inclusa una TEXTMETRIC struttura. Gli ultimi quattro membri della OUTLINETEXTMETRIC struttura sono puntatori alle stringhe. Le applicazioni devono allocare spazio per queste stringhe oltre allo spazio necessario per gli altri membri. Poiché non esiste alcun limite imposto dal sistema alle dimensioni delle stringhe, il metodo più semplice per allocare memoria consiste nel recuperare le dimensioni necessarie specificando NULL per lpotm nella prima chiamata alla GetOutlineTextMetrics funzione.

CDC::GetOutputCharWidth

Usa il contesto del dispositivo di output, m_hDCe recupera le larghezze dei singoli caratteri in un gruppo consecutivo di caratteri dal tipo di carattere corrente.

BOOL GetOutputCharWidth(
    UINT nFirstChar,
    UINT nLastChar,
    LPINT lpBuffer) const;

Parametri

nFirstChar
Specifica il primo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.

nLastChar
Specifica l'ultimo carattere in un gruppo consecutivo di caratteri nel tipo di carattere corrente.

lpBuffer
Punta a un buffer che riceverà i valori di larghezza per un gruppo consecutivo di caratteri nel tipo di carattere corrente.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Ad esempio, se nFirstChar identifica la lettera 'a' e nLastChar identifica la lettera 'z', la funzione recupera le larghezze di tutti i caratteri minuscoli.

La funzione archivia i valori nel buffer a lpBuffercui punta . Questo buffer deve essere sufficientemente grande da contenere tutte le larghezze; ovvero devono essere presenti almeno 26 voci nell'esempio specificato.

Se un carattere nel gruppo consecutivo di caratteri non esiste in un tipo di carattere specifico, verrà assegnato il valore di larghezza del carattere predefinito.

CDC::GetOutputTabbedTextExtent

Chiamare questa funzione membro per calcolare la larghezza e l'altezza di una stringa di caratteri usando m_hDC, il contesto del dispositivo di output.

CSize GetOutputTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetOutputTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

Parametri

lpszString
Punta a una stringa di caratteri da misurare. È anche possibile passare un CString oggetto per questo parametro.

nCount
Specifica la lunghezza della stringa a lpszStringcui punta .

nTabPositions
Specifica il numero di posizioni tabulazioni nella matrice a lpnTabStopPositionscui punta .

lpnTabStopPositions
Punta a una matrice di numeri interi contenenti le posizioni tabulazione in unità logiche. Le tabulazioni devono essere ordinate in ordine crescente; il valore x più piccolo deve essere il primo elemento della matrice. Le schede indietro non sono consentite.

str
Oggetto CString contenente i caratteri specificati da misurare.

Valore restituito

Dimensioni della stringa (in unità logiche) in un CSize oggetto .

Osservazioni:

Se la stringa contiene uno o più caratteri di tabulazione, la larghezza della stringa si basa sulle tabulazioni specificate da lpnTabStopPositions. La funzione usa il tipo di carattere attualmente selezionato per calcolare le dimensioni della stringa.

L'area di ritaglio corrente non sfalsa la larghezza e l'altezza restituita dalla GetOutputTabbedTextExtent funzione.

Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, crenaturano i caratteri), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.

Se nTabPositions è 0 e lpnTabStopPositions è NULL, le schede vengono espanse fino a otto larghezze medie dei caratteri. Se nTabPositions è 1, le tabulazioni verranno separate dalla distanza specificata dal primo valore della matrice a cui lpnTabStopPositions punta. Se lpnTabStopPositions punta a più di un singolo valore, viene impostata una tabulazione per ogni valore nella matrice, fino al numero specificato da nTabPositions.

CDC::GetOutputTextExtent

Chiamare questa funzione membro per usare il contesto del dispositivo di output, m_hDCe calcolare la larghezza e l'altezza di una riga di testo, usando il tipo di carattere corrente.

CSize GetOutputTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetOutputTextExtent(const CString& str) const;

Parametri

lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString oggetto per questo parametro.

nCount
Specifica la lunghezza della stringa a lpszStringcui punta .

str
Oggetto CString contenente i caratteri specificati da misurare.

Valore restituito

Dimensioni della stringa (in unità logiche) restituite in un CSize oggetto .

Osservazioni:

L'area di ritaglio corrente non influisce sulla larghezza e l'altezza restituita da GetOutputTextExtent.

Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, eseguono la crenatura), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.

CDC::GetOutputTextMetrics

Recupera le metriche per il tipo di carattere corrente usando m_hDC, il contesto del dispositivo di output.

BOOL GetOutputTextMetrics(LPTEXTMETRIC lpMetrics) const;

Parametri

lpMetrics
Punta alla TEXTMETRIC struttura che riceve le metriche.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

CDC::GetPath

Recupera le coordinate che definiscono gli endpoint delle linee e i punti di controllo delle curve presenti nel percorso selezionato nel contesto del dispositivo.

int GetPath(
    LPPOINT lpPoints,
    LPBYTE lpTypes,
    int nCount) const;

Parametri

lpPoints
Punta a una matrice di POINT strutture di dati o CPoint oggetti in cui vengono posizionati gli endpoint di linea e i punti di controllo della curva.

lpTypes
Punta a una matrice di byte in cui vengono posizionati i tipi di vertice. I valori sono uno dei seguenti:

  • PT_MOVETO Specifica che il punto corrispondente in lpPoints inizia una figura non contigua.

  • PT_LINETO Specifica che il punto precedente e il punto corrispondente in lpPoints sono gli endpoint di una riga.

  • PT_BEZIERTO Specifica che il punto corrispondente in lpPoints è un punto di controllo o un punto finale per una curva Bzier.

PT_BEZIERTO i tipi si verificano sempre in set di tre. Il punto nel percorso immediatamente precedente definisce il punto iniziale per la curva Bzier. I primi due PT_BEZIERTO punti sono i punti di controllo e il terzo PT_BEZIERTO punto è il punto finale (se hardcoded).

Un PT_LINETO tipo o PT_BEZIERTO può essere combinato con il flag seguente (usando l'operatore bit per bit OR) per indicare che il punto corrispondente è l'ultimo punto di una figura e che la figura deve essere chiusa:

  • PT_CLOSEFIGURE Specifica che la figura viene chiusa automaticamente dopo il disegno della linea o della curva corrispondente. La figura viene chiusa disegnando una linea dalla linea o dall'endpoint della curva al punto corrispondente all'ultimo PT_MOVETOoggetto .

nCount
Specifica il numero totale di strutture di POINT dati che possono essere inserite nella lpPoints matrice. Questo valore deve essere uguale al numero di byte che possono essere inseriti nella lpTypes matrice.

Valore restituito

Se il nCount parametro è diverso da zero, il numero di punti enumerati. Se nCount è 0, il numero totale di punti nel percorso (e GetPath non scrive nulla nei buffer). Se nCount è diverso da zero e è minore del numero di punti nel percorso, il valore restituito è -1.

Osservazioni:

Il contesto del dispositivo deve contenere un percorso chiuso. I punti del percorso vengono restituiti in coordinate logiche. I punti vengono archiviati nel percorso nelle coordinate del dispositivo, quindi GetPath cambiano i punti dalle coordinate del dispositivo alle coordinate logiche usando l'inverso della trasformazione corrente. La FlattenPath funzione membro può essere chiamata prima GetPathdi , per convertire tutte le curve nel percorso in segmenti di linea.

Esempio

Vedere l'esempio per CDC::BeginPath.

CDC::GetPixel

Recupera il valore del colore RGB del pixel nel punto specificato da x e *y*.

COLORREF GetPixel(
    int x,
    int y) const;

COLORREF GetPixel(POINT point) const;

Parametri

x
Specifica la coordinata x logica del punto da esaminare.

y
Specifica la coordinata y logica del punto da esaminare.

point
Specifica le coordinate x e y logiche del punto da esaminare.

Valore restituito

Per una delle due versioni della funzione, un valore di colore RGB per il colore del punto specificato. È -1 se le coordinate non specificano un punto nell'area di ritaglio.

Osservazioni:

Il punto deve trovarsi nell'area di ritaglio. Se il punto non si trova nell'area di ritaglio, la funzione non ha alcun effetto e restituisce -1.

Non tutti i dispositivi supportano la funzione GetPixel. Per altre informazioni, vedere la RC_BITBLT funzionalità raster nella GetDeviceCaps funzione membro.

La GetPixel funzione membro ha due forme. Il primo accetta due valori di coordinata; il secondo accetta una POINT struttura o un CPoint oggetto .

CDC::GetPolyFillMode

Recupera la modalità di riempimento poligono corrente.

int GetPolyFillMode() const;

Valore restituito

Modalità con riempimento poligono corrente o ALTERNATEWINDING, se la funzione ha esito positivo.

Osservazioni:

Per una descrizione delle modalità di riempimento poligono, vedere la SetPolyFillMode funzione membro.

CDC::GetROP2

Recupera la modalità di disegno corrente.

int GetROP2() const;

Valore restituito

Modalità di disegno. Per un elenco dei valori della modalità disegno, vedere la SetROP2 funzione membro.

Osservazioni:

La modalità di disegno specifica il modo in cui i colori della penna e l'interno degli oggetti riempiti vengono combinati con il colore già presente sulla superficie di visualizzazione.

CDC::GetSafeHdc

Chiamare questa funzione membro per ottenere m_hDC, il contesto del dispositivo di output.

HDC GetSafeHdc() const;

Valore restituito

Handle del contesto di dispositivo.

Osservazioni:

Questa funzione membro funziona anche con puntatori Null.

CDC::GetStretchBltMode

Recupera la modalità di estensione bitmap corrente.

int GetStretchBltMode() const;

Valore restituito

Il valore restituito specifica la modalità di estensione bitmap corrente , STRETCH_ANDSCANS, STRETCH_DELETESCANSo STRETCH_ORSCANS , se la funzione ha esito positivo.

Osservazioni:

La modalità di estensione bitmap definisce il modo in cui le informazioni vengono rimosse dalle bitmap estese o compresse dalla StretchBlt funzione membro.

Le STRETCH_ANDSCANS modalità e STRETCH_ORSCANS vengono in genere usate per mantenere i pixel di primo piano nelle bitmap monocromatiche. La STRETCH_DELETESCANS modalità viene in genere usata per mantenere il colore nelle bitmap a colori.

CDC::GetTabbedTextExtent

Chiamare questa funzione membro per calcolare la larghezza e l'altezza di una stringa di caratteri usando m_hAttribDC, il contesto del dispositivo dell'attributo.

CSize GetTabbedTextExtent(
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

CSize GetTabbedTextExtent(
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions) const;

Parametri

lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString oggetto per questo parametro.

nCount
Specifica la lunghezza della stringa a lpszStringcui punta .

nTabPositions
Specifica il numero di posizioni tabulazioni nella matrice a lpnTabStopPositionscui punta .

lpnTabStopPositions
Punta a una matrice di numeri interi contenenti le posizioni tabulazione in unità logiche. Le tabulazioni devono essere ordinate in ordine crescente; il valore x più piccolo deve essere il primo elemento della matrice. Le schede indietro non sono consentite.

str
Oggetto CString contenente i caratteri specificati da disegnare.

Valore restituito

Dimensioni della stringa (in unità logiche) in un CSize oggetto .

Osservazioni:

Se la stringa contiene uno o più caratteri di tabulazione, la larghezza della stringa si basa sulle tabulazioni specificate da lpnTabStopPositions. La funzione usa il tipo di carattere attualmente selezionato per calcolare le dimensioni della stringa.

L'area di ritaglio corrente non sfalsa la larghezza e l'altezza restituita dalla GetTabbedTextExtent funzione.

Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, crenaturano i caratteri), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.

Se nTabPositions è 0 e lpnTabStopPositions è NULL, le schede vengono espanse fino a otto volte la larghezza media dei caratteri. Se nTabPositions è 1, le tabulazioni verranno separate dalla distanza specificata dal primo valore della matrice a cui lpnTabStopPositions punta. Se lpnTabStopPositions punta a più di un singolo valore, viene impostata una tabulazione per ogni valore nella matrice, fino al numero specificato da nTabPositions.

CDC::GetTextAlign

Recupera lo stato dei flag di allineamento del testo per il contesto di dispositivo.

UINT GetTextAlign() const;

Valore restituito

Stato dei flag di allineamento del testo. Il valore restituito è uno o più dei valori seguenti:

  • TA_BASELINE Specifica l'allineamento dell'asse x e la linea di base del tipo di carattere scelto all'interno del rettangolo di delimitazione.

  • TA_BOTTOM Specifica l'allineamento dell'asse x e della parte inferiore del rettangolo di delimitazione.

  • TA_CENTER Specifica l'allineamento dell'asse y e del centro del rettangolo di delimitazione.

  • TA_LEFT Specifica l'allineamento dell'asse y e del lato sinistro del rettangolo di delimitazione.

  • TA_NOUPDATECP Specifica che la posizione corrente non viene aggiornata.

  • TA_RIGHT Specifica l'allineamento dell'asse y e del lato destro del rettangolo di delimitazione.

  • TA_TOP Specifica l'allineamento dell'asse x e della parte superiore del rettangolo di delimitazione.

  • TA_UPDATECP Specifica che la posizione corrente viene aggiornata.

Osservazioni:

I flag di allineamento del testo determinano il modo in cui le TextOut funzioni membro e ExtTextOut allineano una stringa di testo in relazione al punto iniziale della stringa. I flag di allineamento del testo non sono necessariamente flag a bit singolo e possono essere uguali a 0. Per verificare se è impostato un flag, un'applicazione deve seguire questa procedura:

  1. Applicare l'operatore OR bit per bit (|) al flag e ai relativi flag, raggruppati come indicato di seguito:

    • TA_LEFT, TA_CENTER e TA_RIGHT

    • TA_BASELINE, TA_BOTTOM e TA_TOP

    • TA_NOUPDATECP e TA_UPDATECP

  2. Applicare l'operatore AND bit per bit (&) C++ al risultato e al valore restituito di GetTextAlign.

  3. Verificare l'uguaglianza di questo risultato e il flag.

CDC::GetTextCharacterExtra

Recupera l'impostazione corrente per la quantità di spaziatura intercaracter.

int GetTextCharacterExtra() const;

Valore restituito

Quantità della spaziatura intercaracter.

Osservazioni:

GDI aggiunge questa spaziatura a ogni carattere, inclusi i caratteri di interruzione, quando scrive una riga di testo nel contesto del dispositivo.

Il valore predefinito per la quantità di spaziatura intercaracter è 0.

CDC::GetTextColor

Recupera il colore del testo corrente.

COLORREF GetTextColor() const;

Valore restituito

Colore del testo corrente come valore di colore RGB.

Osservazioni:

Il colore del testo è il colore di primo piano dei caratteri disegnati usando le funzioni TextOutmembro di output di testo GDI , ExtTextOute TabbedTextOut.

CDC::GetTextExtent

Chiamare questa funzione membro per calcolare la larghezza e l'altezza di una riga di testo usando il tipo di carattere corrente per determinare le dimensioni.

CSize GetTextExtent(
    LPCTSTR lpszString,
    int nCount) const;

CSize GetTextExtent(const CString& str) const;

Parametri

lpszString
Punta a una stringa di caratteri. È anche possibile passare un CString oggetto per questo parametro.

nCount
Specifica il numero di caratteri nella stringa.

str
Oggetto CString contenente i caratteri specificati.

Valore restituito

Dimensioni della stringa (in unità logiche) in un CSize oggetto .

Osservazioni:

Le informazioni vengono recuperate da m_hAttribDC, il contesto del dispositivo dell'attributo.

Per impostazione predefinita, GetTextExtent presuppone che il testo per il quale recupera la dimensione sia impostata lungo una linea orizzontale, ovvero il carattere di escape è 0. Se si crea un tipo di carattere che specifica un carattere di escape diverso da zero, è necessario convertire l'angolo del testo in modo esplicito per ottenere le dimensioni della stringa.

L'area di ritaglio corrente non influisce sulla larghezza e l'altezza restituita da GetTextExtent.

Poiché alcuni dispositivi non inseriscono caratteri in matrici di celle regolari (ovvero, eseguono la crenatura), la somma degli extent dei caratteri in una stringa potrebbe non essere uguale alla misura della stringa.

CDC::GetTextExtentExPointI

Recupera il numero di caratteri in una stringa specificata che verrà inserita all'interno di uno spazio specificato e riempie una matrice con l'extent di testo per ognuno di questi caratteri.

BOOL GetTextExtentExPointI(
    LPWORD pgiIn,
    int cgi,
    int nMaxExtent,
    LPINT lpnFit,
    LPINT alpDx,
    LPSIZE lpSize) const;

Parametri

pgiIn
Puntatore a una matrice di indici del glifo per i quali devono essere recuperati extent.

cgi
Specifica il numero di glifi nella matrice a pgiIncui punta .

nMaxExtent
Specifica la larghezza massima consentita, in unità logiche, della stringa formattata.

lpnFit
Puntatore a un numero intero che riceve un conteggio del numero massimo di caratteri che verrà inserito nello spazio specificato da nMaxExtent. Quando lpnFit è NULL, nMaxExtent viene ignorato.

alpDx
Puntatore a una matrice di numeri interi che riceve extent parziali del glifo. Ogni elemento nella matrice assegna la distanza, in unità logiche, tra l'inizio della matrice degli indici del glifo e uno dei glifi che si inserisce nello spazio specificato da nMaxExtent. Anche se questa matrice deve avere almeno il numero di elementi specificati da cgi, la funzione riempie la matrice con extent solo per tutti gli indici glifi specificati da lpnFit. Se lpnDx è NULL, la funzione non calcola le larghezze parziali delle stringhe.

lpSize
Puntatore a una SIZE struttura che riceve le dimensioni della matrice di indici glifi, in unità logiche. Questo valore non può essere NULL.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetTextExtentExPointI, come descritto in Windows SDK.

CDC::GetTextExtentPointI

Recupera la larghezza e l'altezza della matrice specificata di indici del glifo.

BOOL GetTextExtentPointI(
    LPWORD pgiIn,
    int cgi,
    LPSIZE lpSize) const;

Parametri

pgiIn
Puntatore a una matrice di indici del glifo per i quali devono essere recuperati extent.

cgi
Specifica il numero di glifi nella matrice a pgiIncui punta .

lpSize
Puntatore a una SIZE struttura che riceve le dimensioni della matrice di indici glifi, in unità logiche. Questo valore non può essere NULL.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione membro emula la funzionalità della funzione GetTextExtentPointI, come descritto in Windows SDK.

CDC::GetTextFace

Chiamare questa funzione membro per copiare il nome del carattere tipografico del tipo di carattere corrente in un buffer.

int GetTextFace(
    int nCount,
    LPTSTR lpszFacename) const;

int GetTextFace(CString& rString) const;

Parametri

nCount
Specifica le dimensioni del buffer (in byte). Se il nome del carattere tipografico è più lungo del numero di byte specificato da questo parametro, il nome viene troncato.

lpszFacename
Punta al buffer per il nome del carattere tipografico.

rString
Riferimento a un oggetto CString.

Valore restituito

Numero di byte copiati nel buffer, senza includere il carattere Null di terminazione. È 0 se si verifica un errore.

Osservazioni:

Il nome del carattere tipografico viene copiato come stringa con terminazione Null.

CDC::GetTextMetrics

Recupera le metriche per il tipo di carattere corrente usando il contesto del dispositivo dell'attributo.

BOOL GetTextMetrics(LPTEXTMETRIC lpMetrics) const;

Parametri

lpMetrics
Punta alla TEXTMETRIC struttura che riceve le metriche.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

CDC::GetViewportExt

Recupera gli extent x e y del riquadro di visualizzazione del contesto di dispositivo.

CSize GetViewportExt() const;

Valore restituito

Gli extent x e y (in unità dispositivo) come CSize oggetto .

CDC::GetViewportOrg

Recupera le coordinate x e y dell'origine del riquadro di visualizzazione associato al contesto di dispositivo.

CPoint GetViewportOrg() const;

Valore restituito

Origine del riquadro di visualizzazione (nelle coordinate del dispositivo) come CPoint oggetto .

CDC::GetWindow

Restituisce la finestra associata al contesto di dispositivo di visualizzazione.

CWnd* GetWindow() const;

Valore restituito

Puntatore a un CWnd oggetto se ha esito positivo; in caso contrario NULL, .

Osservazioni:

Si tratta di una funzione avanzata. Ad esempio, questa funzione membro potrebbe non restituire la finestra di visualizzazione durante la stampa o l'anteprima di stampa. Restituisce sempre la finestra associata all'output. Funzioni di output che usano il disegno del controller di dominio specificato in questa finestra.

CDC::GetWindowExt

Recupera gli extent x e y della finestra associata al contesto di dispositivo.

CSize GetWindowExt() const;

Valore restituito

Gli extent x e y (in unità logiche) come CSize oggetto .

CDC::GetWindowOrg

Recupera le coordinate x e y dell'origine della finestra associata al contesto di dispositivo.

CPoint GetWindowOrg() const;

Valore restituito

Origine della finestra (in coordinate logiche) come CPoint oggetto .

CDC::GetWorldTransform

Recupera lo spazio globale corrente nella trasformazione dello spazio delle pagine.

BOOL GetWorldTransform(XFORM& rXform) const;

Parametri

rXform
Riferimento a una XFORM struttura che riceve la trasformazione dello spazio globale corrente nello spazio delle pagine.

Valore restituito

Restituisce un valore diverso da zero in caso di esito positivo.

Restituisce 0 in caso di errore.

Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Questo metodo esegue il wrapping della funzione GetWorldTransformGDI di Windows.

CDC::GradientFill

Chiamare questa funzione membro per riempire strutture di rettangolo e triangolo con colore che si dissolve uniformemente da un lato all'altro.

BOOL GradientFill(
    TRIVERTEX* pVertices,
    ULONG nVertices,
    void* pMesh,
    ULONG nMeshElements,
    DWORD dwMode);

Parametri

pVertices
Puntatore a una matrice di TRIVERTEX strutture che definiscono ogni vertice di triangolo.

nVertices
Numero di vertici.

pMesh
Matrice di GRADIENT_TRIANGLE strutture in modalità triangolo o matrice di GRADIENT_RECT strutture in modalità rettangolo.

nMeshElements
Numero di elementi (triangoli o rettangoli) in pMesh.

dwMode
Specifica la modalità di riempimento sfumato. Per un elenco dei valori possibili, vedere GradientFill in Windows SDK.

Valore restituito

TRUE se l'esito è positivo; in caso contrario, FALSE.

Osservazioni:

Per altre informazioni, vedere GradientFill in Windows SDK.

CDC::GrayString

Disegna testo in grigio (grigio) nella posizione specificata scrivendo il testo in una bitmap di memoria, oscurando la bitmap e quindi copiando la bitmap nella visualizzazione.

virtual BOOL GrayString(
    CBrush* pBrush,
    BOOL (CALLBACK* lpfnOutput)(
    HDC,
    LPARAM,
    int),
    LPARAM lpData,
    int nCount,
    int x,
    int y,
    int nWidth,
    int nHeight);

Parametri

pBrush
Identifica il pennello da utilizzare per la colorazione (grigio).

lpfnOutput
Specifica l'indirizzo dell'istanza di routine della funzione di callback fornita dall'applicazione che disegnare la stringa. Per altre informazioni, vedere la descrizione della funzione di callback di Windows.OutputFunc Se questo parametro è NULL, il sistema usa la funzione Windows TextOut per disegnare la stringa e lpData si presuppone che sia un puntatore lungo alla stringa di caratteri da restituire.

lpData
Specifica un puntatore lontano ai dati da passare alla funzione di output. Se lpfnOutput è NULL, lpData deve essere un puntatore lungo alla stringa da restituire.

nCount
Specifica il numero di caratteri da restituire. Se questo parametro è 0, GrayString calcola la lunghezza della stringa (presupponendo che lpData sia un puntatore alla stringa). Se nCount è 1 e la funzione a cui lpfnOutput punta restituisce 0, l'immagine viene visualizzata ma non in grigio.

x
Specifica la coordinata x logica della posizione iniziale del rettangolo che racchiude la stringa.

y
Specifica la coordinata y logica della posizione iniziale del rettangolo che racchiude la stringa.

nWidth
Specifica la larghezza, espressa in unità logiche, del rettangolo che racchiude la stringa. Se nWidth è 0, GrayString calcola la larghezza dell'area, presupponendo lpData che sia un puntatore alla stringa.

nHeight
Specifica l'altezza (in unità logiche) del rettangolo che racchiude la stringa. Se nHeight è 0, GrayString calcola l'altezza dell'area, presupponendo lpData che sia un puntatore alla stringa.

Valore restituito

Diverso da zero se la stringa viene disegnata o 0 se la funzione o la funzione di output fornita dall'applicazione ha restituito 0 o se la memoria non è sufficiente per creare una bitmap di memoria per la TextOut riduzione.

Osservazioni:

La funzione suddivide il testo indipendentemente dal pennello e dallo sfondo selezionati. La GrayString funzione membro utilizza il tipo di carattere attualmente selezionato. Prima di usare questa funzione, è necessario selezionare la MM_TEXT modalità di mapping.

Un'applicazione può disegnare stringhe in grigio (grigio) nei dispositivi che supportano un colore grigio a tinta unita senza chiamare la GrayString funzione membro. Il colore del sistema è il colore COLOR_GRAYTEXT di sistema a tinta unita utilizzato per disegnare testo disabilitato. L'applicazione può chiamare la GetSysColor funzione Windows per recuperare il valore del colore di COLOR_GRAYTEXT. Se il colore è diverso da 0 (nero), l'applicazione può chiamare la SetTextColor funzione membro per impostare il colore del testo sul valore del colore e quindi disegnare direttamente la stringa. Se il colore recuperato è nero, l'applicazione deve chiamare GrayString il testo dim (grigio).

Se lpfnOutput è NULL, GDI usa la funzione Windows TextOut e lpData si presuppone che sia un puntatore di lontano al carattere da restituire. Se i caratteri da restituire non possono essere gestiti dalla TextOut funzione membro , ad esempio la stringa viene archiviata come bitmap, l'applicazione deve fornire la propria funzione di output.

Tutte le funzioni di callback devono intercettare le eccezioni di Microsoft Foundation prima di tornare a Windows, perché le eccezioni non possono essere generate attraverso i limiti di callback. Per altre informazioni sulle eccezioni, vedere l'articolo Eccezioni.

La funzione di callback passata a GrayString deve usare la convenzione di __stdcall chiamata e deve essere esportata con __declspec.

Quando il framework è in modalità di anteprima, una chiamata alla GrayString funzione membro viene convertita in una TextOut chiamata e la funzione di callback non viene chiamata.

CDC::HIMETRICtoDP

Usare questa funzione quando si converte HIMETRIC le dimensioni da OLE a pixel.

void HIMETRICtoDP(LPSIZE lpSize) const;

Parametri

lpSize
Punta a una struttura o CSize a un SIZE oggetto .

Osservazioni:

Se la modalità di mapping dell'oggetto contesto di dispositivo è MM_LOENGLISH, MM_HIENGLISHMM_LOMETRIC o MM_HIMETRIC, la conversione è basata sul numero di pixel nel pollice fisico. Se la modalità di mapping è una delle altre modalità non vincolate ,ad esempio MM_TEXT, la conversione è basata sul numero di pixel nel pollice logico.

CDC::HIMETRICtoLP

Chiamare questa funzione per convertire HIMETRIC le unità in unità logiche.

void HIMETRICtoLP(LPSIZE lpSize) const;

Parametri

lpSize
Punta a una struttura o CSize a un SIZE oggetto .

Osservazioni:

Usare questa funzione quando si ottengono HIMETRIC dimensioni da OLE e si desidera convertirle nella modalità di mapping naturale dell'applicazione.

La conversione viene eseguita convertendo prima le HIMETRIC unità in pixel e quindi convertendo queste unità in unità logiche usando le unità di mapping correnti del contesto di dispositivo. Si noti che gli extent della finestra e del riquadro di visualizzazione del dispositivo influiranno sul risultato.

CDC::IntersectClipRect

Crea una nuova area di ritaglio formando l'intersezione dell'area corrente e il rettangolo specificato da x1, y1x2, e y2.

int IntersectClipRect(
    int x1,
    int y1,
    int x2,
    int y2);

int IntersectClipRect(LPCRECT lpRect);

Parametri

x1
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo.

y1
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo.

x2
Specifica la coordinata x logica dell'angolo inferiore destro del rettangolo.

y2
Specifica la coordinata y logica dell'angolo inferiore destro del rettangolo.

lpRect
Specifica il rettangolo. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.

Valore restituito

Tipo della nuova area di ritaglio. Può essere uno dei valori seguenti:

  • COMPLEXREGION La nuova area di ritaglio ha bordi sovrapposti.

  • ERROR Il contesto del dispositivo non è valido.

  • NULLREGION La nuova area di ritaglio è vuota.

  • SIMPLEREGION La nuova area di ritaglio non presenta bordi sovrapposti.

Osservazioni:

GDI ritaglia tutto l'output successivo per rientrare all'interno del nuovo limite. La larghezza e l'altezza non devono superare 32.767.

CDC::InvertRect

Inverte il contenuto del rettangolo specificato.

void InvertRect(LPCRECT lpRect);

Parametri

lpRect
Punta a un RECT oggetto contenente le coordinate logiche del rettangolo da invertire. È anche possibile passare un CRect oggetto per questo parametro.

Osservazioni:

L'inversione è un'operazione NOT logica e capovolge i bit di ogni pixel. Nei display monocromatici, la funzione rende bianchi i pixel neri e i pixel neri. Nei display a colori, l'inversione dipende dalla modalità di generazione dei colori per la visualizzazione. La chiamata InvertRect due volte con lo stesso rettangolo ripristina la visualizzazione ai colori precedenti.

Se il rettangolo è vuoto, non viene disegnato nulla.

Esempio

void CDCView::DoInvertRect(CDC *pDC)
{
   // invert rect from 20,20 to 50,50
   CRect rect(20, 20, 50, 50);
   pDC->InvertRect(rect);

   // inverting again restores to normal
   ::Sleep(1000);
   pDC->InvertRect(rect);
}

CDC::InvertRgn

Inverte i colori nell'area specificata da pRgn.

BOOL InvertRgn(CRgn* pRgn);

Parametri

pRgn
Identifica l'area da invertire. Le coordinate per l'area vengono specificate in unità logiche.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Nei display monocromatici, la funzione rende bianchi i pixel neri e i pixel neri. Nei display a colori, l'inversione dipende dalla modalità di generazione dei colori per la visualizzazione.

CDC::IsPrinting

Determina se il contesto del dispositivo viene utilizzato per la stampa.

BOOL IsPrinting() const;

Valore restituito

Diverso da zero se l'oggetto CDC è un controller di dominio della stampante; in caso contrario, 0.

CDC::LineTo

Disegna una linea dalla posizione corrente fino a , ma non include, il punto specificato da x e y (o point).

BOOL LineTo(
    int x,
    int y);

BOOL LineTo(POINT point);

Parametri

x
Specifica la coordinata x logica dell'endpoint per la riga.

y
Specifica la coordinata y logica dell'endpoint per la linea.

point
Specifica l'endpoint per la riga. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la linea viene disegnata; in caso contrario, 0.

Osservazioni:

La linea viene disegnata con la penna selezionata. La posizione corrente è impostata su xo y su point.

Esempio

Vedere l'esempio per CRect::CenterPoint.

CDC::LPtoDP

Converte le unità logiche in unità dispositivo.

void LPtoDP(
    LPPOINT lpPoints,
    int nCount = 1) const;

void LPtoDP(LPRECT lpRect) const;
void LPtoDP(LPSIZE lpSize) const;

Parametri

lpPoints
Punta a una matrice di punti. Ogni punto della matrice è una POINT struttura o un CPoint oggetto .

nCount
Numero di punti nella matrice.

lpRect
Punta a una RECT struttura o a un CRect oggetto . Questo parametro viene usato per il caso comune di mapping di un rettangolo da unità logiche a di dispositivo.

lpSize
Punta a una SIZE struttura o a un CSize oggetto .

Osservazioni:

La funzione esegue il mapping delle coordinate di ogni punto, o dimensioni di una dimensione, dal sistema di coordinate logico GDI a un sistema di coordinate del dispositivo. La conversione dipende dalla modalità di mapping corrente e dalle impostazioni delle origini e degli extent della finestra e del riquadro di visualizzazione del dispositivo.

Le coordinate x e y dei punti sono interi con segno a 2 byte nell'intervallo da -32.768 a 32.767. Nei casi in cui la modalità di mapping genera valori superiori a questi limiti, il sistema imposta i valori rispettivamente su -32.768 e 32.767.

CDC::LPtoHIMETRIC

Chiamare questa funzione per convertire le unità logiche in HIMETRIC unità.

void LPtoHIMETRIC(LPSIZE lpSize) const;

Parametri

lpSize
Punta a una SIZE struttura o a un CSize oggetto .

Osservazioni:

Usare questa funzione quando si assegnano HIMETRIC dimensioni a OLE, la conversione dalla modalità di mapping naturale dell'applicazione. Gli extent della finestra e del viewport del dispositivo influiranno sul risultato.

La conversione viene eseguita convertendo prima le unità logiche in pixel usando le unità di mapping correnti del contesto di dispositivo e quindi convertendo queste unità in HIMETRIC unità.

CDC::m_hAttribDC

Contesto del dispositivo dell'attributo per questo CDC oggetto.

HDC m_hAttribDC;

Osservazioni:

Per impostazione predefinita, questo contesto di dispositivo è uguale a m_hDC. In generale, CDC le chiamate GDI che richiedono informazioni dal contesto di dispositivo vengono indirizzate a m_hAttribDC. Per altre informazioni sull'uso di questi due contesti di dispositivo, vedere la CDC descrizione della classe.

CDC::m_hDC

Contesto del dispositivo di output per questo CDC oggetto.

HDC m_hDC;

Osservazioni:

Per impostazione predefinita, m_hDC è uguale a m_hAttribDC, l'altro contesto di dispositivo di cui è stato eseguito il wrapping da CDC. In generale, CDC le chiamate GDI che creano l'output passano al contesto di m_hDC dispositivo. È possibile inizializzare m_hDC e m_hAttribDC puntare a dispositivi diversi. Per altre informazioni sull'uso di questi due contesti di dispositivo, vedere la CDC descrizione della classe.

CDC::MaskBlt

Combina i dati di colore per le bitmap di origine e di destinazione usando l'operazione di maschera e raster specificata.

BOOL MaskBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    CBitmap& maskBitmap,
    int xMask,
    int yMask,
    DWORD dwRop);

Parametri

x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo di destinazione.

y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo di destinazione.

nWidth
Specifica la larghezza, in unità logiche, del rettangolo di destinazione e della bitmap di origine.

nHeight
Specifica l'altezza, in unità logiche, del rettangolo di destinazione e della bitmap di origine.

pSrcDC
Identifica il contesto del dispositivo da cui copiare la bitmap. Deve essere zero se il dwRop parametro specifica un'operazione raster che non include un'origine.

xSrc
Specifica la coordinata x logica dell'angolo superiore sinistro della bitmap di origine.

ySrc
Specifica la coordinata y logica dell'angolo superiore sinistro della bitmap di origine.

maskBitmap
Identifica la bitmap della maschera monocromatica combinata con la bitmap del colore nel contesto del dispositivo di origine.

xMask
Specifica l'offset orizzontale dei pixel per la bitmap mask specificata dal maskBitmap parametro .

yMask
Specifica l'offset di pixel verticale per la bitmap mask specificata dal maskBitmap parametro .

dwRop
Specifica sia i codici di operazione raster in primo piano che in background, che la funzione usa per controllare la combinazione di dati di origine e di destinazione. Il codice dell'operazione raster in background viene archiviato nel byte elevato della parola alta di questo valore; il codice dell'operazione raster in primo piano viene archiviato nel byte basso della parola alta di questo valore; la parola bassa di questo valore viene ignorata e deve essere zero. La macro MAKEROP4 crea tali combinazioni di codici di operazione raster in primo piano e in background. Vedere la sezione Osservazioni per una discussione in primo piano e in background nel contesto di questa funzione. Per un elenco di codici di operazione raster comuni, vedere la BitBlt funzione membro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il valore 1 nella maschera specificata da maskBitmap indica che il codice dell'operazione raster in primo piano specificato da dwRop deve essere applicato in tale posizione. Il valore 0 nella maschera indica che il codice dell'operazione raster in background specificato da dwRop deve essere applicato in tale posizione. Se le operazioni raster richiedono un'origine, il rettangolo della maschera deve coprire il rettangolo di origine. In caso contrario, la funzione ha esito negativo. Se le operazioni raster non richiedono un'origine, il rettangolo della maschera deve coprire il rettangolo di destinazione. In caso contrario, la funzione ha esito negativo.

Se una trasformazione rotazione o shear è attiva per il contesto del dispositivo di origine quando viene chiamata questa funzione, si verifica un errore. Sono tuttavia consentiti altri tipi di trasformazioni.

Se i formati di colore delle bitmap di origine, motivo e destinazione differiscono, questa funzione converte il modello o il formato di origine o entrambi in modo che corrispondano al formato di destinazione. Se la bitmap mask non è una bitmap monocromatica, si verifica un errore. Quando viene registrato un metafile avanzato, si verifica un errore (e la funzione restituisce 0) se il contesto del dispositivo di origine identifica un contesto di dispositivo metafile avanzato. Non tutti i dispositivi supportano MaskBlt. Un'applicazione deve chiamare GetDeviceCaps per determinare se un dispositivo supporta questa funzione. Se non viene fornita alcuna bitmap mask, questa funzione si comporta esattamente come BitBlt, usando il codice dell'operazione raster in primo piano. Gli offset di pixel nella mappa bitmap mask vengono mappati al punto (0,0) nella bitmap del contesto di dispositivo di origine. Questo è utile per i casi in cui una bitmap mask contiene un set di maschere; un'applicazione può applicare facilmente uno di essi a un'attività mask-blitting modificando gli offset dei pixel e le dimensioni del rettangolo inviati a MaskBlt.

CDC::ModifyWorldTransform

Modifica la trasformazione globale per un contesto di dispositivo usando la modalità specificata.

BOOL ModifyWorldTransform(
    const XFORM& rXform,
    DWORD iMode);

Parametri

rXform
Riferimento a una XFORM struttura usata per modificare la trasformazione globale per il contesto di dispositivo specificato.

iMode
Specifica il modo in cui i dati della trasformazione modificano la trasformazione globale corrente. Per un elenco dei valori che questo parametro può accettare, vedere ModifyWorldTransform.

Valore restituito

Restituisce un valore diverso da zero in caso di esito positivo.

Restituisce 0 in caso di errore.

Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Questo metodo esegue il wrapping della funzione ModifyWorldTransformGDI di Windows.

CDC::MoveTo

Sposta la posizione corrente nel punto specificato da x e y (o da point).

CPoint MoveTo(
    int x,
    int y);

CPoint MoveTo(POINT point);

Parametri

x
Specifica la coordinata x logica della nuova posizione.

y
Specifica la coordinata y logica della nuova posizione.

point
Specifica la nuova posizione. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Coordinate x e y della posizione precedente come CPoint oggetto .

Esempio

Vedere l'esempio per CRect::CenterPoint.

CDC::OffsetClipRgn

Sposta l'area di ritaglio del contesto di dispositivo in base agli offset specificati.

int OffsetClipRgn(
    int x,
    int y);

int OffsetClipRgn(SIZE size);

Parametri

x
Specifica il numero di unità logiche da spostare a sinistra o a destra.

y
Specifica il numero di unità logiche da spostare verso l'alto o verso il basso.

size
Specifica l'importo da sfalsare.

Valore restituito

Tipo della nuova area. Può essere uno dei valori seguenti:

  • COMPLEXREGION L'area di ritaglio presenta bordi sovrapposti.

  • ERROR Il contesto del dispositivo non è valido.

  • NULLREGION L'area di ritaglio è vuota.

  • SIMPLEREGION L'area di ritaglio non ha bordi sovrapposti.

Osservazioni:

La funzione sposta le unità di area x lungo l'asse x e y le unità lungo l'asse y.

CDC::OffsetViewportOrg

Modifica le coordinate dell'origine del riquadro di visualizzazione rispetto alle coordinate dell'origine del riquadro di visualizzazione corrente.

virtual CPoint OffsetViewportOrg(
    int nWidth,
    int nHeight);

Parametri

nWidth
Specifica il numero di unità dispositivo da aggiungere alla coordinata x dell'origine corrente.

nHeight
Specifica il numero di unità dispositivo da aggiungere alla coordinata y dell'origine corrente.

Valore restituito

Origine del riquadro di visualizzazione precedente (nelle coordinate del dispositivo) come CPoint oggetto .

CDC::OffsetWindowOrg

Modifica le coordinate dell'origine della finestra rispetto alle coordinate dell'origine della finestra corrente.

CPoint OffsetWindowOrg(
    int nWidth,
    int nHeight);

Parametri

nWidth
Specifica il numero di unità logiche da aggiungere alla coordinata x dell'origine corrente.

nHeight
Specifica il numero di unità logiche da aggiungere alla coordinata y dell'origine corrente.

Valore restituito

Origine della finestra precedente (in coordinate logiche) come CPoint oggetto .

CDC::operator HDC

Usare questo operatore per recuperare l'handle del contesto di dispositivo dell'oggetto CDC .

operator HDC() const;

Valore restituito

In caso di esito positivo, l'handle dell'oggetto contesto di dispositivo; in caso contrario, NULL.

Osservazioni:

È possibile usare l'handle per chiamare direttamente le API di Windows.

CDC::PaintRgn

Riempie l'area specificata pRgn utilizzando il pennello corrente.

BOOL PaintRgn(CRgn* pRgn);

Parametri

pRgn
Identifica l'area da riempire. Le coordinate per l'area specificata vengono specificate in unità logiche.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

CDC::PatBlt

Crea un modello di bit nel dispositivo.

BOOL PatBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    DWORD dwRop);

Parametri

x
Specifica la coordinata x logica dell'angolo superiore sinistro del rettangolo che deve ricevere il criterio.

y
Specifica la coordinata y logica dell'angolo superiore sinistro del rettangolo che deve ricevere il criterio.

nWidth
Specifica la larghezza(in unità logiche) del rettangolo che deve ricevere il criterio.

nHeight
Specifica l'altezza (in unità logiche) del rettangolo che deve ricevere il modello.

dwRop
Specifica il codice dell'operazione raster. I codici di operazione raster definiscono il modo in cui GDI combina i colori nelle operazioni di output che coinvolgono un pennello corrente, una possibile bitmap di origine e una bitmap di destinazione. Questo parametro può avere uno dei valori seguenti:

  • PATCOPY Copia il modello nella bitmap di destinazione.

  • PATINVERTCombina la bitmap di destinazione con il modello usando l'operatore XOR booleano (^).

  • DSTINVERT Inverte la bitmap di destinazione.

  • BLACKNESS Trasforma tutto l'output nero.

  • WHITENESS Attiva tutto il bianco di output.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il motivo è una combinazione del pennello selezionato e del motivo già presente nel dispositivo. Il codice dell'operazione raster specificata da dwRop definisce la modalità di combinazione dei modelli. Le operazioni raster elencate per questa funzione sono un subset limitato dei codici raster-operation ternari completi 256; in particolare, non è possibile usare un codice di operazione raster che fa riferimento a un'origine.

Non tutti i contesti di dispositivo supportano la PatBlt funzione. Per determinare se un contesto di dispositivo supporta PatBlt, chiamare la GetDeviceCaps funzione membro con l'indice RASTERCAPS e controllare il valore restituito per il RC_BITBLT flag.

CDC::Pie

Disegna un arco a torta a forma di torta disegnando un arco ellittico il cui centro e due endpoint sono uniti da linee.

BOOL Pie(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3,
    int x4,
    int y4);

BOOL Pie(
    LPCRECT lpRect,
    POINT ptStart,
    POINT ptEnd);

Parametri

x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).

y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo di delimitazione (in unità logiche).

x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).

y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo di delimitazione (in unità logiche).

x3
Specifica la coordinata x del punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

y3
Specifica la coordinata y del punto iniziale dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

x4
Specifica la coordinata x dell'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

y4
Specifica la coordinata y dell'endpoint dell'arco (in unità logiche). Questo punto non deve trovarsi esattamente sull'arco.

lpRect
Specifica il rettangolo di delimitazione. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.

ptStart
Specifica il punto iniziale dell'arco. Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

ptEnd
Specifica l'endpoint dell'arco. Questo punto non deve trovarsi esattamente sull'arco. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il centro dell'arco è il centro del rettangolo di delimitazione specificato da x1, x2y1, e y2 (o da lpRect). I punti iniziali e finali dell'arco vengono specificati da x3, y3, x4e y4 (o da ptStart e ptEnd).

L'arco viene disegnato con la penna selezionata, spostandosi in senso antiorario. Altre due linee vengono disegnate da ogni endpoint al centro dell'arco. L'area a torta a forma di torta viene riempita con il pennello corrente. Se x3 è uguale x4 a e y3 uguale y4a , il risultato è un'ellisse con una singola riga dal centro dell'ellisse al punto (x3, y3) o (x4, y4).

La figura disegnata da questa funzione si estende fino a ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1. Sia la larghezza che l'altezza del rettangolo di delimitazione devono essere maggiori di 2 unità e inferiori a 32.767 unità.

Esempio

void CDCView::DrawPie(CDC *pDC)
{
   // Fill the client area with a simple pie chart. A
   // big blue slice covers 75% of the pie, from
   // 6 o'clock to 3 o'clock. This portion is filled
   // with blue and has a blue edge. The remaining 25%
   // is filled with a red, diagonal hatch and has
   // a red edge.

   // Get the client area.
   CRect rectClient;
   GetClientRect(rectClient);

   // Make a couple of pens and similar brushes.
   CPen penBlue, penRed;
   CBrush brushBlue, brushRed;
   CBrush *pOldBrush;
   CPen *pOldPen;

   brushBlue.CreateSolidBrush(RGB(0, 0, 255));
   brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
   penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
   penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));

   // Draw from 3 o'clock to 6 o'clock, counterclockwise,
   // in a blue pen with a solid blue fill.

   pOldPen = pDC->SelectObject(&penBlue);
   pOldBrush = pDC->SelectObject(&brushBlue);

   pDC->Pie(rectClient,
            CPoint(rectClient.right, rectClient.CenterPoint().y),
            CPoint(rectClient.CenterPoint().x, rectClient.right));

   // Draw the remaining quarter slice from 6 o'clock
   // to 3 o'clock, counterclockwise, in a red pen with
   // the hatched brush.
   pDC->SelectObject(&penRed);
   pDC->SelectObject(&brushRed);

   // Same parameters, but reverse start and end points.
   pDC->Pie(rectClient,
            CPoint(rectClient.CenterPoint().x, rectClient.right),
            CPoint(rectClient.right, rectClient.CenterPoint().y));

   // Restore the previous pen.
   pDC->SelectObject(pOldPen);
}

CDC::PlayMetaFile

Riproduce il contenuto del metafile specificato nel contesto di dispositivo.

BOOL PlayMetaFile(HMETAFILE hMF);

BOOL PlayMetaFile(
    HENHMETAFILE hEnhMetaFile,
    LPCRECT lpBounds);

Parametri

hMF
Identifica il metafile da riprodurre.

hEnhMetaFile
Identifica il metafile avanzato.

lpBounds
Punta a una RECT struttura o a un CRect oggetto che contiene le coordinate del rettangolo di delimitazione utilizzato per visualizzare l'immagine. Le coordinate vengono specificate in unità logiche.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il metafile può essere riprodotto un numero qualsiasi di volte.

La seconda versione di PlayMetaFile visualizza l'immagine archiviata nel metafile in formato avanzato specificato. Quando un'applicazione chiama la seconda versione di PlayMetaFile, Windows usa la cornice dell'immagine nell'intestazione metafile avanzata per eseguire il mapping dell'immagine sul rettangolo a cui punta il parametro lpBounds . (Questa immagine può essere sheared o ruotata impostando la trasformazione globale nel dispositivo di output prima di chiamare PlayMetaFile.) I punti lungo i bordi del rettangolo sono inclusi nell'immagine. Un'immagine metafile avanzata può essere ritagliata definendo l'area di ritaglio nel dispositivo di output prima di riprodurre il metafile avanzato.

Se un metafile avanzato contiene una tavolozza facoltativa, un'applicazione può ottenere colori coerenti impostando una tavolozza dei colori nel dispositivo di output prima di chiamare la seconda versione di PlayMetaFile. Per recuperare la tavolozza facoltativa, usare la GetEnhMetaFilePaletteEntries funzione Windows. Un metafile avanzato può essere incorporato in un metafile avanzato appena creato chiamando la seconda versione di e riproducendo il metafile avanzato di PlayMetaFile origine nel contesto di dispositivo per il nuovo metafile avanzato.

Gli stati del contesto del dispositivo di output vengono mantenuti da questa funzione. Qualsiasi oggetto creato ma non eliminato nel metafile avanzato viene eliminato da questa funzione. Per arrestare questa funzione, un'applicazione può chiamare la CancelDC funzione Windows da un altro thread per terminare l'operazione. In questo caso, la funzione restituisce zero.

CDC::PlgBlt

Esegue un trasferimento bit-block dei bit dei dati di colore dal rettangolo specificato nel contesto del dispositivo di origine al parallelogramma specificato nel contesto di dispositivo specificato nel contesto di dispositivo specificato.

BOOL PlgBlt(
    LPPOINT lpPoint,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nWidth,
    int nHeight,
    CBitmap& maskBitmap,
    int xMask,
    int yMask);

Parametri

lpPoint
Punta a una matrice di tre punti nello spazio logico che identifica tre angoli del parallelogramma di destinazione. L'angolo superiore sinistro del rettangolo di origine viene mappato al primo punto di questa matrice, all'angolo superiore destro del secondo punto della matrice e all'angolo inferiore sinistro del terzo punto. L'angolo inferiore destro del rettangolo di origine viene mappato al quarto punto implicito nel parallelogramma.

pSrcDC
Identifica il contesto del dispositivo di origine.

xSrc
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.

ySrc
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di origine.

nWidth
Specifica la larghezza, in unità logiche, del rettangolo di origine.

nHeight
Specifica l'altezza, in unità logiche, del rettangolo di origine.

maskBitmap
Identifica una bitmap monocromatica facoltativa usata per mascherare i colori del rettangolo di origine.

xMask
Specifica la coordinata x dell'angolo superiore sinistro della bitmap monocromatica.

yMask
Specifica la coordinata y dell'angolo superiore sinistro della bitmap monocromatica.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Se l'handle di maschera di bit specificato identifica una bitmap monocromatica valida, la funzione usa questa bitmap per mascherare i bit di dati colore dal rettangolo di origine.

Il quarto vertice del parallelogramma (D) è definito trattando i primi tre punti (A, B e C) come vettori e calcolando D = B + C - A.

Se la maschera di bit esiste, il valore 1 nella maschera indica che il colore del pixel di origine deve essere copiato nella destinazione. Un valore pari a 0 nella maschera indica che il colore del pixel di destinazione non deve essere modificato.

Se il rettangolo della maschera è inferiore ai rettangoli di origine e di destinazione, la funzione replica il modello mask.

Le trasformazioni di ridimensionamento, traduzione e reflection sono consentite nel contesto del dispositivo di origine; Tuttavia, le trasformazioni di rotazione e di taglio non sono. Se la bitmap mask non è una bitmap monocromatica, si verifica un errore. La modalità di estensione per il contesto di dispositivo di destinazione viene usata per determinare come estendere o comprimere i pixel, se necessario. Quando viene registrato un metafile avanzato, si verifica un errore se il contesto del dispositivo di origine identifica un contesto di dispositivo metafile avanzato.

Le coordinate di destinazione vengono trasformate in base al contesto del dispositivo di destinazione; le coordinate di origine vengono trasformate in base al contesto del dispositivo di origine. Se la trasformazione di origine ha una rotazione o un taglio, viene restituito un errore. Se i rettangoli di destinazione e di origine non hanno lo stesso formato di colore, PlgBlt converte il rettangolo di origine in modo che corrisponda al rettangolo di destinazione. Non tutti i dispositivi supportano PlgBlt. Per altre informazioni, vedere la descrizione della RC_BITBLT funzionalità raster nella CDC::GetDeviceCaps funzione membro.

Se i contesti di dispositivo di origine e di destinazione rappresentano dispositivi incompatibili, PlgBlt restituisce un errore.

CDC::PolyBezier

Disegna una o più spline di Bzier.

BOOL PolyBezier(
    const POINT* lpPoints,
    int nCount);

Parametri

lpPoints
Punta a una matrice di strutture di POINT dati che contengono gli endpoint e i punti di controllo delle spline.

nCount
Specifica il numero di punti nella lpPoints matrice. Questo valore deve essere uno più di tre volte il numero di spline da disegnare, perché ogni spline di Bzier richiede due punti di controllo e un endpoint e la spline iniziale richiede un altro punto iniziale.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione disegna spline Bzier cubiche usando gli endpoint e i punti di controllo specificati dal lpPoints parametro . La prima spline viene disegnata dal primo punto al quarto punto utilizzando il secondo e il terzo punto come punti di controllo. Ogni spline successiva nella sequenza richiede esattamente tre punti: il punto finale della spline precedente viene usato come punto iniziale, i due punti successivi nella sequenza sono punti di controllo e il terzo è il punto finale.

La posizione corrente non viene usata o aggiornata dalla PolyBezier funzione. La figura non viene riempita. Questa funzione disegna linee utilizzando la penna corrente.

CDC::PolyBezierTo

Disegna una o più spline di Bzier.

BOOL PolyBezierTo(
    const POINT* lpPoints,
    int nCount);

Parametri

lpPoints
Punta a una matrice di strutture di POINT dati che contiene gli endpoint e i punti di controllo.

nCount
Specifica il numero di punti nella lpPoints matrice. Questo valore deve essere tre volte il numero di spline da disegnare, perché ogni spline di Bzier richiede due punti di controllo e un punto finale.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione disegna spline Bzier cubiche usando i punti di controllo specificati dal lpPoints parametro . La prima spline viene disegnata dalla posizione corrente al terzo punto utilizzando i primi due punti come punti di controllo. Per ogni spline successiva, la funzione richiede esattamente tre punti e usa il punto finale della spline precedente come punto iniziale per il successivo. PolyBezierTo sposta la posizione corrente al punto finale dell'ultima spline di Bzier. La figura non viene riempita. Questa funzione disegna linee utilizzando la penna corrente.

Esempio

Vedere l'esempio per CDC::BeginPath.

CDC::PolyDraw

Disegna un set di segmenti di linea e spline di Bzier.

BOOL PolyDraw(
    const POINT* lpPoints,
    const BYTE* lpTypes,
    int nCount);

Parametri

lpPoints
Punta a una matrice di strutture di dati che contiene gli endpoint per ogni segmento di POINT linea e gli endpoint e i punti di controllo per ogni spline di Bzier.

lpTypes
Punta a una matrice che specifica la modalità di utilizzo di ogni punto nella lpPoints matrice. I valori possono essere uno dei seguenti:

  • PT_MOVETO Specifica che questo punto inizia una figura non contigua. Questo punto diventa la nuova posizione corrente.

  • PT_LINETO Specifica che una linea deve essere disegnata dalla posizione corrente a questo punto, che diventa quindi la nuova posizione corrente.

  • PT_BEZIERTO Specifica che questo punto è un punto di controllo o un punto finale per una spline di Bzier.

PT_BEZIERTO i tipi si verificano sempre in set di tre. La posizione corrente definisce il punto iniziale per la spline di Bzier. I primi due PT_BEZIERTO punti sono i punti di controllo e il terzo PT_BEZIERTO punto è il punto finale. Il punto finale diventa la nuova posizione corrente. Se non sono presenti tre punti consecutivi PT_BEZIERTO , viene restituito un errore.

Un PT_LINETO tipo o PT_BEZIERTO può essere combinato con la costante seguente utilizzando l'operatore bit per bit OR per indicare che il punto corrispondente è l'ultimo punto di una figura e la figura è chiusa:

  • PT_CLOSEFIGURE Specifica che la figura viene chiusa automaticamente dopo il completamento del PT_LINETO tipo o PT_BEZIERTO per questo punto. Una linea viene disegnata da questo punto al punto o MoveTo più recentePT_MOVETO.

    Questo flag viene combinato con il PT_LINETO tipo per una riga o con il PT_BEZIERTO tipo di punto finale per una spline Bzier, usando l'operatore OR bit per bit. La posizione corrente è impostata sul punto finale della riga di chiusura.

nCount
Specifica il numero totale di punti nella lpPoints matrice, uguale al numero di byte nella lpTypes matrice.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione può essere usata per disegnare figure non contigue al posto di chiamate consecutive alle CDC::MoveTofunzioni membro , CDC::LineToe CDC::PolyBezierTo . Le linee e le spline vengono disegnate usando la penna corrente e le figure non vengono riempite. Se è stato avviato un percorso attivo chiamando la CDC::BeginPath funzione membro, PolyDraw aggiunge al percorso. I punti contenuti nella lpPoints matrice e in lpTypes indicano se ogni punto fa parte di un'operazione CDC::MoveTo, CDC::LineToo CDC::BezierTo . È anche possibile chiudere le figure. Questa funzione aggiorna la posizione corrente.

Esempio

Vedere l'esempio per CDC::BeginPath.

CDC::Polygon

Disegna un poligono costituito da due o più punti (vertici) collegati da linee, utilizzando la penna corrente.

BOOL Polygon(
    LPPOINT lpPoints,
    int nCount);

Parametri

lpPoints
Punta a una matrice di punti che specifica i vertici del poligono. Ogni punto della matrice è una POINT struttura o un CPoint oggetto .

nCount
Specifica il numero di vertici nella matrice.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il sistema chiude automaticamente il poligono, se necessario, disegnando una linea dall'ultimo vertice al primo.

La modalità di riempimento poligono corrente può essere recuperata o impostata usando le GetPolyFillMode funzioni membro e SetPolyFillMode .

Esempio

void CDCView::DrawPolygon(CDC *pDC)
{
   // find the client area
   CRect rect;
   GetClientRect(rect);

   // draw with a thick blue pen
   CPen penBlue(PS_SOLID, 5, RGB(0, 0, 255));
   CPen *pOldPen = pDC->SelectObject(&penBlue);

   // and a solid red brush
   CBrush brushRed(RGB(255, 0, 0));
   CBrush *pOldBrush = pDC->SelectObject(&brushRed);

   // Find the midpoints of the top, right, left, and bottom
   // of the client area. They will be the vertices of our polygon.
   CPoint pts[4];
   pts[0].x = rect.left + rect.Width() / 2;
   pts[0].y = rect.top;

   pts[1].x = rect.right;
   pts[1].y = rect.top + rect.Height() / 2;

   pts[2].x = pts[0].x;
   pts[2].y = rect.bottom;

   pts[3].x = rect.left;
   pts[3].y = pts[1].y;

   // Calling Polygon() on that array will draw three lines
   // between the points, as well as an additional line to
   // close the shape--from the last point to the first point
   // we specified.
   pDC->Polygon(pts, 4);

   // Put back the old objects.
   pDC->SelectObject(pOldPen);
   pDC->SelectObject(pOldBrush);
}

CDC::Polyline

Disegna un set di segmenti di linea che collegano i punti specificati da lpPoints.

BOOL Polyline(
    LPPOINT lpPoints,
    int nCount);

Parametri

lpPoints
Punta a una matrice di POINT strutture o CPoint oggetti da connettere.

nCount`
Specifica il numero di punti nella matrice. Questo valore deve essere almeno 2.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Le linee vengono disegnate dal primo punto attraverso i punti successivi utilizzando la penna corrente. A differenza della LineTo funzione membro, la Polyline funzione non usa o aggiorna la posizione corrente.

Per altre informazioni, vedere PolyLine in Windows SDK.

CDC::PolylineTo

Disegna una o più linee rette.

BOOL PolylineTo(
    const POINT* lpPoints,
    int nCount);

Parametri

lpPoints
Punta a una matrice di strutture di POINT dati che contiene i vertici della linea.

nCount
Specifica il numero di punti nella matrice.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Una linea viene disegnata dalla posizione corrente al primo punto specificato dal lpPoints parametro utilizzando la penna corrente. Per ogni riga aggiuntiva, la funzione disegna dal punto finale della riga precedente al punto successivo specificato da lpPoints. PolylineTo sposta la posizione corrente al punto finale dell'ultima riga. Se i segmenti di linea tracciati da questa funzione formano una figura chiusa, la figura non viene riempita.

CDC::PolyPolygon

Crea due o più poligoni riempiti usando la modalità di riempimento poligono corrente.

BOOL PolyPolygon(
    LPPOINT lpPoints,
    LPINT lpPolyCounts,
    int nCount);

Parametri

lpPoints
Punta a una matrice di POINT strutture o CPoint oggetti che definiscono i vertici dei poligoni.

lpPolyCounts
Punta a una matrice di numeri interi, ognuno dei quali specifica il numero di punti in uno dei poligoni nella lpPoints matrice.

nCount
Numero di voci nella lpPolyCounts matrice. Questo numero specifica il numero di poligoni da disegnare. Questo valore deve essere almeno 2.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

I poligoni possono essere disgiunti o sovrapposti.

Ogni poligono specificato in una chiamata alla PolyPolygon funzione deve essere chiuso. A differenza dei poligoni creati dalla Polygon funzione membro, i poligoni creati da PolyPolygon non vengono chiusi automaticamente.

La funzione crea due o più poligoni. Per creare un singolo poligono, un'applicazione deve usare la Polygon funzione membro.

La modalità di riempimento poligono corrente può essere recuperata o impostata usando le GetPolyFillMode funzioni membro e SetPolyFillMode .

CDC::PolyPolyline

Disegna più serie di segmenti di linea collegati.

BOOL PolyPolyline(
    const POINT* lpPoints,
    const DWORD* lpPolyPoints,
    int nCount);

Parametri

lpPoints
Punta a una matrice di strutture che contiene i vertici delle polilinee. Le polilinee vengono specificate consecutivamente.

lpPolyPoints
Punta a una matrice di variabili che specifica il numero di punti nella lpPoints matrice per il poligono corrispondente. Ogni voce deve essere maggiore o uguale a 2.

nCount
Specifica il numero totale di conteggi nella lpPolyPoints matrice.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

I segmenti di linea vengono disegnati utilizzando la penna corrente. Le cifre formate dai segmenti non vengono riempite. La posizione corrente non viene usata o aggiornata da questa funzione.

CDC::PtVisible

Determina se il punto specificato si trova all'interno dell'area di ritaglio del contesto di dispositivo.

virtual BOOL PtVisible(
    int x,
    int y) const;

BOOL PtVisible(POINT point) const;

Parametri

x
Specifica la coordinata x logica del punto.

y
Specifica la coordinata y logica del punto.

point
Specifica il punto da archiviare nelle coordinate logiche. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se il punto specificato si trova all'interno dell'area di ritaglio; in caso contrario, 0.

CDC::QueryAbort

Chiama la funzione di interruzione installata dalla SetAbortProc funzione membro per un'applicazione di stampa e chiede se la stampa deve essere terminata.

BOOL QueryAbort() const;

Valore restituito

Il valore restituito è diverso da zero se la stampa deve continuare o se non è presente alcuna procedura di interruzione. È 0 se il processo di stampa deve essere terminato. Il valore restituito viene fornito dalla funzione di interruzione.

CDC::RealizePalette

Mappe voci dalla tavolozza logica corrente alla tavolozza del sistema.

UINT RealizePalette();

Valore restituito

Indica il numero di voci nella tavolozza logica mappate a voci diverse nel riquadro di sistema. Rappresenta il numero di voci mappate da questa funzione per adattarsi alle modifiche apportate alla tavolozza di sistema dall'ultima realizzazione della tavolozza logica.

Osservazioni:

Una tavolozza dei colori logica funge da buffer tra le applicazioni a elevato utilizzo di colori e il sistema, consentendo a un'applicazione di usare il numero di colori necessario senza interferire con i propri colori visualizzati o con i colori visualizzati da altre finestre.

Quando una finestra ha lo stato attivo e chiama RealizePalette, Windows garantisce che la finestra visualizzi tutti i colori richiesti, fino al numero massimo disponibile contemporaneamente sullo schermo. Windows visualizza anche i colori non trovati nella tavolozza della finestra associandoli ai colori disponibili.

Windows corrisponde inoltre ai colori richiesti da finestre inattive che chiamano la funzione il più vicino possibile ai colori disponibili. In questo modo si riducono significativamente le modifiche indesiderate nei colori visualizzati in finestre inattive.

CDC::Rectangle

Disegna un rettangolo utilizzando la penna corrente.

BOOL Rectangle(
    int x1,
    int y1,
    int x2,
    int y2);

BOOL Rectangle(LPCRECT lpRect);

Parametri

x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo (in unità logiche).

y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo (in unità logiche).

x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo (in unità logiche).

y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo (in unità logiche).

lpRect
Specifica il rettangolo in unità logiche. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

L'interno del rettangolo viene riempito utilizzando il pennello corrente.

Il rettangolo si estende fino a, ma non include le coordinate destra e inferiore. Ciò significa che l'altezza del rettangolo è y2 - y1 e la larghezza del rettangolo è .x2 - x1 Sia la larghezza che l'altezza di un rettangolo devono essere maggiori di 2 unità e inferiori a 32.767 unità.

Esempio

void CDCView::DrawRectangle(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // draw a thick black rectangle filled with blue
   pDC->Rectangle(rect);

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::RectVisible

Determina se una parte del rettangolo specificato si trova all'interno dell'area di ritaglio del contesto di visualizzazione.

virtual BOOL RectVisible(LPCRECT lpRect) const;

Parametri

lpRect
Punta a una RECT struttura o a un CRect oggetto che contiene le coordinate logiche del rettangolo specificato.

Valore restituito

Diverso da zero se una parte del rettangolo specificato si trova all'interno dell'area di ritaglio; in caso contrario, 0.

CDC::ReleaseAttribDC

Chiamare questa funzione membro per impostare su m_hAttribDC NULL.

virtual void ReleaseAttribDC();

Osservazioni:

Ciò non causa Detach un problema. Solo il contesto del dispositivo di output è collegato all'oggetto CDC e può essere scollegato solo.

CDC::ReleaseOutputDC

Chiamare questa funzione membro per impostare il m_hDC membro su NULL.

virtual void ReleaseOutputDC();

Osservazioni:

Questa funzione membro non può essere chiamata quando il contesto del dispositivo di output è collegato all'oggetto CDC . Usare la Detach funzione membro per scollegare il contesto del dispositivo di output.

CDC::ResetDC

Chiamare questa funzione membro per aggiornare il contesto di dispositivo di cui è stato eseguito il wrapping dall'oggetto CDC .

BOOL ResetDC(const DEVMODE* lpDevMode);

Parametri

lpDevMode
Puntatore a una struttura di Windows DEVMODE .

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il contesto del dispositivo viene aggiornato dalle informazioni specificate nella struttura di Windows DEVMODE . Questa funzione membro reimposta solo il contesto del dispositivo dell'attributo.

Un'applicazione userà in genere la ResetDC funzione membro quando una finestra elabora un WM_DEVMODECHANGE messaggio. È anche possibile utilizzare questa funzione membro per modificare l'orientamento della carta o i contenitori di carta durante la stampa di un documento.

Non è possibile usare questa funzione membro per modificare il nome del driver, il nome del dispositivo o la porta di output. Quando l'utente modifica la connessione alla porta o il nome del dispositivo, è necessario eliminare il contesto di dispositivo originale e creare un nuovo contesto di dispositivo con le nuove informazioni.

Prima di chiamare questa funzione membro, è necessario assicurarsi che tutti gli oggetti (diversi dagli oggetti stock) selezionati nel contesto di dispositivo siano stati selezionati.

CDC::RestoreDC

Ripristina il contesto del dispositivo allo stato precedente identificato da nSavedDC.

virtual BOOL RestoreDC(int nSavedDC);

Parametri

nSavedDC
Specifica il contesto di dispositivo da ripristinare. Può essere un valore restituito da una chiamata di funzione precedente SaveDC . Se nSavedDC è -1, viene ripristinato il contesto di dispositivo salvato più di recente.

Valore restituito

Diverso da zero se il contesto specificato è stato ripristinato; in caso contrario, 0.

Osservazioni:

RestoreDC ripristina il contesto del dispositivo rimuovendo le informazioni sullo stato da uno stack creato da chiamate precedenti alla SaveDC funzione membro.

Lo stack può contenere le informazioni sullo stato per diversi contesti di dispositivo. Se il contesto specificato da nSavedDC non si trova all'inizio dello stack, RestoreDC elimina tutte le informazioni sullo stato tra il contesto di dispositivo specificato da nSavedDC e la parte superiore dello stack. Le informazioni eliminate vengono perse.

CDC::RoundRect

Disegna un rettangolo con angoli arrotondati utilizzando la penna corrente.

BOOL RoundRect(
    int x1,
    int y1,
    int x2,
    int y2,
    int x3,
    int y3);

BOOL RoundRect(
    LPCRECT lpRect,
    POINT point);

Parametri

x1
Specifica la coordinata x dell'angolo superiore sinistro del rettangolo (in unità logiche).

y1
Specifica la coordinata y dell'angolo superiore sinistro del rettangolo (in unità logiche).

x2
Specifica la coordinata x dell'angolo inferiore destro del rettangolo (in unità logiche).

y2
Specifica la coordinata y dell'angolo inferiore destro del rettangolo (in unità logiche).

x3
Specifica la larghezza dell'ellisse utilizzata per disegnare gli angoli arrotondati (in unità logiche).

y3
Specifica l'altezza dell'ellisse utilizzata per disegnare gli angoli arrotondati (in unità logiche).

lpRect
Specifica il rettangolo di delimitazione in unità logiche. È possibile passare un CRect oggetto o un puntatore a una RECT struttura per questo parametro.

point
La coordinata x di point specifica la larghezza dell'ellisse per disegnare gli angoli arrotondati (in unità logiche). La coordinata y di point specifica l'altezza dell'ellisse per disegnare gli angoli arrotondati (in unità logiche). È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

L'interno del rettangolo viene riempito utilizzando il pennello corrente.

La figura che questa funzione disegna si estende fino a ma non include le coordinate destra e inferiore. Ciò significa che l'altezza della figura è y2 - y1 e la larghezza della figura è x2 - x1. Sia l'altezza che la larghezza del rettangolo di delimitazione devono essere maggiori di 2 unità e inferiori a 32.767 unità.

Esempio

void CDCView::DrawRoundRect(CDC *pDC)
{
   // create and select a solid blue brush
   CBrush brushBlue(RGB(0, 0, 255));
   CBrush *pOldBrush = pDC->SelectObject(&brushBlue);

   // create and select a thick, black pen
   CPen penBlack;
   penBlack.CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
   CPen *pOldPen = pDC->SelectObject(&penBlack);

   // get our client rectangle
   CRect rect;
   GetClientRect(rect);

   // shrink our rect 20 pixels in each direction
   rect.DeflateRect(20, 20);

   // Draw a thick black rectangle filled with blue
   // corners rounded at a 17-unit radius. Note that
   // a radius of three or less is not noticeable because
   // the pen is three units wide.
   pDC->RoundRect(rect, CPoint(17, 17));

   // put back the old objects
   pDC->SelectObject(pOldBrush);
   pDC->SelectObject(pOldPen);
}

CDC::SaveDC

Salva lo stato corrente del contesto di dispositivo copiando le informazioni sullo stato (ad esempio l'area di ritaglio, gli oggetti selezionati e la modalità di mapping) in uno stack di contesto gestito da Windows.

virtual int SaveDC();

Valore restituito

Intero che identifica il contesto di dispositivo salvato. È 0 se si verifica un errore. Questo valore restituito può essere usato per ripristinare il contesto di dispositivo chiamando RestoreDC.

Osservazioni:

Il contesto di dispositivo salvato può essere ripristinato in un secondo momento usando RestoreDC.

SaveDC può essere usato un numero qualsiasi di volte per salvare un numero qualsiasi di stati del contesto di dispositivo.

CDC::ScaleViewportExt

Modifica gli extent del riquadro di visualizzazione rispetto ai valori correnti.

virtual CSize ScaleViewportExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

Parametri

xNum
Specifica l'importo in base al quale moltiplicare l'extent x corrente.

xDenom
Specifica la quantità in base alla quale dividere il risultato della moltiplicazione dell'extent x corrente per il valore del xNum parametro.

yNum
Specifica l'importo in base al quale moltiplicare l'extent y corrente.

yDenom
Specifica l'importo in base al quale dividere il risultato della moltiplicazione dell'extent y corrente per il valore del yNum parametro.

Valore restituito

Gli extent del riquadro di visualizzazione precedenti (in unità dispositivo) come CSize oggetto .

Osservazioni:

Le formule vengono scritte come segue:

xNewVE = ( xOldVE * xNum ) / xDenom

yNewVE = ( yOldVE * yNum ) / yDenom

I nuovi extent del riquadro di visualizzazione vengono calcolati moltiplicando gli extent correnti per il numeratore specificato e quindi dividendo per il denominatore specificato.

CDC::ScaleWindowExt

Modifica gli extent della finestra rispetto ai valori correnti.

virtual CSize ScaleWindowExt(
    int xNum,
    int xDenom,
    int yNum,
    int yDenom);

Parametri

xNum
Specifica l'importo in base al quale moltiplicare l'extent x corrente.

xDenom
Specifica la quantità in base alla quale dividere il risultato della moltiplicazione dell'extent x corrente per il valore del xNum parametro.

yNum
Specifica l'importo in base al quale moltiplicare l'extent y corrente.

yDenom
Specifica l'importo in base al quale dividere il risultato della moltiplicazione dell'extent y corrente per il valore del yNum parametro.

Valore restituito

Gli extent della finestra precedente (in unità logiche) come CSize oggetto .

Osservazioni:

Le formule vengono scritte come segue:

xNewWE = ( xOldWE * xNum ) / xDenom

yNewWE = ( yOldWE * yNum ) / yDenom

I nuovi extent finestra vengono calcolati moltiplicando gli extent correnti per il numeratore specificato e quindi dividendo per il denominatore specificato.

CDC::ScrollDC

Scorre un rettangolo di bit orizzontalmente e verticalmente.

BOOL ScrollDC(
    int dx,
    int dy,
    LPCRECT lpRectScroll,
    LPCRECT lpRectClip,
    CRgn* pRgnUpdate,
    LPRECT lpRectUpdate);

Parametri

dx
Specifica il numero di unità di scorrimento orizzontali.

dy
Specifica il numero di unità di scorrimento verticali.

lpRectScroll
Punta alla struttura o CRect all'oggetto RECT che contiene le coordinate del rettangolo di scorrimento.

lpRectClip
Punta alla struttura o CRect all'oggetto RECT che contiene le coordinate del rettangolo di ritaglio. Quando questo rettangolo è inferiore a quello originale a lpRectScrollcui punta , lo scorrimento si verifica solo nel rettangolo più piccolo.

pRgnUpdate
Identifica l'area individuata dal processo di scorrimento. La ScrollDC funzione definisce questa area. Non è necessariamente un rettangolo.

lpRectUpdate
Punta alla struttura o CRect all'oggetto RECT che riceve le coordinate del rettangolo che delimita l'area di aggiornamento di scorrimento. Si tratta della più grande area rettangolare che richiede il ripainting. I valori nella struttura o nell'oggetto quando la funzione restituisce sono in coordinate client, indipendentemente dalla modalità di mapping per il contesto di dispositivo specificato.

Valore restituito

Diverso da zero se viene eseguito lo scorrimento; in caso contrario, 0.

Osservazioni:

Se lpRectUpdate è NULL, Windows non calcola il rettangolo di aggiornamento. Se e pRgnUpdatelpRectUpdate sono NULL, Windows non calcola l'area di aggiornamento. Se pRgnUpdate non NULLè , Windows presuppone che contenga un puntatore valido all'area individuata dal processo di scorrimento (definito dalla ScrollDC funzione membro). L'area di aggiornamento restituita in lpRectUpdate può essere passata a CWnd::InvalidateRgn , se necessario.

Un'applicazione deve usare la ScrollWindow funzione membro della classe CWnd quando è necessario scorrere l'intera area client di una finestra. In caso contrario, deve usare ScrollDC.

CDC::SelectClipPath

Seleziona il percorso corrente come area di ritaglio per il contesto di dispositivo, combinando la nuova area con qualsiasi area di ritaglio esistente usando la modalità specificata.

BOOL SelectClipPath(int nMode);

Parametri

nMode
Specifica il modo di utilizzare il percorso. Sono consentiti i valori seguenti:

  • RGN_AND La nuova area di ritaglio include l'intersezione (aree sovrapposte) dell'area di ritaglio corrente e il percorso corrente.

  • RGN_COPY La nuova area di ritaglio è il percorso corrente.

  • RGN_DIFF La nuova area di ritaglio include le aree dell'area di ritaglio corrente e quelle del percorso corrente vengono escluse.

  • RGN_OR La nuova area di ritaglio include l'unione (aree combinate) dell'area di ritaglio corrente e il percorso corrente.

  • RGN_XOR La nuova area di ritaglio include l'unione dell'area di ritaglio corrente e del percorso corrente, ma senza le aree sovrapposte.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il contesto di dispositivo identificato deve contenere un percorso chiuso.

CDC::SelectClipRgn

Seleziona l'area specificata come area di ritaglio corrente per il contesto del dispositivo.

int SelectClipRgn(CRgn* pRgn);

int SelectClipRgn(
    CRgn* pRgn,
    int nMode);

Parametri

pRgn
Identifica l'area da selezionare.

  • Per la prima versione di questa funzione, se questo valore è NULL, l'intera area client è selezionata e l'output viene ancora ritagliato nella finestra.

  • Per la seconda versione di questa funzione, questo handle può essere NULL solo quando viene specificata la RGN_COPY modalità .

nMode
Specifica l'operazione da eseguire. Deve essere uno dei valori seguenti:

  • RGN_AND La nuova area di ritaglio combina le aree sovrapposte dell'area di ritaglio corrente e l'area identificata da pRgn.

  • RGN_COPY La nuova area di ritaglio è una copia dell'area identificata da pRgn. Questa funzionalità è identica alla prima versione di SelectClipRgn. Se l'area identificata da pRgn è NULL, la nuova area di ritaglio diventa l'area di ritaglio predefinita (un'area Null).

  • RGN_DIFF La nuova area di ritaglio combina le aree dell'area di ritaglio corrente con quelle escluse dall'area identificata da pRgn.

  • RGN_OR La nuova area di ritaglio combina l'area di ritaglio corrente e l'area identificata da pRgn.

  • RGN_XOR La nuova area di ritaglio combina l'area di ritaglio corrente e l'area identificata da pRgn ma esclude eventuali aree sovrapposte.

Valore restituito

Tipo dell'area. Può essere uno dei valori seguenti:

  • COMPLEXREGION La nuova area di ritaglio ha bordi sovrapposti.

  • ERROR Il contesto di dispositivo o l'area non è valido.

  • NULLREGION La nuova area di ritaglio è vuota.

  • SIMPLEREGION La nuova area di ritaglio non presenta bordi sovrapposti.

Osservazioni:

Viene usata solo una copia dell'area selezionata. L'area stessa può essere selezionata per un numero qualsiasi di altri contesti di dispositivo oppure può essere eliminata.

La funzione presuppone che le coordinate per l'area specificata siano specificate nelle unità dispositivo. Alcuni dispositivi stampanti supportano l'output di testo a una risoluzione superiore rispetto all'output grafico per mantenere la precisione necessaria per esprimere le metriche del testo. Questi dispositivi segnalano le unità dispositivo a una risoluzione più elevata, ovvero in unità di testo. Questi dispositivi ridimensionano quindi le coordinate per la grafica in modo che diverse unità dispositivo segnalate eseseguono il mapping a una sola unità grafica. È consigliabile chiamare sempre la SelectClipRgn funzione usando le unità di testo.

Le applicazioni che devono scalare gli oggetti grafici in GDI possono usare l'escape della GETSCALINGFACTOR stampante per determinare il fattore di ridimensionamento. Questo fattore di ridimensionamento influisce sul ritaglio. Se un'area viene usata per ritagliare elementi grafici, GDI divide le coordinate in base al fattore di ridimensionamento. Se l'area viene usata per ritagliare il testo, GDI non esegue alcuna regolazione del ridimensionamento. Un fattore di ridimensionamento pari a 1 determina la divisione delle coordinate per 2; un fattore di ridimensionamento pari a 2 determina la divisione delle coordinate per 4; E così via.

CDC::SelectObject

Seleziona un oggetto nel contesto del dispositivo.

CPen* SelectObject(CPen* pPen);
CBrush* SelectObject(CBrush* pBrush);
virtual CFont* SelectObject(CFont* pFont);
CBitmap* SelectObject(CBitmap* pBitmap);
int SelectObject(CRgn* pRgn);
CGdiObject* SelectObject(CGdiObject* pObject);

Parametri

pPen
Puntatore a un CPen oggetto da selezionare.

pBrush
Puntatore a un CBrush oggetto da selezionare.

pFont
Puntatore a un CFont oggetto da selezionare.

pBitmap
Puntatore a un CBitmap oggetto da selezionare.

pRgn
Puntatore a un CRgn oggetto da selezionare.

pObject
Puntatore a un CGdiObject oggetto da selezionare.

Valore restituito

Puntatore all'oggetto da sostituire. Si tratta di un puntatore a un oggetto di una delle classi derivate da CGdiObject, ad esempio CPen, a seconda della versione della funzione utilizzata. Il valore restituito è NULL se si verifica un errore. Questa funzione può restituire un puntatore a un oggetto temporaneo. Questo oggetto temporaneo è valido solo durante l'elaborazione di un messaggio di Windows. Per ulteriori informazioni, vedere CGdiObject::FromHandle.

La versione della funzione membro che accetta un parametro region esegue la stessa attività della SelectClipRgn funzione membro. Il valore restituito può essere uno dei seguenti:

  • COMPLEXREGION La nuova area di ritaglio ha bordi sovrapposti.

  • ERROR Il contesto di dispositivo o l'area non è valido.

  • NULLREGION La nuova area di ritaglio è vuota.

  • SIMPLEREGION La nuova area di ritaglio non presenta bordi sovrapposti.

Osservazioni:

La classe CDC fornisce cinque versioni specializzate per determinati tipi di oggetti GDI, tra cui penne, pennelli, tipi di carattere, bitmap e aree geografiche. L'oggetto appena selezionato sostituisce l'oggetto precedente dello stesso tipo. Ad esempio, se pObject della versione generale di SelectObject punta a un CPen oggetto , la funzione sostituisce la penna corrente con la penna specificata da pObject.

Un'applicazione può selezionare una bitmap in contesti di dispositivo di memoria solo e in un solo contesto di dispositivo di memoria alla volta. Il formato della bitmap deve essere monocromatico o compatibile con il contesto del dispositivo; in caso contrario, SelectObject restituisce un errore.

Per Windows 3.1 e versioni successive, la SelectObject funzione restituisce lo stesso valore, indipendentemente dal fatto che venga usato in un metafile o meno. Nelle versioni precedenti di Windows, SelectObject è stato restituito un valore diverso da zero per l'esito positivo e 0 per l'errore quando è stato usato in un metafile.

CDC::SelectPalette

Seleziona la tavolozza logica specificata da pPalette come oggetto tavolozza selezionato del contesto di dispositivo.

CPalette* SelectPalette(
    CPalette* pPalette,
    BOOL bForceBackground);

Parametri

pPalette
Identifica la tavolozza logica da selezionare. Questa tavolozza deve essere già stata creata con la CPalette funzione CreatePalettemembro .

bForceBackground
Specifica se la tavolozza logica deve essere una tavolozza di sfondo. Se bForceBackground è diverso da zero, la tavolozza selezionata è sempre una tavolozza di sfondo, indipendentemente dal fatto che la finestra abbia lo stato attivo per l'input. Se bForceBackground è 0 e il contesto del dispositivo è collegato a una finestra, la tavolozza logica è una tavolozza in primo piano quando la finestra ha lo stato attivo per l'input.

Valore restituito

Puntatore a un CPalette oggetto che identifica la tavolozza logica sostituita dalla tavolozza specificata da pPalette. NULL È se si verifica un errore.

Osservazioni:

La nuova tavolozza diventa l'oggetto tavolozza usato da GDI per controllare i colori visualizzati nel contesto del dispositivo e sostituisce la tavolozza precedente.

Un'applicazione può selezionare una tavolozza logica in più contesti di dispositivo. Tuttavia, le modifiche apportate a una tavolozza logica influiranno su tutti i contesti di dispositivo per cui è selezionata. Se un'applicazione seleziona una tavolozza in più contesti di dispositivo, i contesti di dispositivo devono appartenere tutti allo stesso dispositivo fisico.

CDC::SelectStockObject

Seleziona un CGdiObject oggetto che corrisponde a una delle penne, pennelli o tipi di carattere predefiniti.

virtual CGdiObject* SelectStockObject(int nIndex);

Parametri

nIndex
Specifica il tipo di oggetto stock desiderato. Può essere uno dei valori seguenti:

  • BLACK_BRUSH Pennello nero.

  • DKGRAY_BRUSH Pennello grigio scuro.

  • GRAY_BRUSH Pennello grigio.

  • HOLLOW_BRUSH Pennello vuoto.

  • LTGRAY_BRUSH Pennello grigio chiaro.

  • NULL_BRUSH Pennello Null.

  • WHITE_BRUSH Pennello bianco.

  • BLACK_PEN Penna nera.

  • NULL_PEN Penna Null.

  • WHITE_PEN Penna bianca.

  • ANSI_FIXED_FONT Tipo di carattere di sistema FISSO ANSI.

  • ANSI_VAR_FONT Tipo di carattere del sistema di variabili ANSI.

  • DEVICE_DEFAULT_FONT Tipo di carattere dipendente dal dispositivo.

  • OEM_FIXED_FONT Tipo di carattere fisso dipendente dall'OEM.

  • SYSTEM_FONT Tipo di carattere di sistema. Per impostazione predefinita, Windows usa il tipo di carattere di sistema per disegnare menu, controlli finestra di dialogo e altro testo. È preferibile, tuttavia, non fare affidamento su SYSTEM_FONT per ottenere il tipo di carattere usato da finestre e finestre di dialogo. Usare invece la SystemParametersInfo funzione con il SPI_GETNONCLIENTMETRICS parametro per recuperare il tipo di carattere corrente. SystemParametersInfotiene conto del tema corrente e fornisce informazioni sul tipo di carattere per didascalia, menu e finestre di dialogo dei messaggi.

  • SYSTEM_FIXED_FONT Tipo di carattere di sistema a larghezza fissa usato in Windows prima della versione 3.0. Questo oggetto è disponibile per la compatibilità con le versioni precedenti di Windows.

  • DEFAULT_PALETTE Tavolozza dei colori predefinita. Questa tavolozza è costituita dai 20 colori statici nella tavolozza del sistema.

Valore restituito

Puntatore all'oggetto CGdiObject sostituito se la funzione ha esito positivo. L'oggetto effettivo a cui punta è un CPenoggetto , CBrusho CFont . Se la chiamata ha esito negativo, il valore restituito è NULL.

CDC::SetAbortProc

Installa la procedura di interruzione per il processo di stampa.

int SetAbortProc(BOOL (CALLBACK* lpfn)(HDC, int));

Parametri

lpfn
Puntatore alla funzione di interruzione da installare come procedura di interruzione. Per altre informazioni sulla funzione di callback, vedere Funzione di callback per CDC::SetAbortProc.

Valore restituito

Specifica il risultato della SetAbortProc funzione. Alcuni dei valori seguenti sono più probabili di altri, ma tutti sono possibili.

  • SP_ERROR Errore generale.

  • SP_OUTOFDISK Spazio su disco insufficiente attualmente disponibile per lo spooling e non sarà più disponibile spazio.

  • SP_OUTOFMEMORY Memoria insufficiente per lo spooling.

  • SP_USERABORT L'utente ha terminato il processo tramite Gestione stampa.

Osservazioni:

Se un'applicazione deve consentire l'annullamento del processo di stampa durante lo spooling, deve impostare la funzione di interruzione prima dell'avvio del processo di stampa con la StartDoc funzione membro. Print Manager chiama la funzione di interruzione durante lo spooling per consentire all'applicazione di annullare il processo di stampa o di elaborare condizioni di spazio su disco insufficiente. Se non è impostata alcuna funzione di interruzione, il processo di stampa avrà esito negativo se non è disponibile spazio su disco sufficiente per lo spooling.

Le funzionalità di Microsoft Visual C++ semplificano la creazione della funzione di callback passata a SetAbortProc. L'indirizzo passato alla EnumObjects funzione membro è un puntatore a una funzione esportata con __declspec(dllexport) e con la convenzione di __stdcall chiamata.

Non è inoltre necessario esportare il nome della funzione in un'istruzione EXPORTS nel file di definizione del modulo dell'applicazione. È invece possibile usare il modificatore di EXPORT funzione, come in

BOOL CALLBACK EXPORT AFunction( HDC, int );

per fare in modo che il compilatore emetta il record di esportazione appropriato per l'esportazione in base al nome senza aliasing. Questo funziona per la maggior parte delle esigenze. Per alcuni casi speciali, ad esempio l'esportazione di una funzione ordinale o l'aliasing dell'esportazione, è comunque necessario usare un'istruzione EXPORTS in un file di definizione del modulo.

Le interfacce di registrazione del callback sono ora indipendenti dai tipi (è necessario passare un puntatore a funzione che punta al tipo di funzione corretto per il callback specifico).

Tutte le funzioni di callback devono intercettare le eccezioni di Microsoft Foundation prima di tornare a Windows, perché le eccezioni non possono essere generate attraverso i limiti di callback. Per altre informazioni sulle eccezioni, vedere l'articolo Eccezioni.

CDC::SetArcDirection

Imposta la direzione del disegno da utilizzare per le funzioni arco e rettangolo.

int SetArcDirection(int nArcDirection);

Parametri

nArcDirection
Specifica la nuova direzione dell'arco. Questo parametro può essere uno dei valori seguenti:

  • AD_COUNTERCLOCKWISE Figure disegnate in senso antiorario.

  • AD_CLOCKWISE Figure disegnate in senso orario.

Valore restituito

Specifica la direzione dell'arco precedente, se ha esito positivo; in caso contrario, 0.

Osservazioni:

La direzione predefinita è antiorario. La SetArcDirection funzione specifica la direzione in cui disegnare le funzioni seguenti:

Arc Torta
ArcTo Rectangle
Chord RoundRect
Ellipse

CDC::SetAttribDC

Chiamare questa funzione per impostare il contesto del dispositivo dell'attributo, m_hAttribDC.

virtual void SetAttribDC(HDC hDC);

Parametri

hDC
Contesto di dispositivo Windows.

Osservazioni:

Questa funzione membro non collega il contesto di dispositivo all'oggetto CDC . Solo il contesto del dispositivo di output è collegato a un CDC oggetto .

CDC::SetBkColor

Imposta il colore di sfondo corrente sul colore specificato.

virtual COLORREF SetBkColor(COLORREF crColor);

Parametri

crColor
Specifica il nuovo colore di sfondo.

Valore restituito

Colore di sfondo precedente come valore di colore RGB. Se si verifica un errore, il valore restituito viene 0x80000000.

Osservazioni:

Se la modalità di sfondo è OPAQUE, il sistema usa il colore di sfondo per riempire le lacune nelle linee in stile, le lacune tra le linee trattette nei pennelli e lo sfondo nelle celle di caratteri. Il sistema usa anche il colore di sfondo durante la conversione delle bitmap tra contesti di dispositivo a colori e monocromatici.

Se il dispositivo non può visualizzare il colore specificato, il sistema imposta il colore di sfondo sul colore fisico più vicino.

CDC::SetBkMode

Imposta la modalità di sfondo.

int SetBkMode(int nBkMode);

Parametri

nBkMode
Specifica la modalità da impostare. Questo parametro può essere uno dei valori seguenti:

  • OPAQUE Lo sfondo viene riempito con il colore di sfondo corrente prima che venga disegnato il testo, il pennello tratteggiato o la penna. Questa è la modalità di sfondo predefinita.

  • TRANSPARENT Lo sfondo non viene modificato prima del disegno.

Valore restituito

Modalità di sfondo precedente.

Osservazioni:

La modalità di sfondo definisce se il sistema rimuove i colori di sfondo esistenti sull'area di disegno prima di disegnare testo, pennelli tratteggi o qualsiasi stile di penna che non sia una linea continua.

Esempio

Vedere l'esempio per CWnd::OnCtlColor.

CDC::SetBoundsRect

Controlla l'accumulo di informazioni sul rettangolo di delimitazione per il contesto di dispositivo specificato.

UINT SetBoundsRect(
    LPCRECT lpRectBounds,
    UINT flags);

Parametri

lpRectBounds
Punta a una struttura o CRect a un RECT oggetto utilizzato per impostare il rettangolo di delimitazione. Le dimensioni del rettangolo vengono specificate in coordinate logiche. Questo parametro può essere NULL.

flags
Specifica il modo in cui il nuovo rettangolo verrà combinato con il rettangolo accumulato. Questo parametro può essere una combinazione dei valori seguenti:

  • DCB_ACCUMULATE Aggiungere il rettangolo specificato da lpRectBounds al rettangolo di delimitazione (usando un'operazione di unione rettangolo).

  • DCB_DISABLE Disattivare l'accumulo dei limiti.

  • DCB_ENABLE Attivare l'accumulo di limiti. L'impostazione predefinita per l'accumulo dei limiti è disabilitata.

Valore restituito

Stato corrente del rettangolo di delimitazione, se la funzione ha esito positivo. Come flags, il valore restituito può essere una combinazione di DCB_ valori:

  • DCB_ACCUMULATE Il rettangolo di delimitazione non è vuoto. Questo valore verrà sempre impostato.

  • DCB_DISABLE L'accumulo di limiti è disattivato.

  • DCB_ENABLE L'accumulo dei limiti è attivo.

Osservazioni:

Windows può mantenere un rettangolo di delimitazione per tutte le operazioni di disegno. Questo rettangolo può essere sottoposto a query e reimpostato dall'applicazione. I limiti del disegno sono utili per invalidare le cache bitmap.

CDC::SetBrushOrg

Specifica l'origine che GDI assegnerà al pennello successivo selezionato dall'applicazione nel contesto del dispositivo.

CPoint SetBrushOrg(
    int x,
    int y);

CPoint SetBrushOrg(POINT point);

Parametri

x
Specifica la coordinata x (in unità dispositivo) della nuova origine. Questo valore deve essere compreso nell'intervallo 0-7.

y
Specifica la coordinata y (in unità dispositivo) della nuova origine. Questo valore deve essere compreso nell'intervallo 0-7.

point
Specifica le coordinate x e y della nuova origine. Ogni valore deve essere compreso nell'intervallo 0-7. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Origine precedente del pennello nelle unità dispositivo.

Osservazioni:

Le coordinate predefinite per l'origine del pennello sono (0, 0). Per modificare l'origine di un pennello, chiamare la UnrealizeObject funzione per l'oggetto CBrush , chiamare e quindi chiamare SetBrushOrgla SelectObject funzione membro per selezionare il pennello nel contesto del dispositivo.

Non usare SetBrushOrg con oggetti stock CBrush .

CDC::SetColorAdjustment

Imposta i valori di regolazione del colore per il contesto di dispositivo usando i valori specificati.

BOOL SetColorAdjustment(const COLORADJUSTMENT* lpColorAdjust);

Parametri

lpColorAdjust
Punta a una COLORADJUSTMENT struttura di dati contenente i valori di regolazione del colore.

Valore restituito

Diverso da zero se ha esito positivo; in caso contrario 0.

Osservazioni:

I valori di regolazione del colore vengono usati per regolare il colore di input della bitmap di origine per le chiamate alla funzione membro quando HALFTONE viene impostata la CDC::StretchBlt modalità.

CDC::SetDCBrushColor

Imposta il colore del pennello del contesto di dispositivo corrente sul valore di colore specificato.

COLORREF SetDCBrushColor(COLORREF crColor);

Parametri

crColor
Specifica il nuovo colore del pennello.

Valore restituito

Se la funzione ha esito positivo, il valore restituito specifica il colore del pennello DC precedente come COLORREF valore.

Se la funzione ha esito negativo, il valore restituito è CLR_INVALID.

Osservazioni:

Questo metodo emula la funzionalità della funzione SetDCBrushColor, come descritto in Windows SDK.

CDC::SetDCPenColor

Imposta il colore della penna corrente del contesto di dispositivo (DC) sul valore di colore specificato.

COLORREF SetDCPenColor(COLORREF crColor);

Parametri

crColor
Specifica il nuovo colore della penna.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione membro usa la funzione SetDCPenColorWin32 , come descritto in Windows SDK.

CDC::SetGraphicsMode

Imposta la modalità grafica per il contesto di dispositivo specificato.

int SetGraphicsMode(int iMode);

Parametri

iMode
Specifica la modalità grafica. Per un elenco dei valori che questo parametro può accettare, vedere SetGraphicsMode.

Valore restituito

Restituisce la modalità grafica precedente in caso di esito positivo.

Restituisce 0 in caso di errore. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Questo metodo esegue il wrapping della funzione SetGraphicsModeGDI di Windows.

CDC::SetLayout

Chiamare questa funzione membro per modificare il layout del testo e della grafica per un contesto di dispositivo da destra a sinistra, il layout standard per le impostazioni cultura, ad esempio arabo ed ebraico.

DWORD SetLayout(DWORD dwLayout);

Parametri

dwLayout
Layout del contesto di dispositivo e flag di controllo bitmap. Può essere una combinazione dei valori seguenti.

Valore Significato
LAYOUT_BITMAPORIENTATIONPRESERVED Disabilita qualsiasi reflection per le chiamate a CDC::BitBlt e CDC::StretchBlt.
LAYOUT_RTL Imposta il layout orizzontale predefinito da destra a sinistra.
LAYOUT_LTR Imposta il layout predefinito da sinistra a destra.

Valore restituito

In caso di esito positivo, il layout precedente del contesto di dispositivo.

In caso di esito negativo, GDI_ERROR. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Normalmente, non SetLayout chiameresti una finestra. È invece possibile controllare il layout da destra a sinistra in una finestra impostando gli stili delle finestre estese, WS_EX_RTLREADINGad esempio . Un contesto di dispositivo, ad esempio una stampante o un metafile, non eredita questo layout. L'unico modo per impostare il contesto di dispositivo per un layout da destra a sinistra consiste nel chiamare SetLayout.

Se si chiama SetLayout(LAYOUT_RTL), SetLayout la modalità di mapping viene automaticamente modificata in MM_ISOTROPIC. Di conseguenza, una chiamata successiva a GetMapMode restituirà MM_ISOTROPIC invece di MM_TEXT.

In alcuni casi, ad esempio con molte bitmap, è possibile mantenere il layout da sinistra a destra. In questi casi, eseguire il rendering dell'immagine chiamando BitBlt o StretchBlt, quindi impostare il flag di controllo bitmap per dwLayout su LAYOUT_BITMAPORIENTATIONPRESERVED.

Dopo aver modificato il layout con il LAYOUT_RTL flag, i flag che normalmente specificano destra o sinistra vengono invertiti. Per evitare confusione, è possibile definire nomi alternativi per i flag standard. Per un elenco dei nomi di flag alternativi suggeriti, vedere SetLayout in Windows SDK.

CDC::SetMapMode

Imposta la modalità di mapping.

virtual int SetMapMode(int nMapMode);

Parametri

nMapMode
Specifica la nuova modalità di mapping. Può essere uno dei valori seguenti:

  • MM_ANISOTROPIC Le unità logiche vengono convertite in unità arbitrarie con assi scalati in modo arbitrario. L'impostazione della modalità di mapping su MM_ANISOTROPIC non modifica le impostazioni correnti della finestra o del riquadro di visualizzazione. Per modificare le unità, l'orientamento e il ridimensionamento, chiamare le SetWindowExt funzioni membro e SetViewportExt .

  • MM_HIENGLISH Ogni unità logica viene convertita in 0,001 pollici. Positivo x è a destra; positivo y è in su.

  • MM_HIMETRIC Ogni unità logica viene convertita in 0,01 millimetri. Positivo x è a destra; positivo y è in su.

  • MM_ISOTROPIC Le unità logiche vengono convertite in unità arbitrarie con assi altrettanto ridimensionati; ovvero 1 unità lungo l'asse x è uguale a 1 unità lungo l'asse y. Utilizzare le SetWindowExt funzioni membro e SetViewportExt per specificare le unità desiderate e l'orientamento degli assi. GDI apporta modifiche in base alle esigenze per garantire che le unità x e y rimangano le stesse dimensioni.

  • MM_LOENGLISH Ogni unità logica viene convertita in 0,01 pollici. Positivo x è a destra; positivo y è in su.

  • MM_LOMETRIC Ogni unità logica viene convertita in 0,1 millimetri. Positivo x è a destra; positivo y è in su.

  • MM_TEXT Ogni unità logica viene convertita in 1 pixel del dispositivo. Positivo x è a destra; positivo y è giù.

  • MM_TWIPS Ogni unità logica viene convertita in 1/20 di un punto. Poiché un punto è 1/72 pollici, una twip è di 1/1440 pollici. Positivo x è a destra; positivo y è in su.

Valore restituito

Modalità di mapping precedente.

Osservazioni:

La modalità di mapping definisce l'unità di misura usata per convertire le unità logiche in unità dispositivo; definisce anche l'orientamento degli assi x e y del dispositivo. GDI usa la modalità di mapping per convertire le coordinate logiche nelle coordinate del dispositivo appropriate. La MM_TEXT modalità consente alle applicazioni di lavorare in pixel del dispositivo, dove 1 unità è uguale a 1 pixel. Le dimensioni fisiche di un pixel variano da dispositivo a dispositivo.

Le MM_HIENGLISHmodalità , MM_LOENGLISHMM_HIMETRIC, MM_LOMETRIC, e MM_TWIPS sono utili per le applicazioni che devono disegnare in unità fisicamente significative (ad esempio pollici o millimetri). La MM_ISOTROPIC modalità garantisce una proporzione di 1:1, utile quando è importante mantenere la forma esatta di un'immagine. La MM_ANISOTROPIC modalità consente di regolare in modo indipendente le coordinate x e y.

Nota

Se si chiama SetLayout per modificare il controller di dominio (contesto di dispositivo) in layout da destra a sinistra, SetLayout la modalità di mapping viene automaticamente modificata in MM_ISOTROPIC.

Esempio

Vedere l'esempio per CView::OnPrepareDC.

CDC::SetMapperFlags

Modifica il metodo utilizzato dal mapper del tipo di carattere quando converte un tipo di carattere logico in un tipo di carattere fisico.

DWORD SetMapperFlags(DWORD dwFlag);

Parametri

dwFlag
Specifica se il mapper del tipo di carattere tenta di associare l'altezza e la larghezza dell'aspetto di un tipo di carattere al dispositivo. Quando questo valore è ASPECT_FILTERING, il mapper seleziona solo i tipi di carattere il cui aspetto x e l'aspetto y corrispondono esattamente a quelli del dispositivo specificato.

Valore restituito

Valore precedente del flag font-mapper.

Osservazioni:

Un'applicazione può usare SetMapperFlags per fare in modo che il mapper del carattere tenti di scegliere solo un tipo di carattere fisico che corrisponda esattamente alle proporzioni del dispositivo specificato.

Un'applicazione che usa solo tipi di carattere raster può usare la SetMapperFlags funzione per garantire che il tipo di carattere selezionato dal mapper del carattere sia attraente e leggibile nel dispositivo specificato. Le applicazioni che usano tipi di carattere scalabili (TrueType) in genere non usano SetMapperFlags.

Se nessun tipo di carattere fisico ha proporzioni corrispondenti alla specifica nel tipo di carattere logico, GDI sceglie una nuova proporzioni e seleziona un tipo di carattere corrispondente a questa nuova proporzioni.

CDC::SetMiterLimit

Imposta il limite per la lunghezza dei join di miter per il contesto di dispositivo.

BOOL SetMiterLimit(float fMiterLimit);

Parametri

fMiterLimit
Specifica il nuovo limite di miter per il contesto di dispositivo.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

La lunghezza del miter è definita come la distanza dall'intersezione delle pareti di linea all'interno del join all'intersezione delle pareti di linea all'esterno del join. Il limite di miter è il rapporto massimo consentito tra la lunghezza del miter e la larghezza della linea. Il limite di miter predefinito è 10,0.

CDC::SetOutputDC

Chiamare questa funzione membro per impostare il contesto del dispositivo di output, m_hDC.

virtual void SetOutputDC(HDC hDC);

Parametri

hDC
Contesto di dispositivo Windows.

Osservazioni:

Questa funzione membro può essere chiamata solo quando un contesto di dispositivo non è stato collegato all'oggetto CDC . Questa funzione membro imposta m_hDC ma non collega il contesto di dispositivo all'oggetto CDC .

CDC::SetPixel

Imposta il pixel nel punto specificato sull'approssimazione più vicina del colore specificato da crColor.

COLORREF SetPixel(
    int x,
    int y,
    COLORREF crColor);

COLORREF SetPixel(
    POINT point,
    COLORREF crColor);

Parametri

x
Specifica la coordinata x logica del punto da impostare.

y
Specifica la coordinata y logica del punto da impostare.

crColor
Valore COLORREF RGB che specifica il colore utilizzato per disegnare il punto. Per una descrizione di questo valore, vedere COLORREF in Windows SDK.

point
Specifica le coordinate x e y logiche del punto da impostare. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Valore RGB per il colore disegnato dal punto. Questo valore può essere diverso da quello specificato da crColor se viene utilizzata un'approssimazione di tale colore. Se la funzione ha esito negativo (se il punto si trova all'esterno dell'area di ritaglio), il valore restituito è -1.

Osservazioni:

Il punto deve trovarsi nell'area di ritaglio. Se il punto non si trova nell'area di ritaglio, la funzione non esegue alcuna operazione.

Non tutti i dispositivi supportano la funzione SetPixel. Per determinare se un dispositivo supporta SetPixel, chiamare la GetDeviceCaps funzione membro con l'indice RASTERCAPS e controllare il valore restituito per il RC_BITBLT flag.

CDC::SetPixelV

Imposta il pixel in corrispondenza delle coordinate specificate sull'approssimazione più vicina del colore specificato.

BOOL SetPixelV(
    int x,
    int y,
    COLORREF crColor);

BOOL SetPixelV(
    POINT point,
    COLORREF crColor);

Parametri

x
Specifica la coordinata x, in unità logiche, del punto da impostare.

y
Specifica la coordinata y, in unità logiche, del punto da impostare.

crColor
Specifica il colore da utilizzare per disegnare il punto.

point
Specifica le coordinate x e y logiche del punto da impostare. È possibile passare una POINT struttura di dati o un CPoint oggetto per questo parametro.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il punto deve trovarsi sia nell'area di ritaglio che nella parte visibile della superficie del dispositivo. Non tutti i dispositivi supportano la funzione membro. Per altre informazioni, vedere la RC_BITBLT funzionalità nella CDC::GetDeviceCaps funzione membro. SetPixelV è più veloce rispetto SetPixel al fatto che non è necessario restituire il valore di colore del punto disegnato.

CDC::SetPolyFillMode

Imposta la modalità di riempimento poligono.

int SetPolyFillMode(int nPolyFillMode);

Parametri

nPolyFillMode
Specifica la nuova modalità di riempimento. Questo valore può essere ALTERNATE o WINDING. La modalità predefinita impostata in Windows è ALTERNATE.

Valore restituito

La modalità di riempimento precedente, se ha esito positivo; in caso contrario, 0.

Osservazioni:

Quando la modalità di riempimento poligono è ALTERNATE, il sistema riempie l'area tra lati poligoni numerati e pari su ogni linea di scansione. Ovvero, il sistema riempie l'area tra il primo e il secondo lato, tra il terzo e il quarto lato e così via. Questa modalità è quella predefinita.

Quando la modalità di riempimento poligono è WINDING, il sistema usa la direzione in cui è stata disegnata una figura per determinare se riempire un'area. Ogni segmento di linea in un poligono viene disegnato in senso orario o in senso antiorario. Ogni volta che una linea immaginaria disegnata da un'area racchiusa all'esterno di una figura passa attraverso un segmento di linea in senso orario, viene incrementato un conteggio. Quando la linea passa attraverso un segmento di linea antiorario, il conteggio viene decrementato. L'area viene riempita se il conteggio è diverso da zero quando la riga raggiunge l'esterno della figura.

CDC::SetROP2

Imposta la modalità di disegno corrente.

int SetROP2(int nDrawMode);

Parametri

nDrawMode
Specifica la nuova modalità di disegno. Può essere uno dei valori seguenti:

  • R2_BLACK Pixel è sempre nero.

  • R2_WHITE Il pixel è sempre bianco.

  • R2_NOP Il pixel rimane invariato.

  • R2_NOT Pixel è l'inverso del colore dello schermo.

  • R2_COPYPEN Pixel è il colore della penna.

  • R2_NOTCOPYPEN Pixel è l'inverso del colore della penna.

  • R2_MERGEPENNOT Pixel è una combinazione del colore della penna e dell'inversa del colore dello schermo (pixel finale = (~ pixel schermo) | penna).

  • R2_MASKPENNOTPixel è una combinazione dei colori comuni sia alla penna che all'inversa della penna (pixel finale = (~ pixel dello schermo). &

  • R2_MERGENOTPEN Pixel è una combinazione del colore dello schermo e dell'inverso del colore della penna (pixel finale = (~ penna) | del pixel dello schermo.

  • R2_MASKNOTPENPixel è una combinazione dei colori comuni sia allo schermo che all'inverso del pixel della penna (pixel finale = (~ penna). &

  • R2_MERGEPEN Pixel è una combinazione del colore della penna e del colore dello schermo (pixel finale = pixel dello schermo della penna | ).

  • R2_NOTMERGEPEN Pixel è l'inverso del R2_MERGEPEN colore (pixel finale = ~ (pixel dello schermo della penna | )).

  • R2_MASKPEN Pixel è una combinazione dei colori comuni sia alla penna che allo schermo (pixel finale = pixel dello schermo della penna & ).

  • R2_NOTMASKPEN Pixel è l'inverso del R2_MASKPEN colore (pixel finale = ~ (pixel dello schermo della penna & )).

  • R2_XORPEN Pixel è una combinazione dei colori presenti nella penna o nello schermo, ma non in entrambi (pixel finale = ^ pixel penna pixel).

  • R2_NOTXORPEN Pixel è l'inverso del R2_XORPEN colore (pixel finale = ~ (pixel dello schermo della penna ^ )).

Valore restituito

Modalità di disegno precedente.

Può essere uno dei valori specificati in Windows SDK.

Osservazioni:

La modalità di disegno specifica il modo in cui i colori della penna e l'interno degli oggetti riempiti vengono combinati con il colore già presente sulla superficie di visualizzazione.

La modalità di disegno è solo per i dispositivi raster; non si applica ai dispositivi vettoriali. Le modalità di disegno sono codici di operazioni raster binarie che rappresentano tutte le possibili combinazioni booleane di due variabili, usando gli operatori &binari , |e ^ (esclusivi |) e l'operazione ~unaria .

CDC::SetStretchBltMode

Imposta la modalità di estensione bitmap per la StretchBlt funzione membro.

int SetStretchBltMode(int nStretchMode);

Parametri

nStretchMode
Specifica la modalità di estensione. Può essere uno dei valori seguenti:

Valore Descrizione
BLACKONWHITE Esegue un'operazione booleana & utilizzando i valori di colore per i pixel eliminati ed esistenti. Se la bitmap è una bitmap monocromatica, questa modalità mantiene i pixel neri a scapito dei pixel bianchi.
COLORONCOLOR Elimina i pixel. Questa modalità elimina tutte le righe di pixel eliminate senza tentare di conservare le informazioni.
HALFTONE Mappe pixel dal rettangolo di origine in blocchi di pixel nel rettangolo di destinazione. Il colore medio del blocco di pixel di destinazione approssima il colore dei pixel di origine.
Dopo aver impostato la HALFTONE modalità di estensione, un'applicazione deve chiamare la funzione SetBrushOrgEx Win32 per impostare l'origine del pennello. In caso contrario, si verifica un errore di allineamento del pennello.
STRETCH_ANDSCANS Windows 95/98: uguale a BLACKONWHITE
STRETCH_DELETESCANS Windows 95/98: uguale a COLORONCOLOR
STRETCH_HALFTONE Windows 95/98: uguale a HALFTONE.
STRETCH_ORSCANS Windows 95/98: uguale a WHITEONBLACK
WHITEONBLACK Esegue un'operazione booleana | utilizzando i valori di colore per i pixel eliminati ed esistenti. Se la bitmap è una bitmap monocromatica, questa modalità mantiene i pixel bianchi a scapito dei pixel neri.

Valore restituito

Modalità di estensione precedente. Può essere STRETCH_ANDSCANS, STRETCH_DELETESCANS o STRETCH_ORSCANS.

Osservazioni:

La modalità di estensione bitmap definisce il modo in cui le informazioni vengono rimosse dalle bitmap compresse tramite la funzione .

Le BLACKONWHITEmodalità (STRETCH_ANDSCANS) e WHITEONBLACK(STRETCH_ORSCANS) vengono in genere usate per mantenere i pixel di primo piano nelle bitmap monocromatiche. La COLORONCOLORmodalità (STRETCH_DELETESCANS) viene in genere usata per mantenere il colore nelle bitmap a colori.

La HALFTONE modalità richiede più elaborazione dell'immagine di origine rispetto alle altre tre modalità, ma è più lenta rispetto alle altre, ma produce immagini di qualità superiore. Inoltre, SetBrushOrgEx deve essere chiamato dopo aver impostato la HALFTONE modalità per evitare il disallineamento del pennello.

Altre modalità di estensione potrebbero anche essere disponibili a seconda delle funzionalità del driver di dispositivo.

CDC::SetTextAlign

Imposta i flag di allineamento del testo.

UINT SetTextAlign(UINT nFlags);

Parametri

nFlags
Specifica i flag di allineamento del testo. I flag specificano la relazione tra un punto e un rettangolo che delimita il testo. Il punto può essere la posizione corrente o le coordinate specificate da una funzione di output di testo. Il rettangolo che delimita il testo è definito dalle celle di caratteri adiacenti nella stringa di testo. Il nFlags parametro può essere uno o più flag delle tre categorie seguenti. Scegliere un solo flag da ogni categoria. La prima categoria influisce sull'allineamento del testo nella direzione x:

  • TA_CENTER Allinea il punto al centro orizzontale del rettangolo di delimitazione.

  • TA_LEFT Allinea il punto al lato sinistro del rettangolo di delimitazione. Si tratta dell'impostazione predefinita.

  • TA_RIGHT Allinea il punto al lato destro del rettangolo di delimitazione.

La seconda categoria influisce sull'allineamento del testo nella direzione y:

  • TA_BASELINE Allinea il punto alla linea di base del tipo di carattere scelto.

  • TA_BOTTOM Allinea il punto alla parte inferiore del rettangolo di delimitazione.

  • TA_TOP Allinea il punto alla parte superiore del rettangolo di delimitazione. Si tratta dell'impostazione predefinita.

La terza categoria determina se la posizione corrente viene aggiornata quando viene scritto il testo:

  • TA_NOUPDATECP Non aggiorna la posizione corrente dopo ogni chiamata a una funzione di output di testo. Si tratta dell'impostazione predefinita.

  • TA_UPDATECPAggiornamenti la posizione x corrente dopo ogni chiamata a una funzione di output di testo. La nuova posizione si trova sul lato destro del rettangolo di delimitazione per il testo. Quando questo flag è impostato, le coordinate specificate nelle chiamate alla TextOut funzione membro vengono ignorate.

Valore restituito

L'impostazione di allineamento del testo precedente, se ha esito positivo. Il byte di ordine basso contiene l'impostazione orizzontale e il byte di ordine elevato contiene l'impostazione verticale; in caso contrario, 0.

Osservazioni:

Le TextOut funzioni membro e ExtTextOut usano questi flag quando si posiziona una stringa di testo in uno schermo o in un dispositivo. I flag specificano la relazione tra un punto specifico e un rettangolo che delimita il testo. Le coordinate di questo punto vengono passate come parametri alla TextOut funzione membro. Il rettangolo che delimita il testo è formato dalle celle di caratteri adiacenti nella stringa di testo.

CDC::SetTextCharacterExtra

Imposta la quantità di spaziatura intercharacter.

int SetTextCharacterExtra(int nCharExtra);

Parametri

nCharExtra
Specifica la quantità di spazio aggiuntivo (in unità logiche) da aggiungere a ogni carattere. Se la modalità di mapping corrente non MM_TEXTè , nCharExtra viene trasformata e arrotondata al pixel più vicino.

Valore restituito

Quantità della spaziatura intercaracter precedente.

Osservazioni:

GDI aggiunge questa spaziatura a ogni carattere, inclusi i caratteri di interruzione, quando scrive una riga di testo nel contesto del dispositivo. Il valore predefinito per la quantità di spaziatura intercaracter è 0.

CDC::SetTextColor

Imposta il colore del testo sul colore specificato.

virtual COLORREF SetTextColor(COLORREF crColor);

Parametri

crColor
Specifica il colore del testo come valore di colore RGB.

Valore restituito

Valore RGB per il colore del testo precedente.

Osservazioni:

Il sistema usa questo colore del testo durante la scrittura di testo in questo contesto di dispositivo e anche durante la conversione di bitmap tra contesti di dispositivo a colori e monocromatici.

Se il dispositivo non può rappresentare il colore specificato, il sistema imposta il colore del testo sul colore fisico più vicino. Il colore di sfondo per un carattere viene specificato dalle SetBkColor funzioni membro e SetBkMode .

Esempio

Vedere l'esempio per CWnd::OnCtlColor.

CDC::SetTextJustification

Aggiunge spazio ai caratteri di interruzione in una stringa.

int SetTextJustification(
    int nBreakExtra,
    int nBreakCount);

Parametri

nBreakExtra
Specifica lo spazio aggiuntivo totale da aggiungere alla riga di testo (in unità logiche). Se la modalità di mapping corrente non MM_TEXTè , il valore specificato da questo parametro viene convertito nella modalità di mapping corrente e arrotondato all'unità dispositivo più vicina.

nBreakCount
Specifica il numero di caratteri di interruzione nella riga.

Valore restituito

Uno se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Un'applicazione può utilizzare le GetTextMetrics funzioni membro per recuperare il carattere di interruzione di un tipo di carattere.

Dopo la chiamata alla SetTextJustification funzione membro, una chiamata a una funzione di output di testo (ad esempio TextOut) distribuisce lo spazio aggiuntivo specificato in modo uniforme tra il numero specificato di caratteri di interruzione. Il carattere di interruzione è in genere lo spazio (ASCII 32), ma può essere definito da un tipo di carattere come un altro carattere.

La funzione GetTextExtent membro viene in genere usata con SetTextJustification. GetTextExtent calcola la larghezza di una determinata linea prima dell'allineamento. Un'applicazione può determinare la quantità di spazio da specificare nel nBreakExtra parametro sottraendo il valore restituito dalla GetTextExtent larghezza della stringa dopo l'allineamento.

La SetTextJustification funzione può essere usata per allineare una linea che contiene più esecuzioni in tipi di carattere diversi. In questo caso, la riga deve essere creata a fasi allineando e scrivendo ogni esecuzione separatamente.

Poiché gli errori di arrotondamento possono verificarsi durante l'allineamento, il sistema mantiene un termine di errore in esecuzione che definisce l'errore corrente. Quando si allinea una riga che contiene più esecuzioni, GetTextExtent usa automaticamente questo termine di errore quando calcola l'extent dell'esecuzione successiva. Ciò consente alla funzione di output di testo di combinare l'errore nella nuova esecuzione.

Dopo l'allineamento di ogni riga, questo termine di errore deve essere cancellato per evitare che venga incorporato nella riga successiva. Il termine può essere cancellato chiamando SetTextJustification con nBreakExtra impostato su 0.

CDC::SetViewportExt

Imposta gli extent x e y del riquadro di visualizzazione del contesto di dispositivo.

virtual CSize SetViewportExt(
    int cx,
    int cy);

CSize SetViewportExt(SIZE size);

Parametri

cx
Specifica l'extent x del viewport (in unità dispositivo).

cy
Specifica l'extent y del viewport (in unità dispositivo).

size
Specifica gli extent x e y del viewport (in unità dispositivo).

Valore restituito

Extent precedenti del riquadro di visualizzazione come CSize oggetto . Quando si verifica un errore, le coordinate x e y dell'oggetto restituito CSize sono entrambe impostate su 0.

Osservazioni:

Il riquadro di visualizzazione, insieme alla finestra del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo effettivo. In altre parole, definiscono il modo in cui GDI converte le coordinate logiche in coordinate del dispositivo.

Quando vengono impostate le modalità di mapping seguenti, le chiamate a SetWindowExt e SetViewportExt vengono ignorate:

MM_HIENGLISH MM_LOMETRIC
MM_HIMETRIC MM_TEXT
MM_LOENGLISH MM_TWIPS

Quando MM_ISOTROPIC la modalità è impostata, un'applicazione deve chiamare la SetWindowExt funzione membro prima di chiamare SetViewportExt.

Esempio

Vedere l'esempio per CView::OnPrepareDC.

CDC::SetViewportOrg

Imposta l'origine del riquadro di visualizzazione del contesto di dispositivo.

virtual CPoint SetViewportOrg(
    int x,
    int y);

CPoint SetViewportOrg(POINT point);

Parametri

x
Specifica la coordinata x (in unità dispositivo) dell'origine del riquadro di visualizzazione. Il valore deve essere compreso nell'intervallo del sistema di coordinate del dispositivo.

y
Specifica la coordinata y (in unità dispositivo) dell'origine del riquadro di visualizzazione. Il valore deve essere compreso nell'intervallo del sistema di coordinate del dispositivo.

point
Specifica l'origine del riquadro di visualizzazione. I valori devono essere compresi nell'intervallo del sistema di coordinate del dispositivo. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Origine precedente del riquadro di visualizzazione (nelle coordinate del dispositivo) come CPoint oggetto .

Osservazioni:

Il riquadro di visualizzazione, insieme alla finestra del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo effettivo. In altre parole, definiscono il modo in cui GDI converte le coordinate logiche in coordinate del dispositivo.

L'origine del riquadro di visualizzazione contrassegna il punto nel sistema di coordinate del dispositivo a cui GDI esegue il mapping dell'origine della finestra, un punto nel sistema di coordinate logico specificato dalla SetWindowOrg funzione membro. GDI esegue il mapping di tutti gli altri punti seguendo lo stesso processo necessario per eseguire il mapping dell'origine della finestra all'origine del riquadro di visualizzazione. Ad esempio, tutti i punti in un cerchio intorno al punto in corrispondenza dell'origine della finestra saranno in un cerchio intorno al punto all'origine del riquadro di visualizzazione. Analogamente, tutti i punti di una riga che passano attraverso l'origine della finestra si trovano in una riga che passa attraverso l'origine del riquadro di visualizzazione.

Esempio

Vedere l'esempio per CView::OnPrepareDC.

CDC::SetWindowExt

Imposta gli extent x e y della finestra associata al contesto di dispositivo.

virtual CSize SetWindowExt(
    int cx,
    int cy);

CSize SetWindowExt(SIZE size);

Parametri

cx
Specifica l'extent x (in unità logiche) della finestra.

cy
Specifica l'extent y (in unità logiche) della finestra.

size
Specifica gli extent x e y (in unità logiche) della finestra.

Valore restituito

Gli extent precedenti della finestra (in unità logiche) come CSize oggetto . Se si verifica un errore, le coordinate x e y dell'oggetto restituito CSize sono entrambe impostate su 0.

Osservazioni:

La finestra, insieme al viewport del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo.

Quando vengono impostate le modalità di mapping seguenti, le chiamate a SetWindowExt e SetViewportExt le funzioni vengono ignorate:

  • MM_HIENGLISH

  • MM_HIMETRIC

  • MM_LOENGLISH

  • MM_LOMETRIC

  • MM_TEXT

  • MM_TWIPS

Quando MM_ISOTROPIC la modalità è impostata, un'applicazione deve chiamare la SetWindowExt funzione membro prima di chiamare SetViewportExt.

Esempio

Vedere l'esempio per CView::OnPrepareDC.

CDC::SetWindowOrg

Imposta l'origine della finestra del contesto di dispositivo.

CPoint SetWindowOrg(
    int x,
    int y);

CPoint SetWindowOrg(POINT point);

Parametri

x
Specifica la coordinata x logica della nuova origine della finestra.

y
Specifica la coordinata y logica della nuova origine della finestra.

point
Specifica le coordinate logiche della nuova origine della finestra. È possibile passare una POINT struttura o un CPoint oggetto per questo parametro.

Valore restituito

Origine precedente della finestra come CPoint oggetto .

Osservazioni:

La finestra, insieme al viewport del contesto di dispositivo, definisce il modo in cui GDI esegue il mapping dei punti nel sistema di coordinate logico ai punti nel sistema di coordinate del dispositivo.

L'origine della finestra contrassegna il punto nel sistema di coordinate logico da cui GDI esegue il mapping dell'origine del viewport, un punto nel sistema di coordinate del SetWindowOrg dispositivo specificato dalla funzione. GDI esegue il mapping di tutti gli altri punti seguendo lo stesso processo necessario per eseguire il mapping dell'origine della finestra all'origine del riquadro di visualizzazione. Ad esempio, tutti i punti in un cerchio intorno al punto in corrispondenza dell'origine della finestra saranno in un cerchio intorno al punto all'origine del riquadro di visualizzazione. Analogamente, tutti i punti di una riga che passano attraverso l'origine della finestra si trovano in una riga che passa attraverso l'origine del riquadro di visualizzazione.

CDC::SetWorldTransform

Imposta una trasformazione lineare bidimensionale tra lo spazio globale e lo spazio di pagina per il contesto di dispositivo specificato. Questa trasformazione può essere usata per ridimensionare, ruotare, taglio o tradurre l'output grafico.

BOOL SetWorldTransform(const XFORM& rXform);

Parametri

rXform
Riferimento a una XFORM struttura che contiene i dati di trasformazione.

Valore restituito

Restituisce un valore diverso da zero in caso di esito positivo.

Restituisce 0 in caso di errore.

Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Osservazioni:

Questo metodo esegue il wrapping della funzione SetWorldTransformGDI di Windows.

CDC::StartDoc

Informa il driver di dispositivo che viene avviato un nuovo processo di stampa e che tutte le chiamate successive StartPage e EndPage devono essere sottoposte a spooling nello stesso processo fino a quando non si verifica una EndDoc chiamata.

int StartDoc(LPDOCINFO lpDocInfo);
int StartDoc(LPCTSTR lpszDocName);

Parametri

lpDocInfo
Punta a una DOCINFO struttura contenente il nome del file di documento e il nome del file di output.

lpszDocName
Puntatore a una stringa contenente il nome del file di documento.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è maggiore di zero. Questo valore è l'identificatore del processo di stampa per il documento.

Se la funzione ha esito negativo, il valore restituito è minore o uguale a zero.

Osservazioni:

In questo modo, i documenti più lunghi di una pagina non verranno interspersi con altri processi.

Per Windows versioni 3.1 e successive, questa funzione sostituisce l'escape della STARTDOC stampante. L'uso di questa funzione garantisce che i documenti contenenti più pagine non vengano interpersi con altri processi di stampa.

StartDoc non deve essere usato all'interno di metafile.

Esempio

Questo frammento di codice ottiene la stampante predefinita, apre un processo di stampa e esegue lo spooling di una pagina con "Hello, World!" su di esso. Poiché il testo stampato da questo codice non viene ridimensionato alle unità logiche della stampante, il testo di output può essere in lettere così piccole che il risultato è illeggibile. Le funzioni di ridimensionamento CDC, ad esempio SetMapMode, SetViewportOrge SetWindowExt, possono essere usate per correggere il ridimensionamento.

void CDCView::DoStartDoc()
{
   // get the default printer
   CPrintDialog dlg(FALSE);
   dlg.GetDefaults();

   // is a default printer set up?
   HDC hdcPrinter = dlg.GetPrinterDC();
   if (hdcPrinter == NULL)
   {
      MessageBox(_T("Buy a printer!"));
   }
   else
   {
      // create a CDC and attach it to the default printer
      CDC dcPrinter;
      dcPrinter.Attach(hdcPrinter);

      // call StartDoc() to begin printing
      DOCINFO docinfo;
      memset(&docinfo, 0, sizeof(docinfo));
      docinfo.cbSize = sizeof(docinfo);
      docinfo.lpszDocName = _T("CDC::StartDoc() Code Fragment");

      // if it fails, complain and exit gracefully
      if (dcPrinter.StartDoc(&docinfo) < 0)
      {
         MessageBox(_T("Printer wouldn't initialize"));
      }
      else
      {
         // start a page
         if (dcPrinter.StartPage() < 0)
         {
            MessageBox(_T("Could not start page"));
            dcPrinter.AbortDoc();
         }
         else
         {
            // actually do some printing
            CGdiObject *pOldFont = dcPrinter.SelectStockObject(SYSTEM_FONT);

            dcPrinter.TextOut(50, 50, _T("Hello World!"), 12);

            dcPrinter.EndPage();
            dcPrinter.EndDoc();
            dcPrinter.SelectObject(pOldFont);
         }
      }
   }
}

CDC::StartPage

Chiamare questa funzione membro per preparare il driver della stampante per ricevere i dati.

int StartPage();

Valore restituito

Maggiore o uguale a 0 se la funzione ha esito positivo o negativo se si è verificato un errore.

Osservazioni:

StartPage sostituisce le NEWFRAMEBANDINFO e le escape.

Per una panoramica della sequenza di chiamate di stampa, vedere la StartDoc funzione membro.

Il sistema disabilita la ResetDC funzione membro tra le chiamate a StartPage e EndPage.

Esempio

Vedere l'esempio per CDC::StartDoc.

CDC::StretchBlt

Copia una bitmap da un rettangolo di origine in un rettangolo di destinazione, allungando o comprimendo la bitmap se necessario per adattarla alle dimensioni del rettangolo di destinazione.

BOOL StretchBlt(
    int x,
    int y,
    int nWidth,
    int nHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    DWORD dwRop);

Parametri

x
Specifica la coordinata x (in unità logiche) dell'angolo superiore sinistro del rettangolo di destinazione.

y
Specifica la coordinata y (in unità logiche) dell'angolo superiore sinistro del rettangolo di destinazione.

nWidth
Specifica la larghezza (in unità logiche) del rettangolo di destinazione.

nHeight
Specifica l'altezza (in unità logiche) del rettangolo di destinazione.

pSrcDC
Specifica il contesto del dispositivo di origine.

xSrc
Specifica la coordinata x (in unità logiche) dell'angolo superiore sinistro del rettangolo di origine.

ySrc
Specifica la coordinata y (in unità logiche) dell'angolo superiore sinistro del rettangolo di origine.

nSrcWidth
Specifica la larghezza (in unità logiche) del rettangolo di origine.

nSrcHeight
Specifica l'altezza (in unità logiche) del rettangolo di origine.

dwRop
Specifica l'operazione raster da eseguire. I codici dell'operazione raster definiscono in che modo GDI combina i colori nelle operazioni di output che includono un pennello corrente, una possibile bitmap di origine e una bitmap di destinazione. Il parametro può avere uno dei valori seguenti:

  • BLACKNESS Trasforma tutto l'output nero.

  • DSTINVERT Inverte la bitmap di destinazione.

  • MERGECOPYCombina il modello e la bitmap di origine usando l'operatore AND booleano.

  • MERGEPAINTCombina la bitmap di origine invertita con la bitmap di destinazione usando l'operatore OR booleano.

  • NOTSRCCOPY Copia la bitmap di origine invertita nella destinazione.

  • NOTSRCERASEInverte il risultato della combinazione delle bitmap di destinazione e di origine usando l'operatore OR booleano.

  • PATCOPY Copia il modello nella bitmap di destinazione.

  • PATINVERTCombina la bitmap di destinazione con il modello usando l'operatore XOR booleano.

  • PATPAINTCombina la bitmap di origine invertita con il modello usando l'operatore OR booleano. Combina il risultato di questa operazione con la bitmap di destinazione usando l'operatore OR booleano.

  • SRCANDCombina i pixel delle bitmap di destinazione e di origine usando l'operatore AND booleano.

  • SRCCOPY Copia la bitmap di origine nella bitmap di destinazione.

  • SRCERASEInverte la bitmap di destinazione e combina il risultato con la bitmap di origine usando l'operatore AND booleano.

  • SRCINVERTCombina i pixel delle bitmap di destinazione e di origine usando l'operatore XOR booleano.

  • SRCPAINTCombina i pixel delle bitmap di destinazione e di origine usando l'operatore OR booleano.

  • WHITENESS Attiva tutto il bianco di output.

Valore restituito

Se la bitmap viene tracciata è diverso da zero; in caso contrario, 0.

Osservazioni:

La funzione utilizza la modalità di adattamento del contesto del dispositivo di destinazione (impostata da SetStretchBltMode) per determinare come allungare o comprimere la bitmap.

La StretchBlt funzione sposta la bitmap dal dispositivo di origine specificato dal pSrcDC dispositivo di destinazione rappresentato dall'oggetto contesto dispositivo la cui funzione membro viene chiamata. I xSrcparametri , nSrcWidthySrc, e nSrcHeight definiscono l'angolo superiore sinistro e le dimensioni del rettangolo di origine. I xparametri , nWidthy, e nHeight forniscono l'angolo superiore sinistro e le dimensioni del rettangolo di destinazione. L'operazione raster specificata da dwRop definisce la modalità di combinazione della bitmap di origine e dei bit già presenti nel dispositivo di destinazione.

La StretchBlt funzione crea un'immagine mirror di una bitmap se i segni dei nSrcWidth parametri e e e nWidthnSrcHeightnHeight sono diversi. Se nSrcWidth e nWidth hanno segni diversi, la funzione crea un'immagine speculare della bitmap lungo l'asse x. Se nSrcHeight e nHeight hanno segni diversi, la funzione crea un'immagine speculare della bitmap lungo l'asse y.

La funzione StretchBlt allunga o comprime la bitmap di origine in memoria, quindi copia il risultato nella destinazione. Se un criterio deve essere unito al risultato, non viene unito finché la bitmap di origine estesa non viene copiata nella destinazione. Se viene usato un pennello, è il pennello selezionato nel contesto del dispositivo di destinazione. Le coordinate di destinazione vengono trasformate in base al contesto del dispositivo di destinazione; le coordinate di origine vengono trasformate in base al contesto del dispositivo di origine.

Se le bitmap di destinazione, origine e motivo non hanno lo stesso formato di colore, StretchBlt converte le bitmap di origine e pattern in modo che corrispondano alle bitmap di destinazione. Nella conversione vengono utilizzati i colori di primo piano e di sfondo del contesto del dispositivo di destinazione.

Se StretchBlt deve convertire a colori una bitmap monocromatica, imposta i bit bianchi (1) sui bit del colore di sfondo e i bit neri (0) sul colore di primo piano. Per la conversione da colore a monocromatico, imposta i pixel corrispondenti al colore di sfondo sul bianco (1) e tutti gli altri pixel sul nero (0). Vengono utilizzati i colori di primo piano e di sfondo del contesto del dispositivo a colori.

Non tutti i dispositivi supportano la funzione StretchBlt. Per determinare se un dispositivo supporta StretchBlt, chiamare la GetDeviceCaps funzione membro con l'indice RASTERCAPS e controllare il valore restituito per il RC_STRETCHBLT flag.

CDC::StrokeAndFillPath

Chiude tutte le figure aperte in un tracciato, traccia il contorno del percorso utilizzando la penna corrente e riempie l'interno utilizzando il pennello corrente.

BOOL StrokeAndFillPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il contesto del dispositivo deve contenere un percorso chiuso. La StrokeAndFillPath funzione membro ha lo stesso effetto di chiudere tutte le figure aperte nel percorso e di riempire il percorso separatamente, ad eccezione del fatto che l'area riempita non sovrapporrà l'area tracciata anche se la penna è larga.

CDC::StrokePath

Esegue il rendering del percorso specificato utilizzando la penna corrente.

BOOL StrokePath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Il contesto del dispositivo deve contenere un percorso chiuso.

CDC::TabbedTextOut

Chiamare questa funzione membro per scrivere una stringa di caratteri nella posizione specificata, espandendo le schede ai valori specificati nella matrice di posizioni tabulazioni.

virtual CSize TabbedTextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount,
    int nTabPositions,
    LPINT lpnTabStopPositions,
    int nTabOrigin);

CSize TabbedTextOut(
    int x,
    int y,
    const CString& str,
    int nTabPositions,
    LPINT lpnTabStopPositions,
    int nTabOrigin);

Parametri

x
Specifica la coordinata x logica del punto iniziale della stringa.

y
Specifica la coordinata y logica del punto iniziale della stringa.

lpszString
Punta alla stringa di caratteri da disegnare. È possibile passare un puntatore a una matrice di caratteri o a un CString oggetto per questo parametro.

nCount
Specifica la lunghezza della stringa a lpszStringcui punta .

nTabPositions
Specifica il numero di valori nella matrice di posizioni tabulazioni.

lpnTabStopPositions
Punta a una matrice contenente le posizioni tabulazioni (in unità logiche). Le tabulazioni devono essere ordinate in ordine crescente; il valore x più piccolo deve essere il primo elemento della matrice.

nTabOrigin
Specifica la coordinata x della posizione iniziale da cui vengono espanse le schede (in unità logiche).

str
Oggetto CString contenente i caratteri specificati.

Valore restituito

Dimensioni della stringa (in unità logiche) come CSize oggetto .

Osservazioni:

Il testo viene scritto nel tipo di carattere attualmente selezionato. Se nTabPositions è 0 e lpnTabStopPositions è NULL, le schede vengono espanse fino a otto volte la larghezza media dei caratteri.

Se nTabPositions è 1, le tabulazioni sono separate dalla distanza specificata dal primo valore della lpnTabStopPositions matrice. Se la lpnTabStopPositions matrice contiene più di un valore, viene impostata una tabulazione per ogni valore nella matrice, fino al numero specificato da nTabPositions. Il nTabOrigin parametro consente a un'applicazione di chiamare la TabbedTextOut funzione più volte per una singola riga. Se l'applicazione chiama la funzione più di una volta con l'oggetto nTabOrigin impostato sullo stesso valore ogni volta, la funzione espande tutte le schede rispetto alla posizione specificata da nTabOrigin.

Per impostazione predefinita, la posizione corrente non viene usata o aggiornata dalla funzione. Se un'applicazione deve aggiornare la posizione corrente quando chiama la funzione, l'applicazione può chiamare la SetTextAlign funzione membro con nFlags impostato su TA_UPDATECP. Quando questo flag è impostato, Windows ignora i x parametri e y nelle chiamate successive a TabbedTextOut, usando invece la posizione corrente.

CDC::TextOut

Scrive una stringa di caratteri nella posizione specificata utilizzando il tipo di carattere attualmente selezionato.

virtual BOOL TextOut(
    int x,
    int y,
    LPCTSTR lpszString,
    int nCount);

BOOL TextOut(
    int x,
    int y,
    const CString& str);

Parametri

x
Specifica la coordinata x logica del punto iniziale del testo.

y
Specifica la coordinata y logica del punto iniziale del testo.

lpszString
Punta alla stringa di caratteri da tracciare.

nCount
Specifica il numero di caratteri nella stringa.

str
Oggetto CString che contiene i caratteri da tracciare.

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Le origini del carattere si trovano nell'angolo superiore sinistro della cella del carattere. Per impostazione predefinita, la posizione corrente non viene usata o aggiornata dalla funzione.

Se un'applicazione deve aggiornare la posizione corrente quando chiama TextOut, l'applicazione può chiamare la SetTextAlign funzione membro con nFlags impostato su TA_UPDATECP. Quando questo flag è impostato, Windows ignora i x parametri e y nelle chiamate successive a TextOut, usando invece la posizione corrente.

Esempio

Vedere l'esempio per CDC::BeginPath.

CDC::TransparentBlt

Chiamare questa funzione membro per trasferire un blocco di bit dei dati di colore, che corrisponde a un rettangolo di pixel dal contesto di dispositivo di origine specificato, in un contesto di dispositivo di destinazione.

BOOL TransparentBlt(
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    CDC* pSrcDC,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT clrTransparent);

Parametri

xDest
Specifica la coordinata x, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.

yDest
Specifica la coordinata y, in unità logiche, dell'angolo superiore sinistro del rettangolo di destinazione.

nDestWidth
Specifica la larghezza, in unità logiche, del rettangolo di destinazione.

nDestHeight
Specifica l'altezza, in unità logiche, del rettangolo di destinazione.

pSrcDC
Puntatore al contesto del dispositivo di origine.

xSrc
Specifica la coordinata x, in unità logiche, del rettangolo di origine.

ySrc
Specifica la coordinata y, in unità logiche, del rettangolo di origine.

nSrcWidth
Specifica la larghezza, in unità logiche, del rettangolo di origine.

nSrcHeight
Specifica l'altezza, in unità logiche, del rettangolo di origine.

clrTransparent
Colore RGB nella bitmap di origine da considerare trasparente.

Valore restituito

TRUE se l'esito è positivo; in caso contrario, FALSE.

Osservazioni:

TransparentBlt consente la trasparenza; ovvero, il colore RGB indicato da clrTransparent viene reso trasparente per il trasferimento.

Per altre informazioni, vedere TransparentBlt in Windows SDK.

CDC::UpdateColors

Aggiornamenti l'area client del contesto di dispositivo associando i colori correnti nell'area client alla tavolozza del sistema in base a pixel per pixel.

void UpdateColors();

Osservazioni:

Una finestra inattiva con una tavolozza logica realizzata può chiamare UpdateColors come alternativa per ridisegnare l'area client quando cambia la tavolozza del sistema.

Per altre informazioni sull'uso delle tavolozze dei colori, vedere UpdateColors in Windows SDK.

La UpdateColors funzione membro aggiorna in genere un'area client più veloce rispetto alla ridisegnazione dell'area. Tuttavia, poiché la funzione esegue la conversione dei colori in base al colore di ogni pixel prima della modifica della tavolozza di sistema, ogni chiamata a questa funzione comporta la perdita di un'accuratezza del colore.

CDC::WidenPath

Ridefinisce il percorso corrente come area che verrebbe disegnata se il percorso fosse tracciato utilizzando la penna attualmente selezionata nel contesto del dispositivo.

BOOL WidenPath();

Valore restituito

Diverso da zero se la funzione ha esito positivo; in caso contrario, 0.

Osservazioni:

Questa funzione ha esito positivo solo se la penna corrente è una penna geometrica creata dalla seconda versione della CreatePen funzione membro o se la penna viene creata con la prima versione di CreatePen e ha una larghezza, in unità dispositivo, maggiore di 1. Il contesto del dispositivo deve contenere un percorso chiuso. Qualsiasi curva di Bzier nel percorso viene convertita in sequenze di linee rette che approssimano le curve ampliate. Di conseguenza, nessuna curva di Bzier rimane nel percorso dopo WidenPath la chiamata.

Vedi anche

CObject Classe
Grafico della gerarchia
CPaintDC Classe
CWindowDC Classe
CClientDC Classe
CMetaFileDC Classe