duilib 修改視窗大小 偶然失敗情況

2021-09-17 03:03:27 字數 655 閱讀 2022

現象:

動態設定視窗最小大小,動態改變視窗大小位置,發現偶然會有不成功現象。

經測試,下面操作,會導致修改不成功

將視窗最大化   ,  隱藏 , 然後修改視窗大小 , 最後顯示視窗, 會發現視窗大小沒變。

解決:估計,此時,視窗處於最大化狀態,因此是不支援修改視窗大小的, 知道原因就好解決了。

再隱藏視窗 或重新設定大小時,先還原下視窗

具體如下:

重新設定大小時:

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...