視窗最大最下限制

2021-06-26 12:54:03 字數 1232 閱讀 5432



最近用到視窗變化的一些東西,遇到幾個相關的訊息函式,簡要分析,作為備忘。

3個訊息分別是:wm_size、wm_sizing、wm_getminmaxinfo;分別對應相應的處理函式:onsize、onsizing、ongetminmaxinfo。

當視窗大小發生變化時,響應的順序依次是:wm_getminmaxinfo-->wm_sizing-->wm_size。

ongetminmaxinfo
這個函式在視窗初始化的時候會被呼叫一次,當視窗大小發生改變的時候也會被呼叫。利用這個函式,可以比較方便的實現視窗最大最小尺寸的控制。

引數lpmmi是乙個結構體指標,其中包含了有關視窗的最大化大小和位置以及最小、最大跟蹤大小的資訊。

使用這個函式控制視窗最小尺寸的示例的**如下:

[cpp]

view plain

copy

void

c***dlg::ongetminmaxinfo(minmaxinfo far* lpmmi)  

以上**可以使得視窗大小變化時,最小寬度為500px,最小高度為100px。

onsizing
這個函式在視窗大小發生變化時被呼叫。在這個函式裡,也可以控制視窗的最大最小尺寸,但是沒有ongetminmaxinfo方便。

[cpp]

view plain

copy

void

c***dlg::onsizing(

uint

fwside, lprect prect) 

cdialog::onsizing(fwside, prect); } 

用上面的方法,如果是從右邊改變大小,可以達到想要的效果,但是從左邊改變大小,雖然大小可以控制在最小500,但是當達到最小寬度後,再縮小,會發現整個視窗往右移動了,原因是**中的prect->right = prect->left + 500;這句是針對left來改變right的,所以left移動了,right也移動了,看上去就像是這個視窗右移了。所以針對這種情況又要另外做相應的處理。

onsize
這個函式會在視窗大小改變結束後被呼叫,通常會在這個函式裡重新擺放各個控制項的位置及大小。用這個函式暫時沒有找到什麼辦法可以控制視窗的最大最小大小。

上下限最大流

一 有上下限的最大流 首先,每條邊的下限是必須要滿足的。增加附加源點s和附加匯點t,原來的源點和匯點為s和t。對於原圖g s,t,low u v high u v 構建相應的新圖d s,t,e e包括,其中,in i 表示進入i的邊的下限之和,out i 表示離開i的邊的下限之和。設sum為所有點的...

Linux下限制某程式CPU占用

在1臺雲主機上使用gdrive同步檔案時,老是觸發主機商的cpu占用上限,不停的被強制關機。好麼,找了一圈,發現1個挺好用的限定cpu占用的程式 cpulimit 記載一下centos 7下cpulimit的部署與使用途中 部署git clone cd cpulimit make cp src cp...

CentOS rhel 7下限制ip訪問

設定ssh只允許特定使用者從特定的ip登入,其它未經允許的使用者和ip都不能登入 示例1 只允許192.168.0.28登入192.168.1.79 這是允許的 etc hosts.allow vim etc hosts.allow,最後一行加入 sshd 192.168.0.28 allow 多個...