getwindowrect(lprect)、getclientrect(lprect)、screentoclient(lprect)、movewindow(lprect)。(注:這裡四個函式的引數既可以是crect,也可以是crect*)
cwnd::getwindowrect() 的作用是獲取cwnd 視窗的座標位置,這個位置是以螢幕左上角為原點。(順便說一下,在視窗oninitdialog 函式執行的時候,視窗的左上角是與螢幕左上角相重合的,在oninitdialog 執行結束之後才被移動到螢幕**並顯示。)
cwnd::getclientrect() 的作用也是獲取cwnd 視窗的座標位置,但是這個位置是以該cwnd 視窗自己的客戶區(不包括框架)左上角為原點,也就是說用這個函式獲取的crect 的left 和top 都一定是0.
用上面兩個函式獲取到了視窗的座標crect 之後、可以通過對crect 的top、left、right、bottom 進行修改來設定乙個想要的視窗的大小與位置。最後用movewindow() 函式就可以把視窗移動到新的crect 指定的矩形區里去、並改變大小了。
假設現在有乙個cdialog m_childdlg,則可以m_childdlg.movewindow(rect); 注意,這裡面的rect 必須是以m_childdlg 的父視窗為參照系的座標位置。如果m_childdlg 沒有父視窗,那麼螢幕桌面就是它的父視窗。這時可以直接m_childdlg.getwindowrect(rect); 再m_childdlg.movewindow(rect);
但如果m_childdlg 有自己的父視窗呢?分兩種情況:
1)、m_childdlg 的左上角頂點座標與其父視窗的客戶區的左上角頂點座標重合。這時可以m_childdlg.getclientrect(rect); 再m_childdlg.movewindow(rect);
2)、否則。假設其父視窗是cdialog m_pdlg,這時必須m_childdlg.getwindowrect(rect); 然後m_pdlg.screentoclient(rect); 最後才能m_childdlg.movewindow(rect);
如果movewindow之後,介面上顯示有問題,不妨試一下invalidaterect(rect);//新增重繪區。updatewindow(); //傳送並立即處理wm_paint,使重繪區重畫。
opencv調整視窗大小
window autosize。視窗大小會自動調整以適應所顯示的影象,但是不能更改大小 cv window normal 可以通過滑鼠來調整影象大小。cv namedwindow camera cv window normal cv imshow camera frame python中調整視窗大小...
Qt控制項大小跟隨視窗調整
來自qq群 linux 技術分享 311078264 通過qt creator的設計模式實現,無需增加 如下圖,實現對最下層tableview大小跟隨視窗調整 1 介面空白處右擊,選擇布局 柵格布局,這會使centralwidget布局設定為gridlayout。然後介面中的部件會自動新增到柵格布局...
pygame之視窗大小調整
對於不同的情況我門需要調整不同的視窗,在pygame中pygame.display.set mode 640,480 0,32 為調整視窗的函式,例如,我們可以通過設定第二個引數為fullscreen來讓整個視窗全屏,基本的語法我就不說了,這裡我展示可以使自定義調整視窗大小的 import pyga...