C WPF 實現滑鼠固定在指定範圍內運動

2021-09-07 20:10:04 字數 2640 閱讀 3170

原文:

c# wpf 實現滑鼠固定在指定範圍內運動

需要實現帶有三個螢幕,三個螢幕分別顯示窗體,但滑鼠只能在主窗體中運動,不能移動到其他的兩個附屏中。

具體實現使用的是user32.dll下的getwindowrect(int hwnd, ref

rect lprect)函式。

clipcursor,函式名。該函式把滑鼠限制在

螢幕上的乙個矩形區域內,如果呼叫setcursor或用滑鼠設定的乙個隨後的滑鼠位置在該矩形區域的外面,則系統自動調整該位置以保持滑鼠在矩形區域之內。

bool clipcursor(

const rect * lprect

);引數

iprect:指向

rect

結構的指標

,該結構包含限制矩形區域左上角和右下角的

螢幕座標,如果該指標為null(空),則滑鼠可以在螢幕的任何區域移動。

1.游標是乙個共享資源,如果乙個應用控制了滑鼠,在將控制轉向另乙個應用之前,必須要使用

clipcursor

來釋放滑鼠,該呼叫過程必須具有對視窗的

winsta_writeattributes

訪問權。

2.此函式為

api函式,呼叫時要函式宣告:

private declare function clipcursor lib "user32" (lprect as any) as long

速查:windows nt:

3.1及以上版本;

windows:95

及以上版本;

windows ce

:不支援;標頭檔案:

winuser.h

;庫檔案;

user32.lib。

我主要實現的是限定螢幕,所以提供的介面直接和螢幕有關,其他的具體情況具體分析。

using system;

using system.linq;

using system.runtime.interopservices;

namespace tool.clipcursor

class

clipcursorhelper

[dllimport("user32.dll")]

static

extern

bool clipcursor(ref

rect lprect);

[system.runtime.interopservices.dllimport("user32.dll", entrypoint = "getwindowrect")]

extern

static

int getwindowrect(int hwnd, ref

rect lprect);

public

struct

rect

public

int left;

public

int top;

public

int right;

public

int bottom;

public rect(int32 left, int32 top, int32 right, int32 bottom)

left = left;

top = top;

right = right;

bottom = bottom;

///

///設定滑鼠顯示在主屏範圍內

//////

public

static

bool setcursorinprimaryscreen()

system.windows.forms.screen screen = system.windows.forms.screen.allscreens.orderby(t => t.workingarea.x).first();

rect rect = new

rect(screen.bounds.x, screen.bounds.y, screen.bounds.right+screen.bounds.x, screen.bounds.bottom);

return clipcursor(ref rect);

///

///恢復滑鼠顯示,可以所以螢幕的任何位置

//////

public

static

bool default()

system.windows.forms.screen screen = system.windows.forms.screen.allscreens.orderbydescending(t => t.workingarea.x).first();

rect rect = new

rect(0, 0, screen.bounds.right+ screen.bounds.x, screen.bounds.bottom);

return clipcursor(ref rect);

1、在除錯過程中發現每次窗體切換(如生成新的窗體),滑鼠的範圍又都返回到可以在任意位置使用,所以在每當生成窗體的時候都需要調一下上面的介面;

2、當使用alt+tab切換任務後,滑鼠的限定範圍也會不起作用,目前還無法解決;

但目前已經滿足需要,網友知道如何避免上述兩種問題的望交流學習。

CSS實現footer固定在頁面底部

作為乙個頁面仔你一定遇到過 當乙個html頁面中含有較少的內容時,web頁面的 footer 部分隨著飄上來,處在頁面的半腰中間,給視覺效果帶來極大的影響,讓你的頁面看上去很不好看,特別是現在寬屏越來越多,這種現象更是常見。那麼如何將web頁面的 footer 部分永遠固定在頁面的底部呢?先來看下下...

jQuery外掛程式實現DIV固定在頁面中

url 給力技術 url 我們瀏覽 的時候,經常能看到固定在頁面中且不會隨著滾動條滾動的div層,這樣的浮動效果可通過portamento這個jquery外掛程式實現。jquery外掛程式實現div浮動在頁面固定位置中 portamento是乙個輕量級的jquery外掛程式,它具有簡單並且容易使用的...

將footer固定在頁面底部的實現方法

html結構 header main content footer css設定 html body header main main的padding bottom值要等於或大於footer的height值 footer首先,設定body的高度至少充滿整個螢幕,並且body作為footer絕對定位的參...