讓視窗最大化有2種方法
一,cwnd::showwindow(sw_showmaximized);
二,先獲取螢幕大小,然後更改視窗大小
要取得螢幕大小,可以用下面幾個函式:
int cx = getsystemmetrics(sm_cxfullscreen);
int cy = getsystemmetrics(sm_cyfullscreen);
通過上邊兩個函式獲取的是顯示螢幕的大小,但不包括工作列等區域。
int cx = getsystemmetrics( sm_cxscreen );
int cy = getsystemmetrics( sm_cyscreen );
這兩個函式獲取的是真正螢幕的大小。
要設定對話方塊的大小,可以如下實現:
crect temprect(0,0,640,480);
cwnd::setwindowpos(null,0,0,temprect.width(),temprect.height(),swp_nozorder|swp_nomove);
讓控制項隨視窗變化有以下方法:
1 首先要知道對話方塊大小是否改變,改變了多少,我們應該記錄當前對話方塊的大小。
在對話方塊類中新增成員變數 crect m_rect 他是用來記錄當前對話方塊的大小。我們在oninitdialog()函式中獲取對話方塊建立時的大小:getclientrect(&m_rect);
2 增加訊息wm_size的訊息響應函式 onsize():只要對話方塊大小發生變化,就會呼叫該函式。
3 在onsize()函式中增加如下**:
void cmydlg::onsize(uint ntype, int cx, int cy) //cx,cy就是當前對話方塊的長和寬
}然後再手動新增乙個函式,用以實現具體的變化
void cmydlg::changesize(uint nid, int x, int y) //nid為控制項id,x,y分別為對話方塊的當前長和寬
}
參考
如何使得視窗最大化?
eclipse版本 3.4 根據 如何得到螢幕解析度?這篇文章的 可以得到螢幕解析度,根據 如何設定視窗大小和位置?這篇文章的 可以設定視窗的位置,但是使視窗最大化不是佔滿整個螢幕,而根據得到的解析度設定視窗大小和位置的話,會把系統下面的工作列也給遮擋住,這樣的程式是很不友好的,大多數情況下,我們需...
MFC讓視窗一開始就最大化
看原帖,本貼尾有鏈結 bring to top before showing bringtotop ncmdshow if ncmdshow 1 怎麼解決問題?然視窗第一次顯示就最大化?ccommandlineinfo cmdinfo parsecommandline cmdinfo dispatc...
如何使視窗啟動最大化?
1.如何使子視窗啟動時最大化?view.cpp中的 onupdate 函式中加入 子視窗啟動就最大化 this getparentframe showwindow sw showmaximized 2.如何使程式執行時最大化?的 initinstace 中令 pmainframe showwindo...