windows程式設計15 其他控制項的事件處理

2021-10-03 04:06:13 字數 2549 閱讀 1174

在實際開發中,我們往往需要知道哪個按鈕被選中了,才能進行下一步的操作。例如對於一組單選按鈕,只有乙個選項能被選中,最好的辦法是將這組按鈕作為引數傳入乙個函式,通過函式返回值判斷哪個按鈕被選中了。

但遺憾的是,在windows中不能一次性獲得一組按鈕的選中狀態,只能乙個乙個地遍歷。核取方塊也是如此。

可以通過sendmessage函式傳送bm_getcheck訊息來獲取按鈕的選中狀態,返回 bst_checked 表示按鈕被選中,返回 bst_unchecked 是未被選中。

sendmessage 原型為:

lresult winapi sendmessage

( hwnd hwnd,

//視窗(控制項)控制代碼

uint msg,

//訊息型別

wparam wparam,

//附加訊息1

lparam lparam //附加訊息2

);

注意:傳送 bm_getcheck 訊息時,wparam 和 lparam 兩個引數必須都為 0。

下面的**會判斷乙個按鈕是否被選中。如果被選中,那麼會獲取按鈕文字並儲存到緩衝區:

if

(sendmessage

(hcheckbox, bm_getcheck,0,

0)== bst_checked )

請看**:

lresult callback wndproc

(hwnd hwnd, uint message, wparam wparam, lparam lparam)

;//儲存性別

static tchar szbufpeopletype[10]

=;//人物型別

static tchar szbufcando[

100]=;

//會什麼

static tchar szbuftemp[4]

=;//會什麼

static hwnd m_eathwnd;

static hwnd m_drinkhwnd;

static hwnd m_lahwnd;

static hwnd m_sahwnd;

static hwnd m_yellowhwnd;

switch

(message)

break

;case wm_ctlcolorstatic:

break

;case wm_command:if(

sendmessage

(m_drinkhwnd, bm_getcheck,0,

0)== bst_checked)if(

sendmessage

(m_lahwnd, bm_getcheck,0,

0)== bst_checked)if(

sendmessage

(m_sahwnd, bm_getcheck,0,

0)== bst_checked)if(

sendmessage

(m_yellowhwnd, bm_getcheck,0,

0)== bst_checked)

break

;case

1001

://按下按鈕

//更改文字框的內容

;getwindowtext

(m_edit1, buf1,24)

; wchar_t buf2[4]

=;getwindowtext

(m_edit2, buf2,4)

; wchar_t buf3[32]

=;wsprintf

(buf3, l"姓名:%s\n年齡:%s"

, buf1, buf2)

;

tchar buf[

128]=;

wsprintf

(buf, l"%s\n性別:%s\n人物型別:%s\n會做:%s\n"

, buf3, szbuf***, szbufpeopletype, szbufcando)

;messagebox

(null

, buf,

text

("提示"),

0);}

break

;default

:break;}

}switch

(wmid)

}break

;//視窗銷毀訊息

case wm_destroy:

//釋放資源

deleteobject

(m_font)

;//刪除建立的字型

postquitmessage(0

);return0;

}return

defwindowproc

(hwnd, message, wparam, lparam)

;}

結果:

Windows介面程式設計 控制項問題

windows介面程式設計過程中,有些控制項需要初始化才能使用,下面列舉了需要初始化的控制項。初始化函式 initcommoncontrol icex initcommoncontrols 需要初始化的控制項 animate icc animate class statusbar,trackbar,...

Android 控制項其他屬性

android中所有控制項的屬性 屬性值 true 或者 false 1,設定視窗 設定是否在視窗凍結時 如旋轉螢幕 儲存view的資料 設定布局調整時是否考慮系統視窗 如狀態列 設定螢幕常亮 屬性值必須為id的引用名 id id name 2,id 說明 為布局新增id方便查詢 為布局新增tag方...

iOS觸控其他控制項彈回鍵盤

當gesture作用在controller的view時,可以用touchesbegan withevent 來彈回鍵盤。但如果介面上有很多個其他控制項,遮住了controller的view時怎麼彈回鍵盤呢,可以在viewdidload中自定義乙個手勢,再加入自己的hidden方法 uitapgest...