視窗禁用和啟用函式

2021-06-18 06:19:28 字數 1116 閱讀 9543

在非mfc環境中如何使控制項或者視窗禁用呢?起初是想通過傳送訊息來實現,但找來找去都木有找到控制項禁用的訊息(也是是博主木有找到的緣故),所以只能另闢蹊徑,使用

enablewindow這個函式,

該函式的函式功能為:允許/禁止指定的視窗或控制項接受滑鼠和鍵盤的輸入,當輸入被禁止時,視窗不響應滑鼠和按鍵的輸入,輸入允許時,視窗接受所有的輸入。

下面是它的函式原型:bool enablewindow(hwnd hwnd,bool benable);

引數:hwnd:被允許/禁止的視窗控制代碼。

benable:定義視窗是被允許,還是被禁止。若該引數為true,則視窗被允許。若該引數為false,則視窗被禁止。

返回值:如果視窗原來是被禁止的,返回值不為零;如果視窗原來不是被禁止的,返回值為零。若想獲得更多的錯誤資訊,可呼叫getlasterror函式。

備註:若視窗的允許狀態將發生變化,wm_enable訊息將在enblewindow函式返回前傳送出去,若視窗已已被禁止,它所有的子視窗也被禁止,儘管並未向子視窗傳送wm_enable訊息。

視窗被啟用前必須處於允許狀態。比如,乙個應用程式將顯示乙個無模式對話方塊並且已使該對話方塊的主視窗處於禁止狀態,則在撤消該對話方塊之前須使其主視窗處於允許狀態。否則,其他視窗將接受並被啟用。若子視窗被禁止,則系統決定由哪個視窗接受滑鼠訊息時將忽略該視窗。

預設情況下,視窗被建立時被置為允許。若建立乙個初始化為禁止狀態的視窗,應用程式需要在ceatewindow或ceatewindowex函式中定義ws_disabled樣式。視窗建立後,應用程式可用enblewindow來允許禁止視窗。

應用程式可利用此函式允許/禁止對話方塊中的某個控制項。被禁止的控制項既不能接受鍵盤輸入,也不能被使用者訪問。

以上就是對這個函式的全部描述了,博主要指出的是在這個函式的兩個引數中,主要是第乙個引數視窗控制代碼的獲取,由於在非mfc環境中,所以需通過父視窗控制代碼來獲得控制項的控制代碼:

::getdlgitem(m_hwnd,idc_button_del);   // idc_button_del就是控制項的id

下面來談談下m_hwnd這個引數,mfc的視窗類均派生自cwnd類,而cwnd類持有乙個hwnd型別的成員m_hwnd,hwnd是win32視窗控制代碼型別。隨意每個視窗類都有這麼乙個成員變數來記錄本視窗的控制代碼。

網絡卡禁用和啟用

2010 11 10 21 34 23 include include include setupapi.h include objbase.h include pragma comment lib,setupapi.lib void enumdevices hdevinfo hdevinfo lp...

BGP 啟用和禁用同步

bgp規定 為了防止路由環路,bgp路由器不通告從ibgp鄰居得到的路由。因此,如果bgp網路沒有實現全互聯,那麼直接相連的ibgp鄰居與非直接相連的ibgp鄰居的路由表不可能保持一致。在非全互聯ibgp網路中,將bgp路由重分發到igp中,當igp已經將這些路由通告到本自主系統的全部ibgp路由器...

小記 Touchpad 禁用和啟用

最近上課要揹著電腦到處跑,不能帶外接鍵盤,打字時候總會碰到觸控版導致游標亂飄,看了下wiki,發現有簡單的命令開啟或者禁用觸控版,記錄如下 禁用 synclient touchpadoff 1 啟用 synclient touchpadoff 0 如果提示上述命令不存在,請安裝驅動,archlinu...