複製鏈接
請複製以下鏈接發送給好友

SetFocus

鎖定
SetFocus,對指定的窗口設置鍵盤焦點。該窗口必須與調用線程的消息隊列相關。
外文名
SetFocus
功    能
對指定的窗口設置鍵盤焦點
原    型
HWND SetFocus
類    別
計算機函數

目錄

SetFocus函數介紹

函數原型:HWND SetFocus(HWND hWnd)。
參數:
hWnd:接收鍵盤輸入的窗口指針。若該參數為NULL,則擊鍵被忽略。
返回值:若函數調用成功,則返回原先擁有鍵盤焦點的窗口句柄。若hWnd參數無效或窗口未與調用線程的消息隊列相關,則返回值為NULL。若想要獲得更多錯誤信息,可以調用GetLastError函數。
備註:SetFocus函數發送WM_KILLFOCUS消息到失去鍵盤焦點的窗口,並且發送WM_SETFOCUS消息到接受鍵盤焦點的窗口。它也激活接受鍵盤焦點的窗口或接受鍵盤焦點的窗口的父窗口。
若一個窗口是活動的,但沒有鍵盤焦點,則任何按鍵將會產生WM_SYSCHAR,WM_SYSKEYDOWN或WM_SYSKEYUP消息。若VK_MENU鍵也被按下,則消息的IParam參數將設置第30位。否則,所產生的消息將不設置此位。
使用AttachThreadInput函數,一個線程可將輸入處理連接到其他線程。這使得線程可以調用SetFocus函數為一個與其他線程的消息隊列相關的窗口設置鍵盤焦點。
Windows CE:不使用SetFocus函數為一個與其他線程的消息隊列相關的窗口設置鍵盤焦點。但有一個例外。若一個線程的窗口是另一線程的子窗口,或這些窗口是具有同一父窗口的兄弟窗口,則與一個線程關聯的窗口可以為其他窗口設置焦點,儘管該窗口屬於一個不同的線程。在這種情況下,就不必先調用AttachThreadlnpUt函數。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本:Windows CE:1.0及以上版;頭文件:winuser.h;庫文件:user32.lib。
理論結合實例來演示一下:(網站的登陸後台自動獲取焦點實例)
如果網站的登陸後台有設置獲取焦點的功能的話,那麼登陸後台的時候就可以不用鼠標點擊文本框光標就會自動定位到文本框裏,當然後台登陸頁面沒有這一獲取焦點的功能的話,那麼就需要網站管理員登陸的時候用鼠標放在文本框旁邊點一下然後光標才放定位到你所需要的文本框裏面,兩者相比之下,細心的朋友肯定會覺得前者使用起來更方便實用,更人性化,那麼自動將光標定位到文本框裏的功能是如何實現的,請看下面的代碼
第一步:先定義SetFocus函數,如下,注意SetFocus函數必須包含在javascript腳本之內
<script type="text/javascript">
function SetFocus()
{
if (document.Login.UserName.value=="")//如果Login表單的名為UserName的文本框的值為空
document.Login.UserName.focus();//那麼將此文本框設置焦點,也就是將光標定位此文本框裏,等待用户輸入用户名
else
document.Login.UserName.select();
}
</script>
<form name="Login"><input name="UserName" type="text"></form>
<script type="text/javascript">
SetFocus();//調用SetFocus函數
</script>
通過以上的代碼測試你可以發現,不用鼠標光標就會自動定位到文本框裏,不過這裏有幾點是需要值的注意的:
第一:表單控件比如文本框必須包含在表單之內,否則無效
第二:表單名與表單控件比如文本框的名稱大小需要統一,在javascript客户端腳本中是區分大小寫的,如果SetFocus函數內的表單名或表單元素的名稱是大寫,而Form表單的代碼中的名稱如果是小寫的話,那麼SetFocus函數也將無效

SetFocusFlash方法

[pre]public static setFocus(newFocus:
Object) : Boolean
使 newFocus 參數指定的可選擇(可編輯)文本字段、按鈕或影片剪輯獲得焦點。如果傳遞 null 或則刪除當前焦點。 [1] 

SetFocus可用性

ActionScript 1.0、Flash Player 5 , 按鈕和影片剪輯的實例名稱僅在 Flash Player 6 及更高版本中有效。

SetFocus參數

