在powerbuilder圖片控制元件中,有一個powertiptext屬性,當滑鼠移動到圖片上停留幾秒后,系統會自動以tip的形式顯示powertiptext屬性中定義的內容。想請教各位高手,如果不將滑鼠移動到圖片上,而是通過別的代碼,比如點擊另外一個按鈕,觸發clicked事件,在clicked事件中編程實作以上效果,該怎么做呢,send函式或有什么方法可以實作呢,望各位高手不吝賜教,千恩萬謝~\(≧≦)/~啦啦啦
uj5u.com熱心網友回復:
可以實作`因為windows是訊息機制驅動`pb當然也是`具體對應哪個訊息id你自己要查一下`通過獲取圖片的句柄,發送訊息過去.
uj5u.com熱心網友回復:
模擬滑鼠按鈕,用mouse_event,模擬滑鼠移動上去不就Ok了?uj5u.com熱心網友回復:
就是不知道是哪個,傳遞哪些引數,才請教的,望高手不吝賜教
uj5u.com熱心網友回復:
望高手不吝賜教,說的詳細具體些,怎么寫代碼
uj5u.com熱心網友回復:
你手工把滑鼠放到那個按鈕上,就會顯示powertiptext,你研究一下mouse_event,模擬把滑鼠移動到那個按鈕,然后就和手工移的效果是一樣的,不就可以了嗎?
uj5u.com熱心網友回復:
Mouse_event()來模擬滑鼠操作在自動化測驗的開發中,有一些控制元件的ID是很難找到的,所以有些時候,我們直接設定滑鼠的位置,然后是用click事件,會收到很好的效果。在Windows API中有個mouse_event函式為我們準備好了這一切。
這個函式在user32.dll這個庫檔案里面。我們可以在C:\WINDOWS\system32(XP系統)這個目錄下找到這個檔案,他是系統自帶的。 我們以C#直接呼叫這個檔案中的API為例子來說下怎么進行滑鼠操作,首先在我們C#中宣告參考,如果是一個基于From的程式,這個宣告的位置寫在你的From class就可以了
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
引數 意義
dwFlags Long,下表中標志之一或它們的組合
dx,dy Long,根據MOUSEEVENTF_ABSOLUTE標志,指定x,y方向的絕對位置或相對位置
cButtons Long,沒有使用
dwExtraInfo Long,沒有使用
dwFlags常數 意義
const int MOUSEEVENTF_MOVE = 0x0001; 移動滑鼠
const int MOUSEEVENTF_LEFTDOWN = 0x0002; 模擬滑鼠左鍵按下
const int MOUSEEVENTF_LEFTUP = 0x0004; 模擬滑鼠左鍵抬起
const int MOUSEEVENTF_RIGHTDOWN = 0x0008; 模擬滑鼠右鍵按下
const int MOUSEEVENTF_RIGHTUP = 0x0010; 模擬滑鼠右鍵抬起
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; 模擬滑鼠中鍵按下
const int MOUSEEVENTF_MIDDLEUP = 0x0040; 模擬滑鼠中鍵抬起
const int MOUSEEVENTF_ABSOLUTE = 0x8000; 標示是否采用絕對坐標
程式中我們直接呼叫mouse_event函式就可以了
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0);
1、這里是滑鼠左鍵按下和松開兩個事件的組合即一次單擊:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
vb用法
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
2、模擬滑鼠右鍵單擊事件:
mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )
VB用法
mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
3、兩次連續的滑鼠左鍵單擊事件 構成一次滑鼠雙擊事件:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
4、使用絕對坐標
MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0
需要說明的是,如果沒有使用MOUSEEVENTF_ABSOLUTE,函式默認的是相對于滑鼠當前位置的點,如果dx,和dy,用0,0表示,這函式認為是當前滑鼠所在的點。
5、直接設定絕對坐標并單擊
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
其中X,Y分別是你要點擊的點的橫坐標和縱坐標
uj5u.com熱心網友回復:
模擬滑鼠按鈕,用mouse_event,模擬滑鼠移動上去不就Ok了?
望高手不吝賜教,說的詳細具體些,怎么寫代碼
你手工把滑鼠放到那個按鈕上,就會顯示powertiptext,你研究一下mouse_event,模擬把滑鼠移動到那個按鈕,然后就和手工移的效果是一樣的,不就可以了嗎?
多謝高手耐心指點,你給出的方法可以用setcursorpos這么一個api函式解決,但是問題是,我想在滑鼠點擊樹圖節點時,在旁邊的圖片上自動顯示tip,滑鼠位置依然位于我點擊的樹圖節點的位置,不進行任何移動。請教高手,該怎樣呢
uj5u.com熱心網友回復:
自己用api函式畫一個像tip的框放在那個位置吧轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/52538.html
標籤:控件與界面
