對話方塊程式最大化 控制項以及字型大小自適應

2021-05-25 01:35:16 字數 1542 閱讀 7341

工具欄你可以建立多個工具欄   不同解析度載入不同的資源

至於控制項 

initdialog  中:

//獲取未放大前對話方塊大小

crect rect;

::getwindowrect(m_hwnd,rect);

screentoclient(rect);

m_ndlgwidth = rect.right - rect.left;

m_ndlgheight = rect.bottom - rect.top;

//視窗最大化,並取得解析度大小,根據此大小設定控制項字型大小

showwindow(sw_maximize);

m_nwidth = getsystemmetrics(sm_cxscreen);

m_nheight = getsystemmetrics(sm_cyscreen);

//算出放大倍數,並記錄  假設1280*1024  1024*768  800*768  三個解析度

m_fwidthmul = float(m_nwidth)/float(m_ndlgwidth);

m_fheightmul = float(m_nheight)/float(m_ndlgheight);

//三種解析度下設定三種字型,載入不同工具欄

if (m_nwidth >= 1279)

else

else }

resize(控制項id)//有多少個控制項 呼叫多少次resize

類中新增乙個函式  resize(int naimid)

void resize(naimid)

crect aimrect;

getdlgitem(naimid)->getwindowrect(aimrect);

screentoclient(aimrect);

//記錄這個區域的左上角點和右下角點

cpoint oldtlpoint,aimtlpoint;

oldtlpoint = aimrect.topleft();

aimtlpoint.x = long(oldtlpoint.x *m_fwidthmul);

aimtlpoint.y = long(oldtlpoint.y *m_fheightmul);

cpoint oldbrpoint,aimbrpoint;

oldbrpoint = aimrect.bottomright();

aimbrpoint.x = long(oldbrpoint.x *m_fwidthmul);

aimbrpoint.y = long(oldbrpoint.y *m_fheightmul);

//根據解析度設定字型

getdlgitem(naimid)->setfont(&m_newfont);

//在放大的視窗裡,重繪放大後的視窗

aimrect.setrect(aimtlpoint,aimbrpoint);

getdlgitem(naimid)->movewindow(aimrect,true);

對話方塊程式最大化 控制項以及字型大小自適應

工具欄你可以建立多個工具欄 不同解析度載入不同的資源 至於控制項 initdialog 中 獲取未放大前對話方塊大小 crect rect getwindowrect m hwnd,rect screentoclient rect m ndlgwidth rect.right rect.left m...

限制對話方塊最大化時對話方塊的大小

1 新建乙個基於對話方塊的mfc應用程式limitmaxdialogtest,刪除對話方塊中原有控制項。2 切換到資源檢視,設定對話方塊maximize box 屬性為true。3 新增wm getminmaxinfo訊息的處理函式,如下 void climitmaxdialogtestdlg on...

對話方塊最大化和開啟檔案

對話方塊最大化時,使控制項大小也隨對話方塊視窗變化 給對話方塊新增wm size訊息,生成函式中新增 void cdatashowdlg onsize uint ntype,int cx,int cy getclientrect m rect 將變化後的對話方塊大小設為舊大小 invalidate ...