無邊框對話方塊拖動改變大小的實現總結
UINT CTestDlg::OnNcHitTest( CPoint point ) { CPoint ptCur; CRect rect; GetCursorPos( &ptCur ); GetWindowRect( &rect ); if( CRect(rect.left, rect.top, rect.left+3, rect.top+3).PtInRect( ptCur ) ) return HTTOPLEFT; else if( CRect(rect.right-3, rect.top, rect.right, rect.top+3).PtInRect( ptCur ) ) return HTTOPRIGHT; else if( CRect(rect.left, rect.bottom-3, rect.left+3, rect.bottom).PtInRect( ptCur ) ) return HTBOTTOMLEFT; else if( CRect(rect.right-3, rect.bottom-3, rect.right, rect.bottom).PtInRect( ptCur ) ) return HTBOTTOMRIGHT; else if ( CRect(rect.left, rect.top, rect.left+3, rect.bottom).PtInRect( ptCur ) ) return HTLEFT; else if( CRect(rect.right-3, rect.top, rect.right, rect.bottom).PtInRect( ptCur ) ) return HTRIGHT; else if( CRect(rect.left, rect.top, rect.right-128, rect.top+3).PtInRect( ptCur ) ) // 128 Min,Max,Close return HTTOP; else if( CRect(rect.left, rect.bottom-3, rect.right, rect.bottom).PtInRect( ptCur ) ) return HTBOTTOM; return CDialog::OnNcHitTest(point); } BOOL CTestDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) { CPoint ptCur; CRect rect; GetCursorPos( &ptCur ); GetWindowRect( &rect ); if ( rect.Width() >= m_nCxFullScreen-3 && rect.Height() >= m_nCyFullScreen-3 ) return CDialog::OnSetCursor(pWnd, nHitTest, message); if( CRect(rect.left, rect.top, rect.left+3, rect.top+3).PtInRect( ptCur ) || CRect(rect.right-3, rect.bottom-3, rect.right, rect.bottom).PtInRect( ptCur ) ) { SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENWSE))); return 0; } else if( CRect(rect.left, rect.bottom-3, rect.left+3, rect.bottom).PtInRect( ptCur ) || CRect(rect.left, rect.bottom-3, rect.left+3, rect.bottom).PtInRect( ptCur ) ) { SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENESW))); return 0; } else if( CRect(rect.left, rect.top, rect.right-128, rect.top+3).PtInRect( ptCur ) || CRect(rect.left, rect.bottom-3, rect.right, rect.bottom).PtInRect( ptCur ) ) { SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZENS))); return 0; } else if( CRect(rect.left, rect.top, rect.left+3, rect.bottom).PtInRect( ptCur ) || CRect(rect.right-3, rect.top, rect.right, rect.bottom).PtInRect( ptCur ) ) { SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_SIZEWE))); return 0; } return CDialog::OnSetCursor(pWnd, nHitTest, message); } void CTestDlg::OnNcLButtonDown(UINT nHitTest, CPoint point) { switch( nHitTest ) { case HTTOP: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOP, MAKELPARAM(point.x, point.y)); return; case HTBOTTOM: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOM, MAKELPARAM(point.x, point.y)); return; case HTLEFT: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_LEFT, MAKELPARAM(point.x, point.y)); return; case HTRIGHT: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_RIGHT, MAKELPARAM(point.x, point.y)); return; case HTTOPLEFT: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPLEFT, MAKELPARAM(point.x, point.y)); return; case HTTOPRIGHT: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_TOPRIGHT, MAKELPARAM(point.x, point.y)); return; case HTBOTTOMLEFT: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMLEFT, MAKELPARAM(point.x, point.y)); return; case HTBOTTOMRIGHT: SendMessage( WM_SYSCOMMAND, SC_SIZE | WMSZ_BOTTOMRIGHT, MAKELPARAM(point.x, point.y)); return; default: CDialog::OnNcLButtonDown( nHitTest, point ); }
相關推薦
無邊框對話方塊拖動改變大小的實現總結
UINT CTestDlg::OnNcHitTest( CPoint point ) { CPoint ptCur; CRect rect; GetCursorPos( &ptCur ); GetWindowRect( &rect ); if( CRect(rect.left, rect.
Qt 無標題無邊框程序的拖動和改變大小
又一 through poi rip 有時 target ram internal 以及 最近做項目遇到的問題,總結下。 有時候我們覺得系統的標題欄和按鈕太醜太呆板,想做自己的標題欄以及最大化、最小化、關閉,菜單按鈕,我們就需要 [cpp] view p
WPF無邊框視窗滑鼠拖動縮放大小
通常,我們會 通過AllowsTransparency=”True”、 WindowStyle=”None” 這兩個屬性將wpf視窗的邊框去掉,由於邊框沒了,我們就不能通過滑鼠指標懸停在某一邊上拖動改變視窗的大小,此時若要能調整視窗大小,官方倒也提供了個屬性:R
C# 鼠標點擊移動窗體代碼,可以實現無邊框窗體的拖動
點擊 obj cat += tar sender see sed false private static bool IsDrag = false; private int enterX; private int enterY;
矩形拖拽移動,四個角拖動改變大小
http enter pos 變化 tails per posit ems sca 原創是https://blog.csdn.net/liujava621/article/details/30495103,我這裏做了修改,侵權刪。 上幹貨:這裏首先要註意操作四個角的時候,框
C#Winform實現無邊框窗體滑鼠拖動
在有時候我們為了實現軟體的美觀,我們需要把窗體的邊框隱藏,但是問題也會隨之而來,在屬性中設定了FormBorderStyle應該為None,邊框便可以隱藏,但是我們在使用軟體時卻無法拖動窗體,
MFC----視窗的縮放及控制元件隨拖動改變大小
當我們想得到一個視窗物件(CWnd的派生物件)指標的控制代碼(HWND)時,最安全的方法是使用GetSafeHwnd()函式,通過下面的例子來看其理由: CWnd *pwnd = FindWindow(“ExploreWClass”,NULL); //希望找到資源管理器 HWND hwnd = pwn
QT自定義視窗(無邊框,自由拖動)
做專案中為了美觀,很少使用QT自帶的標題欄,取消邊框,自己實現邊框。自定義視窗,主要通過滑鼠事件實現。重寫QT視窗事件,具體參考程式碼註釋。 #ifndef CUSTOMWINDOW_H #defi
36.QT-解決無邊框界面拖動卡屏問題(附帶源碼)
mil eight lac drag left 界面 的人 else 動手 1.簡介 看到很多才學QT的人都會問為啥無邊框拖動為啥會花屏? 那是因為你每次拖動的過程中都一直在調用move()函數讓QT重新繪制界面,如果資源過大,就會導致當前圖形還未繪制完,便又重
1.6.2 簡單自繪控制元件——無邊框對話方塊最小化按鈕
1、準備PNG檔案: 2、插入Static Text 控制元件,並將其設定在視窗右上角 CRect rect; GetClientRect(rect); //獲取對話方塊大小 CWnd *pWnd; pW
c++builder如何通過滑鼠拖動改變無邊框窗體的大小(bsnone)
在C++Builder中,將Form的BorderStyle設為bsNone以後該窗體將沒有邊框,不能改變窗體大小,也不能拖動窗體。那麼如何拖動及用滑鼠改變無邊框窗體大小呢?拖動無邊框窗體的解決方法很多,例如:1. 向窗體傳送WM_NCLBUTTONDOWN訊息,LParam = HTCAPTION2. 向窗
轉載 * jQuery實現動態分割div—通過拖動分隔欄實現上下、左右動態改變左右、上下兩個相鄰div的大小
鼠標 動態改變 win 上下 key mousedown pre console ati 由jQuery實現上下、左右動態改變左右、上下兩個div的大小,需要自己引入jquery1.8.0.min.js包 可用於頁面布局。 //======================
jQuery外掛來調整表列的大小colResizable.js 拖動改變單元格寬度
jQuery外掛來調整表列的大小 效果圖: colResizable colResizable是一個免費的jQuery外掛,旨在通過手動拖動列錨點來增強任何型別的HTML表物件,從而增加列重新調整大小的功能。它相容滑鼠和觸控裝置,並具有一些
[MFC] 無邊框視窗的Resize拖動效果的實現(下):子視窗覆蓋,導致主視窗熱點區無法響應WM_NCHITTEST
這篇博文講解了如何實現無邊框視窗的Resize拖動效果,文中提到,需要響應主視窗的WM_NCHITTEST訊息,檢測滑鼠是否在resize熱點區並返回HTTOPLEFT、HTBOTTOM等相應的結果。
Android:圖片中疊加文字,支持拖動改變位置
ear nal format wrap trace ast 分享 gravity ica 之所以做了這麽一個Demo,是由於近期項目中有一個奇葩的需求:用戶拍攝照片後,分享到微信的同一時候加入備註,想獲取用戶在微信的彈出框輸入的內容。保存在自己的server上。而其實,
Win10無邊框對話框加陰影
窗口陰影網上給無邊框加陰影就是那個著名的類WndShadow,在XP上直接使用,很方便。但是Win10上直接用沒有效果。將對話框的style設為popup,title bar設為false。然後添加如下代碼:int CMFCApplication1Dlg::OnCreate(LPCREATESTRUCT lp
duilib中list拖動表頭大小內容大小跟隨變化的一個示例
偶爾有群裡的朋友在問duilib的List拖動列表頭時內容大小如何跟隨變化。我這邊用新版的duilib程式碼測試是沒有問題。 duilib官方程式碼倉庫https://github.com/duilib/duilib 個人的修改的程式碼的倉庫:https://github.com/juh
DevExpress Treelist 同一個樹上拖動 改變順序
using DevExpress.XtraTreeList; using DevExpress.XtraTreeList.Nodes; private void treeList1_DragDrop(object sender, System.Windows.Forms.DragEventA
VS2012使對話方塊透明和改變對話方塊背景顏色或圖片背景
在Dlg標頭檔案中public加入: CBrush m_bkBrush; afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); // 在OnInitDialog()中 建立一把黃色的背景
js 實現table每列可左右拖動改變列寬度
<!DOCTYPE HTML> <html> <head> <meta charset="gbk"> <title>table</title> </head> <bod