看板 Visual_Basic 關於我們 聯絡資訊
我想請問一個問題 小弟最近用vb6寫了一個鎖定滑鼠於某特定視窗的小軟體(套用後滑鼠不會跑出視窗外) 不過遇上了一個問題想來這邊請教一下(orz_) 先說明一下,我的開發環境是VB6+XP 雖然自己封裝成exe自用是沒有問題,(也換過別台測過OK) 但有些板上的鄉民(使用win7)提出了這樣的問題 就是視窗的上緣高度不正確,導致玩游戲的時候沒辦法正常運作 用程式面的角度來講: 我用 Findwindow 取得了某視窗的 hWnd 再用 GetWindowRect 取得他的大小放在Rect裡(包含上、下、左、右的type) 因為這個Rect的寬度與高度會包含視窗的邊框(frame)還有標題列(menu)等...。 所以我會在限制之前,先將Rect扣掉這些數值,微調後才變成真正去限制的範圍大小 在此,針對視窗微調的部分說明如下 With NewRect .Left = .Left + MySM.CXFRAME + MySM.CYBORDER .Top = .Top + MySM.CYMENU + (MySM.CYFRAME +MySM.CYBORDER) * 2 .Right = .Right - MySM.CXFRAME .Bottom = .Bottom - MySM.CXFRAME End With ================================================================ With NewRect .Left = .Left + MySM.CXFRAME + MySM.CYBORDER .Top = .Top + MySM.CYCAPTION + MySM.CYFRAME .Right = .Right - MySM.CXFRAME .Bottom = .Bottom - MySM.CXFRAME End With 新的寫法,原來是我取錯參數了,標題列是caption, MENU不知道是不是『開始』那邊的高度 另外,偶然的機會找到了一個叫API-Guide的工具,上面的寫法比我更精簡(果然人外有人) 下面是他的寫法,用了三種跟我不同的api,但我全部九行,他五行 '==得到目標視窗client的左上點位置 GetClientRect hWnd, NewRect UpperLeft.X = NewRect.left UpperLeft.Y = NewRect.top '轉換目標視窗的左上點位置成為全螢幕的點位置(微調) ClientToScreen hWnd, UpperLeft '將NewRect左上角定位到新的點 OffsetRect NewRect, UpperLeft.X, UpperLeft.Y -- 漫長的RD之路~ 終點站等著我的是...... 另一種新語言誕生~..........by DG~ ※ 編輯: DGnzj 來自: 112.104.209.166 (02/23 20:45)