newFocus:Object ― 一個對象(例如,某個按鈕、影片剪輯或文本字段實例),或者是一個字符串,該字符串指定某個按鈕、影片剪輯或文本字段實例的路徑。如果您傳遞指定路徑的字符串,請將該路徑置於引號內 (" ")。可以使用點或斜槓記號指定路徑。如果要使用 ActionScript 2.0,則必須使用點符號表示。可以使用相對路徑或絕對路徑。

SetFocus返回

Boolean ― 一個布爾值;如果獲得焦點成功,則為 true;如果失敗,則為 false。

SetFocus示例

在下面的示例中,當文本字段在瀏覽器窗口中運行時,它將在 username_txt 文本字段上獲得焦點。如果用户未填寫某個必需文本字段(username_txt 和 password_txt),則光標將自動將焦點定位在缺少數據的文本字段中。例如,如果用户未在 username_txt 文本字段中鍵入任何內容,則在單擊姨嶠揮按鈕時,將出現一條錯誤消息,而且光標在 username_txt 文本字段中獲得焦點。
[pre]this.createTextField("status_txt", this.getNextHighestDepth(), 100, 70, 100, 22);this.createTextField("username_txt", this.getNextHighestDepth(), 100, 100, 100, 22);this.createTextField("password_txt", this.getNextHighestDepth(), 100, 130, 100, 22);this.createEmptyMovieClip("submit_mc", this.getNextHighestDepth());submit_mc.createTextField("submit_txt", this.getNextHighestDepth(), 100, 160, 100, 22);submit_mc.submit_txt.autoSize = "center";submit_mc.submit_txt.text = "Submit";submit_mc.submit_txt.border = true;submit_mc.onRelease = checkForm;username_txt.border = true;password_txt.border = true;username_txt.type = "input";password_txt.type = "input";password_txt.password = true;Selection.setFocus("username_txt");//function checkForm():Boolean {if (username_txt.text.length == 0) {status_txt.text = "fill in username";Selection.setFocus("username_txt");return false;}if (password_txt.text.length == 0) {status_txt.text = "fill in password";Selection.setFocus("password_txt");return false;}status_txt.text = "success!";Selection.setFocus(null);return true;}
此示例中使用的 MovieClip.getNextHighestDepth() 方法要求 Flash Player 7 或更高版本。如果您的 SWF 文件包括第 2 版的組件,請使用第 2 版組件的 DepthManager 類代替 MovieClip.getNextHighestDepth() 方法。

SetFocusVB方法

將焦點移至指定的控件或窗體。

SetFocus語法

object.SetFocus
object 所在處代表對象表達式,其值是“應用於”列表中的一個對象。

SetFocus説明

對象必須是 Form 對象、MDIForm 對象或者能夠接收焦點的控件。調用 SetFocus 方法以後,任何的用户輸入將指向指定的窗體或控件。
焦點只能移到可視的窗體或控件。因為在窗體的 Load 事件完成前窗體或窗體上的控件是不可視的,所以如果不是在 Form_Load 事件過程完成之前首先使用 Show 方法顯示窗體的話,是不能使用 SetFocus 方法將焦點移至正在自己的 Load 事件中加載的窗體的。
也不能把焦點移到 Enabled 屬性被設置為 False 的窗體或控件。如果已在設計時將 Enabled 屬性設置為 False,必須在使用 SetFocus 方法使其接收焦點前將 Enabled 屬性設置為 True
可使用SetFocus的部分控件
1.MDI窗體。
2.窗體
3.ADODATA 控件
4.Animation 控件
5.CheckBox 控件
6.ComboBox 控件
7.CommandButton 控件
8.所有數據(Data)控件
9.DateTimePicker 控件
10.DirListBox 控件
11.DriveListBox 控件
12.FileListBox 控件
13.HScrollBar 、VScrollbar 控件
14.FlatScrollbar 控件
15.ListBox 和 ListView 控件
16.TextBox 控件
17.Imagecombo 控件
18.Masked Edit 控件
19.OLE 容器控件
20.MSFlexGrid 和 MSHFlexGrid 控件(別把兩個控件混一起了)
21.OptionButton 控件
22.PictureBox 控件
23. 屬性頁對象(Property Page )
24.RichTextBox 控件
25.Silder 控件
26. 用户自定義控件對象 (UserControl )
27.ActiveX 文檔 (UserDocument)
28.TabStrip 控件
29.TreeView 控件
30.updown 控件
31.Window 對象
參考資料