現象:
動態設定視窗最小大小,動態改變視窗大小位置,發現偶然會有不成功現象。
經測試,下面操作,會導致修改不成功
將視窗最大化 , 隱藏 , 然後修改視窗大小 , 最後顯示視窗, 會發現視窗大小沒變。
解決:估計,此時,視窗處於最大化狀態,因此是不支援修改視窗大小的, 知道原因就好解決了。
再隱藏視窗 或重新設定大小時,先還原下視窗
具體如下:
重新設定大小時:
dword style = getwindowlong(m_hwnd, gwl_style);
if (style & ws_maximize)
同時,對於duilib視窗而言,如果之前視窗設定了最小大小, 重新設定視窗大小時,也要在重新設定視窗的最小值, 否則,視窗大小也可能不發生改變。
//設定視窗最小值
setmininfo(nw, nh);
重置視窗大小函式:
setminsize(int nw, int nh)
{ dword style = getwindowlong(m_hwnd, gwl_style);
if (style & ws_maximize
duilib 模態視窗
void cmaindlg dotask pdlg create 的引數1,開始寫成了null,子視窗彈出後,還可以操作主視窗.因為要彈出模態對話方塊,跟進 pdlg showmodal 看到了duilib禁止主視窗的 才想到引數1應為父視窗視窗控制代碼.可以看出,當要彈出非模態視窗時,可以將pdl...
duilib虛擬視窗使用
方便每乙個tablayout的介面都可以用乙個類去處理 避免將所有的訊息寫到同乙個主視窗類中 方便維護 主視窗 建構函式中新增 cetcdmainwnd cetcdmainwnd xml配置 類中新增訊息處理類的成員變數 cpatmanagepage m patmanagepage 訊息處理類的宣告...
duilib 視窗的分層顯示控制
需求中要求,taska的視窗在彈出後,必須前置在其他子視窗上面。剛開始,試驗了2種方法不理想.用setwindowpos改變子視窗的z軸,這 太大了.主視窗的前置和後置的控制和任務視窗的彈出有衝突.將taska建立在最後彈出的視窗上,處理起來繁瑣,不穩定。如果taska的父視窗消失了,但是這時要求t...