WINDOWS視窗的用戶端區域拖動技術及其應用

來源:互聯網
上載者:User

WINDOWS應用程式視窗一般包括兩種:普通視窗和常居頂層的無標題條進階視窗。前者是由WINDOWS內部功能定製的,它具有WINDOWS應用程式視窗的所有普通特性:具有標題條、視窗邊框、最大化按鈕、最小化按鈕和系統預設的快速鍵及滑鼠支援功能等,利用滑鼠左鍵拖動該種視窗的標題條可以在螢幕上任意移動視窗,當滑鼠游標停在視窗邊框上時可以改變視窗大小;後者是一種定製的進階視窗,它不具有普通視窗的任何屬性,整個視窗的控制必須由編程者來一一確定,使用這種視窗的典型執行個體有WINDOWS中的IMEIME應用程式、UCWIN4.0平台、各種浮動工具箱、OFFICE中的桌面工具列和第三方開發的漢字輸入平台等。

WINDOWS 這種無標題條常居頂層進階視窗的一個顯著特點是,不需改變視窗大小但必須具有視窗的用戶端區域拖動功能。由於普通視窗的拖動功能是由系統來完成的,編製普通的應用程式根據無須考慮用戶端區域拖動問題,因此一般編程人員很難遇到這個問題,更談不上如何?這一功能了。開發人員往往希望自己開發出來的軟體具有經典軟體中的視窗用戶端區域拖動功能,筆者曾經利用模仿系統滑鼠點擊標題條拖動視窗和WINDOWS系統內部提供的API發送函數發送內部拖動命令來實現無標題常居頂層進階視窗的客戶拖動功能,結果都不理想。後來只好在視窗函數中通過直接處理WM_LBUTTONDOWN、WM_MOUSEMOVE和WM_LBUTTONUP訊息,自行控制視窗拖動的客戶命令區、拖動開始、視窗移動、拖動虛框繪製、虛框移動和拖動結束等過程,來實現進階頂層視窗的用戶端區域拖動方案。下面就自己實踐經驗詳細介紹實現該方案的具體方法和主要技巧。

一、WINDOWS檢測客戶拖動命令及滑鼠游標動態提示的實現方法

WINDOWS 無標題條常居頂層進階視窗的用戶端區域一般分為兩種:特定客戶命令地區和非特定客戶命令地區。特定客戶命令地區是指利用"RECT"定義的特定子矩形地區,視窗函數對發生在該地區內的滑鼠命令進行檢測並處理;非特定客戶命令地區是指沒有明確定義的視窗用戶端區域部分,即所有特定客戶命令地區之外的部分,視窗函數根據實際需要來確定是否對該地區內發生的滑鼠命令進行處理。實現常居頂層進階視窗拖動功能的首要問題,是如何檢測和處理特定客戶命令地區和非特定客戶命令地區內的滑鼠命令,以及如何利用滑鼠游標來動態提示使用者此時可以進行視窗的拖動操作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.