欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

資源文件中的大小與像素轉換-創(chuàng)新互聯(lián)

資源文件中的大小

創(chuàng)新互聯(lián)建站是由多位在大型網(wǎng)絡公司、廣告設計公司的優(yōu)秀設計人員和策劃人員組成的一個具有豐富經驗的團隊,其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設計師、平面廣告設計師、網(wǎng)絡營銷人員及形象策劃。承接:網(wǎng)站設計制作、網(wǎng)站設計、網(wǎng)站改版、網(wǎng)頁設計制作、網(wǎng)站建設與維護、網(wǎng)絡推廣、數(shù)據(jù)庫開發(fā),以高性價比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務。

IDD_MAINDLG DIALOG DISCARDABLE ?0, 0, 343, 199

0, 0, 343, 199

表示的意思是,0,0, width,height

這個單位是DLU?

轉換成pix?使用??? ?
RECT r1 ={0,0,343,199};

MapDialogRect(&r1);

雖然轉換成了pix,但是這個數(shù)據(jù)是client區(qū)域的大小

如何計算標題欄的大小,還是邊框的大小呢,

真是一個麻煩的事情 。

//設定窗口的WindowRect使用

long width? ?=?r1.right + 3D邊框

long? height =??r1.bottom?
SetWindowPos(NULL,0,0,width ,height ,SWP_NOZORDER|SWP_NOMOVE|SWP_FRAMECHANGED);

但是這并不包括?標題欄,3D邊框的大小。?

快速獲取系統(tǒng)信息的函數(shù)為GetSystemMetrics,傳入SM_CYCAPTION即可返回標題欄的高度。代碼如下:

rect.bottom = GetSystemMetrics(SM_CYCAPTION);

//要根據(jù)窗口的style,來設定標題欄的大小,和border大小,才能真正的得到資源文件中一樣的窗口大小。

long width???=?r1.right + GetSystemMetrics(SM_CXDLGFRAME) * 2

long??height =??r1.bottom? + GetSystemMetrics(SM_CYCAPTION)? +??GetSystemMetrics(SM_CYDLGFRAME) ?* 2
SetWindowPos(NULL,0,0,width ,height ,SWP_NOZORDER|SWP_NOMOVE|SWP_FRAMECHANGED);

其中?GetSystemMetrics(SM_CXDLGFRAME)

這個索引值不是固定的,要根據(jù)窗口的boder? style,設置參數(shù)的內容。

我在這里使用的的Dialog風格。

判斷窗口是否含有指定的style

DWORD dwStyle = GetWindowLong(GWL_STYLE) ; 

if(dwStyle & WS_CAPTION)
{

}

不同的窗口風格,標題欄和border的大小都是不一樣的。

真是麻煩,
對于窗口的創(chuàng)建理解還是不夠明了。稀里湖涂的在寫代碼。

另外,還有對應的api?可以根據(jù)client區(qū)的大小,重新計算窗口的大小值 :

MFC的方法則更加簡單
在Create()或者CreateEx()創(chuàng)建窗口以后, 用下面的代碼調整窗口的大小。
CRect rect(0, 0, w, h);
CalcWindowRect(&rect);
SetWindowPos(NULL, 0, 0, rect.Width(), rect.Height(),?? SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW);

?//設定客戶區(qū)大小為800*600
rect(0,0,800,600);
::AdjustWindowRectEx(&rect,cs.style,TRUE,cs.dwExStyle);
cs.cx=rect.Width();
cs.cy=rect.Height();
//改變視窗的位置讓它固定在屏幕中間
CRect rcArea;
SystemParametersInfo( SPI_GETWORKAREA, NULL, &rcArea, NULL );
cs.x = rcArea.left + ( rcArea.Width() - cs.cx ) / 2;
cs.y = rcArea.top + ( rcArea.Height() - cs.cy ) / 2;

根據(jù)所需的客戶端矩形大小計算窗口矩形的所需大小。 然后,窗口矩形可以傳遞給?CreateWindow?函數(shù),以創(chuàng)建其工作區(qū)為所需大小的窗口。

若要指定擴展窗口樣式,請使用?AdjustWindowRectEx?函數(shù)。

語法

C++復制

