亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果對話框上按鈕多,豈不是要為每個按鈕(控件)都添加消息處理函數?

如果對話框上按鈕多,豈不是要為每個按鈕(控件)都添加消息處理函數?

C++ C
嗶嗶one 2023-04-22 18:14:43
是這樣的,在VC中,如果一個Dialog上有多個按鈕,則每雙擊一個按鈕,就會自動添加與之對應的消息,比如:OnBnOKClick(),然后,在對話框類,加上了public的afx_msg,以及在實現*.cpp里,添加了消息映射但是,如果對話框上按鈕多,豈不是要為每個按鈕(控件)都添加消息處理函數?能不能為每個同類型的控件,比如按鈕,都映射同一個消息函數,(比如我自己添加的BtnClicked()),根據按鈕的ID號來進行判斷,當前按下的是哪個按鈕并處理?我試過了,用以下方法,沒有任何反應:void CDemoDlg::BtnClicked(){switch(GetCtlID()){case ONOK:MessageBox("按下的OK按鈕");break;case ONCANCEL:MessageBox("按下的CANCEL按鈕");break;}}有其他辦法嗎?還請各位前輩不吝賜教為謝!
查看完整描述

3 回答

?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

ON_CONTROL_RANGE(BN_CLICKED, 1000, 1005, OnButton)//1000-1005是上面自動添加的按扭ID
在H文件“protected:”下面加上
afx_msg void OnButton(UINT ID);
在CPP文件寫上函數體:
void Form::OnButton(UINT ID)
{
switch(ID)
{
case 1000:
MessageBox("你按了第一個按扭。");
break;
case 1001:
MessageBox("你按了第二個按扭。");
break;
}
}

關鍵在于ON_CONTROL_RANGE咋個宏 

查看完整回答
反對 回復 2023-04-26
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

添加虛函數DefWindowProc

LRESULT CDemoDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
if (message==WM_COMMAND)
{
//wID就是按鈕控件的id,一般你的按鈕id最好是連續的在一個范圍內,
然后只要id在這個范圍內,我們就認為是按鈕的消息,否則是其他控件
發出的消息
int wID =LOWORD(wParam);

}

return CDialog::DefWindowProc(message, wParam, lParam);
}

 


查看完整回答
反對 回復 2023-04-26
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

我也遇到過類似問題,可能是ACCESS支持的不好吧,
我的解決辦法是還是分而治之,我定義了幾個CRecordSet類,每個CRecordSet類對應數據庫的一張表,程序中要更新數據的時候,分開來對各個CRecordSet類操作。

查看完整回答
反對 回復 2023-04-26
  • 3 回答
  • 0 關注
  • 251 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號