工具欄你可以建立多個工具欄 不同解析度載入不同的資源
至於控制項
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 ...