Newsgroup: it.comp.lang.c++
Titolo: HELP: WindowExt, ViewportExt, WindowOrg, ViewportOrg

Sto studiando la programmazione Windows 95, ma non riesco a capire bene le
origini e le estensioni.
Spero che ci sia qualcuno su questo newsgroup che riesca a spiegare come
funzionano facilmente.
Piu' che altro non capisco che differenza faccia ad utilizzare
SetWindowOrgEx oppure SetWindowExtEx, visto che svolgono la stessa funzione.
Ciaooooooooo

	Piu' che altro non capisco che differenza faccia ad utilizzare
	SetWindowOrgEx oppure SetWindowExtEx, visto che svolgono la
stessa funzione.
Rileggi la documentazione con maggiore attenzione.
Le due funzioni non fanno affatto la stessa cosa. La Org =E8 la =
posizione
(l'origine della finestra, come la chiamano loro). La Ext =E8 =
l'estensione
(ovvero la dimensione della finestra). Due cose ben distinte.
---
     Andrea Ferro
SW.AN. Technologies s.a.s.
Merate (Lc)          Italy

(ovvero la dimensione della finestra). Due cose ben distinte.
E' vero hai ragione. Ho comunque formulato male la domanda :), la differenza
che non sono riuscito a capire bene, o il funzionamento, e' tra
SetWindowOrgEx e SetViewportOrgEx e tra SetWindowExtEx e SetViewportExtEx.
Vale a dire, non ho capito bene il rapporto tra windowExt e viewportExt...
cioe' la differenza tra viewport e window, l'unica cosa che ho capito e' che
viewport si riferisce al dispositivo e window alle coordinate logiche...
Insomma potrei dire che non ho capito niente, forse, o no? :-)
Ciao e grazie di nuovo.

simulando su di una finestra le dimensioni di una pagina di stampa.
Ho provato a rileggermi un po' il manuale, e grazie soprattutto ai vostri
aiuti, credo di essermi avvicinato sempre di piu' a capire il funzionamento,
scusate per l'ignoranza Api ma sono un po' nuovo in questo ambiente. : )
Quindi.....
se inserisco nella WindowExt il valore 10 e sulla ViewportExt il valore 1,
praticamente un pixel (viewport=1) equivale a 10 pixel(WindowExt=10).
Cioe' dispositivo=1 e in unita' logiche, quelle usate per le cordinate di
lineto per esempio, equivale a 10.
Pero' i valori sono sempre riferiti in pixel su viewport e window?
Per quanto riguarda invece WindowOrg e ViewportOrg, perche' impostare due
origini differenti? Cosa impostano esattamente questi due parametri?

origini differenti? Cosa impostano esattamente questi due parametri?
Ci sono due origini diverse perche' ci sono due sistemi di coordinate
da gestire. I due parametri si impostano, cosi' come i valori delle
...ext., in base alle esigenze. Cioe' se hai l'esigenza di rilocare
l'origine le usi altrimento no.
Ti riporto un piccolo esempio di utilizzo delle funzioni in questione:
pDC: Device context su una stampante
totalLog: Dimensioni della finestra
szi: Dimensioni della pagina sulla stampante
ptVpOrg: Distanza dal vertice in alto a sinistra sulla pagina di
stampa
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(totalLog);
pDC->SetViewportExt(szi);
pDC->SetViewportOrg(ptVpOrg);
le istruzioni precedenti ti permettono di disegnare sul DC con le
stesse coordinate che si usano per il disegno sulla finestra e quindi
di realizzare in modo molto semplice una specie di "hardcopy".
Attenzione: la SetViewportExt deve sempre essere posta DOPO la
SetWindowExt !! In NT non c'e' differenza, in win95 invece c'e' la
differenza tra il funzionare e il non funzionare !!
Gianpaolo Bottin
- Live Long and Prosper -

di realizzare in modo molto semplice una specie di "hardcopy".
Sei stato molto chiaro, credo di aver capito il funzionamento, gli esempi in
questo campo aiutano molto.
Sull'esempio che hai fatto, utilizzi la funzione SetViewportOrg, ma sarebbe
stato uguale utilizzare SetWindowExt, quindi come decidere se utilizzare una
o l'altra, ci sarebbe qualche caso dove andrebbero utilizzate entrambe le
funzioni?
ptVpOrg praticamente puo' essere utilizzato per specificare il margine
dell'area di stampa?
Un altra domanda forse banale... ma come dicevo solo all'inizio... per
creare un puntatore al DC si puo' fare cosi'? Ho sempre fatto uso del solo
hdc.
hdc=GetDC(hwnd);
pDC=&hdc;
Come sempre, grazie delle possibili risposte.
Emanuele - e...@WriteMe.com - 
e...@centroin.it

pDC=&hdc;
se la GetDC() e' quella di Win32 e non quella della classe CWnd ti
restituisce un HDC e non un CDC, cioe' un handle e non una classe.


restituisce un HDC e non un CDC, cioe' un handle e non una classe
hmmm.. mumble mumble.. allora ho fatto un po' di casino. :)

hmmm.. mumble mumble.. allora ho fatto un po' di casino. :)
si' :) ma non molto, CDC e' la classe che incapsula l'HDC, invece di
chiamare le funzioni passando come parametro l'hdc si chiamano le
stesse funzioni definite nella classe CDC. Queste ultime sono delle
semplici funzioni inline che chiamano le api win32 passando i
parametri opportuni.