BOOL AdjustWindowRect(
  [in, out] LPRECT lpRect,
  [in]      DWORD  dwStyle,
  [in]      BOOL   bMenu
);
參數(shù)

[in, out] lpRect

類型:?LPRECT

指向?RECT?結構的指針,該結構包含所需工作區(qū)左上角和右下角的坐標。 函數(shù)返回時,結構包含窗口左上角和右下角的坐標,以適應所需的工作區(qū)。

[in] dwStyle

類型:DWORD

要計算所需大小的窗口的?窗口樣式?。 請注意,不能指定?WS_OVERLAPPED?樣式。

[in] bMenu

類型:?BOOL

指示窗口是否具有菜單。

返回值

類型:?BOOL

如果該函數(shù)成功,則返回值為非零值。

如果函數(shù)失敗,則返回值為零。 要獲得更多的錯誤信息,請調用 GetLastError。

注解

客戶端矩形是完全封閉工作區(qū)的最小矩形。 窗口矩形是完全封閉窗口的最小矩形,包括工作區(qū)和非封閉區(qū)域。

當菜單欄換行到兩行或更多行時,?AdjustWindowRect?函數(shù)不會增加額外的空間。

AdjustWindowRect?函數(shù)不考慮WS_VSCROLL或WS_HSCROLL樣式。 若要考慮滾動條,請使用SM_CXVSCROLL或SM_CYHSCROLL調用?GetSystemMetrics?函數(shù)。

假設我們用CreateWindow(..., 0, 0, w, h, ...); 創(chuàng)建一個窗口, 我們將獲得一個w x h大小的窗口, 通常我們需要的是客戶區(qū)大小為w x h, 如何做呢?

一個方法是調用API函數(shù)SetWindowPos, 通常我們需要提供3個參數(shù):窗口句柄hwnd,窗口寬度w,窗口高度h。下面是一個示例:
SetWindowPos(hwnd, NULL, 0, 0, w, h, SWP_NOMOVE | SWP_NOZORDER);

現(xiàn)在的問題是我們只知道客戶區(qū)的大小w x h, 如何獲取窗口大小呢?

這里的關鍵是
wWindow = wClient + wFrame * 2
hWindow = hClient + hCaption + hMenu + hFrame * 2
其中wFrame, hCaption, hMenu, hFrame取值則需要根據(jù)窗口樣式而定了。
如果窗口提供了Caption, 則hCaption=GetSystemMetrics(SM_CYCAPTION); 否則為0
如果窗口提供了菜單, 則hMenu=GetSystemMetrics(SM_CYMENU); 否則為0
如果窗口提供了Border, 則wFrame=GetSystemMetrics(SM_CXFRAME),hFrame=GetSystemMetrics(SM_CYFRAME); 否則為0

綜合起來,如果窗口具有標題欄,具有菜單,具有border,我們可以這樣創(chuàng)建一個指定客戶區(qū)w x h大小的窗口:
CreateWindow(..., 0, 0, w, h, ...);
w = w + GetSystemMetrics(SM_CXFRAME) * 2;
h = h + GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYFRAME) * 2;
SetWindowPos(hwnd, NULL, 0, 0, w, h, SWP_NOMOVE | SWP_NOZORDER);

以下為搜羅的資料:

GetDialogBaseUnits?函數(shù)以像素為單位返回對話框基單位。 坐標的確切含義取決于?STYLE?選項語句定義的樣式。 對于子樣式對話框,坐標相對于父窗口的原點,除非對話框具有樣式?DS_ABSALIGN;在這種情況下,坐標相對于顯示屏幕的原點。

不要將?WS_CHILD?樣式與模式對話框一起使用。?DialogBox?函數(shù)始終禁用新創(chuàng)建的對話框的父/所有者。 禁用父窗口時,將隱式禁用其子窗口。 由于禁用子樣式對話框的父窗口,因此子樣式對話框也處于禁用狀態(tài)。

如果對話框具有?DS_ABSALIGN?樣式,則其左上角的對話框坐標相對于屏幕原點而不是父窗口左上角。 如果希望對話框在特定部分開始顯示,無論父窗口位于屏幕上的位置,通常都會使用此樣式。

名稱?DIALOG?還可以用作?CreateWindow?函數(shù)的類名稱參數(shù),以使用對話框屬性創(chuàng)建窗口。

示例

