日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

DuiLib学习笔记5——标题栏不能正常隐藏问题

發布時間:2025/7/14 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DuiLib学习笔记5——标题栏不能正常隐藏问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我之前代碼都是照著官方那個Duilib入門文檔.doc來學習的。但是遇到一個問題,雖然他隱藏了windows的自帶標題欄,可以自己繪畫一個標題欄了,但是在這個標題欄下方,用力亂戳,就可能把系統自帶的,最小化,最大化,關閉按鈕戳出來。如下圖:

我問了群里的朋友,都說可能是WM_NCHITTEST的問題。于是我去handle里多加了一個if判斷

else if( uMsg == WM_NCHITTEST) {return 0; }

結果雖然解決了問題,但是我自己的按鈕都失效了。通過debug發現,只要鼠標進入我們程序界面,就會觸發WM_NCHITTEST。所以return掉太暴力了。

后來在一個博客里發現了一個解決方案http://tunps.com/ws_caption-cause-duilib-program-title-bar-cannot-hide

LRESULT CMainDlg::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) {LONG styleValue = ::GetWindowLong(*this, GWL_STYLE);styleValue &= ~WS_CAPTION;::SetWindowLong(*this, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);//..... }

我試著去寫了個OnCreate無效。后來把代碼試著改了下,在創建窗體后,就對窗體進行set,生效了。

官方教程里的創建代碼如下:

CFrameWindowWnd* pFrame = new CFrameWindowWnd();if( pFrame == NULL ) return 0;pFrame->Create(NULL, _T("測試"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);pFrame->ShowWindow(true);

我改了一下改成這樣:

CFrameWindowWnd* pFrame = new CFrameWindowWnd();
if( pFrame == NULL ) return 0;
pFrame->Create(NULL, _T("測試"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
LONG styleValue = ::GetWindowLong(*pFrame, GWL_STYLE);
styleValue &= ~WS_CAPTION;
::SetWindowLong(*pFrame, GWL_STYLE, styleValue | WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
pFrame->CenterWindow();
pFrame->ShowWindow(true);

運行后,果然一切正常了。在此代碼基礎上,我覺得既然是set,那么原來create的時候就應該可以控制這兩個參數。跟上面create代碼一對比,我就做了一個嘗試,把這兩個屬性替換掉,改成如下:

CFrameWindowWnd* pFrame = new CFrameWindowWnd();
if( pFrame == NULL ) return 0;
pFrame->Create(NULL, _T("測試"), WS_CLIPSIBLINGS, WS_CLIPCHILDREN);
pFrame->CenterWindow();
pFrame->ShowWindow(true);

官方文檔創建時的參數是UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE把他們換成WS_CLIPSIBLINGS, WS_CLIPCHILDREN就可以了

運行后一切正常,很努力的戳也戳不出那些隱藏按鈕了。

由于整個沒有官方文檔,本人也不太可能去慢慢閱讀源碼,所以這樣的代碼試出來的,多少以后可能存在隱患。群里很多朋友都是靠讀官方的demo,看其他朋友寫的demo來學習的,的確沒有其他快捷有效途徑,但是現在就只能先這樣了。

?

轉載于:https://www.cnblogs.com/duguxue/p/3818243.html

總結

以上是生活随笔為你收集整理的DuiLib学习笔记5——标题栏不能正常隐藏问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。