設定焦點注意

2021-07-24 15:13:45 字數 891 閱讀 2958

我們常常會有這樣的需求,想在視窗開啟的時候就將焦點(游標)設定到某個指定的控制項上去。

我們都知道設定焦點需要用到setfocus這個方法(幾乎任何程式設計環境都這樣vc,c#,vb,vf都這樣)。

但在vc中我們使用了getdlgitem(idc_xx)->setfocus()並不一定會達到我們需要的效果。

如果我們僅僅設定了setfocus()那是不夠的,我們還需要將對話方塊中的oninitdialog的最後那句return設定為"false";

我曾經在對話方塊中對各個控制項的輸入進行校驗檢測,當檢測到不滿足要求的輸入則會彈出對話方塊提示。

我本來的目的是彈出提示框,但確定後回到窗體中後就將焦點和游標設定到對應的控制項上,結果死都上不去。

一開始我以為是setfocus的設定無效,後面發現是邏輯上錯了,因為當提示框顯示的時候,在提示框彈出前通過setfocus設定的焦點都將作廢。

發現這一點後,我將彈出提示框前需要設定獲得焦點的目標控制項儲存起來,等提示框顯示完了我仍然可以對該控制項進行設定焦點的操作,問題總算解決了。

這裡寫出來,希望大家不要走我這樣的彎路哦!

順便說一下如何獲取到焦點所在的控制項的id號,也許這對大家操作焦點所在控制項有作用;

mfc::

cwnd *pwnd = getfocus(); 

if(pwnd == null)

;//no focus

else

uint nid = pwnd->getdlgctrlid();

sdk:

hwnd hwnd = ::getfocus();

if(hwnd == null)

;//no focus 

else

uint nid = ::getdlgctrlid(hwnd);

Qt設定回車焦點

ui.pushbutton setfocus 設定預設焦點 ui.pushbutton setshortcut qkeysequence insertparagraphseparator 設定快捷鍵為鍵盤的 回車 鍵 ui.pushbutton setshortcut qt key enter 設定...

WinForm設定控制項焦點focus

winform視窗開啟後文字框的預設焦點設定,進入視窗後預設聚焦到某個文字框,兩種方法 設定tabindex 把該文字框屬性裡的tabindex設為0,焦點就預設在這個文字框裡了。winform的activated事件 在form的activated事件中新增textbox1.focus 即可獲得焦...

android中設定控制項獲得焦點

android中,要使控制項獲得焦點,需要先setfocus,再requestfocus。以button為例 btn.setfocusable true btn.setfocusableintouchmode true btn.requestfocus btn.requestfocusfromtou...