下面演示?了 DIALOG?語句的用法:

syntax復制

#includeErrorDialog DIALOG  10, 10, 300, 110
STYLE WS_POPUP | WS_BORDER
CAPTION "Error!" 
{
    CTEXT "Select One:", 1, 10, 10, 280, 12
    PUSHBUTTON "&Retry", 2, 75, 30, 60, 12
    PUSHBUTTON "&Abort", 3, 75, 50, 60, 12
    PUSHBUTTON "&Ignore", 4, 75, 80, 60, 12
}

GetDialogBaseUnits?返回的水平基單位等于系統(tǒng)字體中字符的平均寬度(以像素為單位):垂直基單位等于字體的高度(以像素為單位)。

僅當對話框模板無法指定字體時,才會使用系統(tǒng)字體。 大多數(shù)對話框模板指定字體;因此,此函數(shù)不適用于大多數(shù)對話框。

對于不使用系統(tǒng)字體的對話框,基本單位是對話框字體中字符的平均寬度和高度(以像素為單位)。 可以使用?GetTextMetrics?和?GetTextExtentPoint32?函數(shù)計算所選字體的這些值。 但是,通過使用?MapDialogRect?函數(shù),可以避免在計算與系統(tǒng)執(zhí)行的計算不同時可能導致的錯誤。

每個水平基單位等于 4 個水平對話模板單位;每個垂直基單位等于 8 個垂直對話模板單位。 因此,若要將對話框模板單位轉換為像素,請使用以下公式:

復制

pixelX = MulDiv(templateunitX, baseunitX, 4);
pixelY = MulDiv(templateunitY, baseunitY, 8);

同樣,若要從像素轉換為對話模板單位,請使用以下公式:

復制

templateunitX = MulDiv(pixelX, 4, baseunitX);
templateunitY = MulDiv(pixelY, 8, baseunitY);

下面是GetSystemMetrics函數(shù)參數(shù)nIndex的定義:

