語法
BOOL SetWindowExtEx( __in HDC hdc, __in int nXExtent, __in int nYExtent, __out LPSIZE lpSize);
參數HDC
A到設備上下文句柄。
nXExtent
視窗的水平範圍的邏輯單位。
nYExtent
視窗的垂直程度的邏輯單位。
lpSize[輸出]
一個指向指針的尺寸在邏輯結構,接收單位的上一個視窗範圍。如果lpSize是NULL,這個參數是無法使用。
返回值
如果函式成功,返回值為非零。
如果函式失敗,返回值為零。
參考
如SetWindowExtEx(hDC,600,400,NULL); //設定視窗區域,邏輯坐標 把視窗大小設定為寬(X坐標方向)600 (Y坐標方向)高400 是程式把圖像映像成實物時採用的坐標 是邏輯上的
SetViewportExtEx(hDC,300,200,NULL); //設定視圖區域,物理坐標 把輸出時(程式運行時)看到的界面區域的坐標為寬(X坐標方向)300 高(Y坐標方向)200 是實實在在的300 和200
他們的聯繫是他們的坐標原點都是程式運行時視窗的左上角 他們的區域大小也是相同的(重合的 就像兩張大小相同的畫布重疊在一起)只是各自的坐標不同罷了 即一個點在兩個坐標系中的x,y參數大小不同 但他們彼此之間的比列是相同的
而且還要注意SetViewportExtEx就相當於在程式的視窗上從左上角開始畫一個(我的例子是300 和200)區域 若不進行設定 則視口區域就等於應用程式視窗大小
用GetWindowExtEx與GetViewportExtEx看一下原值,全是1,感覺SetWindowExtEx與SetViewportExtEx只設定了視窗(邏輯坐標)與視口(設備坐標)的比值。如上,SetWindowExtEx(hDC,600,400,NULL);SetViewportExtEx(hDC,300,200,NULL);只是把兩個邏輯映射成為一個物理單位。視窗大小超過(600,400),且做圖也超過(600,400)時,依然能顯示。當視窗小於(600,400)且在視窗外與(600,400)之間做圖,依然不顯示。所以感覺SetWindowExtEx與SetViewportExtEx只設定了一個比較,而不是真正視窗與視口的大小。 望高手指正!
SetWindowExtEx(hDC,600,400,NULL);設定視窗區域 為 600*400個單位;
SetViewportExtEx(hDC,300,200,NULL); 設定視圖區域 為300*200個單位,視圖區域是視窗區域的一半,即在視窗中顯示的內容 是視窗原內容的一半,這樣就實現了原圖的放大,就像作圖工具中的放大小效果。視窗區域不變時,視圖區域越小,就能看到更詳細的圖像細節。