如何讓視窗最大化 並讓控制項跟隨變化

2021-06-22 12:47:39 字數 1063 閱讀 7838

讓視窗最大化有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...