SM_ARRANGE 返回是否預備最小化.
SM_CLEANBOOT 返回系統(tǒng)啟動方式:
0 正常啟動
1 安全模式啟動
2 網(wǎng)絡安全模式啟動
SM_CMOUSEBUTTONS 返回值為系統(tǒng)支持的鼠標鍵數(shù),返回0,則系統(tǒng)中沒有安裝鼠標。
SM_CXBORDER,
SM_CYBORDER 返回以相素值為單位的Windows窗口邊框的寬度和高度,如果Windows的為3D形態(tài),則
等同于SM_CXEDGE參數(shù)
SM_CXCURSOR,
SM_CYCURSOR 返回以相素值為單位的標準光標的寬度和高度
SM_CXDLGFRAME,
SM_CYDLGFRAME 等同與SM_CXFIXEDFRAME and SM_CYFIXEDFRAME
SM_CXDOUBLECLK,
SM_CYDOUBLECLK 以相素值為單位的雙擊有效的矩形區(qū)域
SM_CXEDGE,SM_CYEDGE 以相素值為單位的3D邊框的寬度和高度
SM_CXFIXEDFRAME,
SM_CYFIXEDFRAME 圍繞具有標題但無法改變尺寸的窗口(通常是一些對話框)的邊框的厚度
SM_CXFRAME,SM_CYFRAME 等同于SM_CXSIZEFRAME and SM_CYSIZEFRAME
SM_CXFULLSCREEN,
SM_CYFULLSCREEN 全屏幕窗口的窗口區(qū)域的寬度和高度
SM_CXHSCROLL,
SM_CYHSCROLL 水平滾動條的高度和水平滾動條上箭頭的寬度
SM_CXHTHUMB 以相素為單位的水平滾動條上的滑動塊寬度
SM_CXICON,SM_CYICON 系統(tǒng)缺省的圖標的高度和寬度(一般為32*32)
SM_CXICONSPACING,
SM_CYICONSPACING 以大圖標方式查看Item時圖標之間的間距,這個距離總是大于等于
SM_CXICON and SM_CYICON.
SM_CXMAXIMIZED,
SM_CYMAXIMIZED 處于頂層的大化窗口的缺省尺寸
SM_CXMAXTRACK,
SM_CYMAXTRACK 具有可改變尺寸邊框和標題欄的窗口的缺省大尺寸,如果窗口大于這個
尺寸,窗口是不可移動的。
SM_CXMENUCHECK,
SM_CYMENUCHECK 以相素為單位計算的菜單選中標記位圖的尺寸
SM_CXMENUSIZE,
SM_CYMENUSIZE 以相素計算的菜單欄按鈕的尺寸
SM_CXMIN,SM_CYMIN 窗口所能達到的最小尺寸
SM_CXMINIMIZED,
SM_CYMINIMIZED 正常的最小化窗口的尺寸
SM_CXMINTRACK,
SM_CYMINTRACK 最小跟蹤距離,當使用者拖動窗口移動距離小于這個值,窗口不會移動。
SM_CXSCREEN,
SM_CYSCREEN 以相素為單位計算的屏幕尺寸。
SM_CXSIZE,SM_CYSIZE 以相素計算的標題欄按鈕的尺寸
SM_CXSIZEFRAME,
SM_CYSIZEFRAME 圍繞可改變大小的窗口的邊框的厚度
SM_CXSMICON,
SM_CYSMICON 以相素計算的小圖標的尺寸,小圖標一般出現(xiàn)在窗口標題欄上。
M_CXVSCROLL,
SM_CYVSCROLL 以相素計算的垂直滾動條的寬度和垂直滾動條上箭頭的高度
SM_CYCAPTION 以相素計算的普通窗口標題的高度
SM_CYMENU 以相素計算的單個菜單條的高度
SM_CYSMCAPTION 以相素計算的窗口小標題欄的高度
SM_CYVTHUMB 以相素計算的垂直滾動條中滾動塊的高度
SM_DBCSENABLED 如果為TRUE或不為0的值表明系統(tǒng)安裝了雙字節(jié)版本的USER.EXE,為FALSE或0則不是。
SM_DEBUG 如果為TRUE或不為0的值表明系統(tǒng)安裝了debug版本的USER.EXE,為FALSE或0則不是。
SM_MENUDROPALIGNMENT 如果為TRUE或不為0的值下拉菜單是右對齊的否則是左對齊的。
SM_MOUSEPRESENT 如果為TRUE或不為0的值則安裝了鼠標,否則沒有安裝。
SM_MOUSEWHEELPRESENT 如果為TRUE或不為0的值則安裝了滾輪鼠標,否則沒有安裝。(Windows NT only)
SM_SWAPBUTTON 如果為TRUE或不為0的值則鼠標左右鍵交換,否則沒有。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁題目:資源文件中的大小與像素轉換-創(chuàng)新互聯(lián)
新聞來源:http://aaarwkj.com/article34/gocpe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設、用戶體驗建站公司、App開發(fā)、品牌網(wǎng)站建設、網(wǎng)站內鏈

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
欧美一区日韩二区国产三区| 亚洲欧美日韩老汉影院| 国产精品不卡一不卡二| 蜜桃臀视频一区二区三区| 91麻豆成人国产在线观看| 亚洲天堂av在线播放| 日韩欧美亚洲一级黄片| 国产美女无遮挡免费网站| 中文字幕人妻丝袜一区一三区| 欧美日韩精品在线二区| 国产熟女乱免费一区二区| 日本一区二区不卡视频在线播放| 亚洲综合激情一区二区| 久碰精品少妇中文字幕av| 国产伦理自拍视频在线观看| 一区二区三区免费视频少妇| 亚洲国产区男人的天堂| av在线手机中文字幕| 国产精彩在线视频成人在线| 中文字幕日韩高清乱码| 深夜成人免费观看视频| 亚洲福利网址一二三区| 日韩av裸体在线播放| 欧美日韩免费高清视视频| 国产精品日韩伦理一区二区| 日韩av在线高清播放| 久草视频免费福利观看| 国产熟女精品自拍嫩草| 欧美亚洲国产日韩熟女| 婷婷中文字幕在线不卡视频| 亚洲乱色熟女一区二区三区麻豆| 国产亚洲精品福利视频| 国产一区二区三区在线视频播放| 91中文在线视频播放| 日韩中文字幕亚洲精品一| 精品久久激情中文字幕| 日韩精品电影一区在线观看| 亚洲精品一区二区av| 熟女少妇久久中文字幕| 国产高跟丝袜女王调教| 哪里可以看日韩免费毛片|