求助MFC问题 各位,想问一下,在MFC中,如何使,比如说4个按钮控件,响应同一个函数.我目前在做一个计算器,我想把上面的1,2,3...9全部用一个函数来进行处理.那么,如何获得控件的ID呢?我的想法是根据不同的ID值,来显示不同的值.还请各位赐教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我晕,方法有多种:1 每个按钮进行消息响应,然后在每个函数里处理同一个函数就可以了,比如: CXX::YourOnlyOneFun(参数1, ...) { // do something } CXX::OnOne() { YourOnlyOneFun(参数1,...); } CXX::OnTwo() { YourOnlyOneFun(参数2, ...); } //...2 响应OnCommand(WPARAM wParam, LPARAM lParam) { switch() { //... } ..// } ON_CONTROL_RANGE,赞啊,呵呵.那么我还想问下,如何在点击一个按钮时获取其ID或者能唯一标示它的参数 ON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CMyDialog::OnButtonClicked( UINT nID ){ if ( IDC_BUTTON1 == nID ) ....} 注意: IDC_BUTTON1 ~ IDC_BUTTON10 的值(打开resource.h查看/编辑) 必须要连续 回4楼:你不想有太多函数就响应OnCommand消息,反正COMMAND消息都会进来的另外:一个界面中能有多少个控件??10个?20个?我倒觉得这样代码会更直观一些 10个按钮?10个按钮的ID要连续,一气呵成。可以检查resource.h的确认。把下面的代码,手动拷贝到你的程序中。xxxxx.cppON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CYourDialog::OnButtonClicked( UINT nID ){ int nButton = nID - IDC_BUTTON1; //从按钮取0,1,2,。 ASSERT( nButton >= 0 && nButton < 10 ); // ...}xxxxxxxxxxxxxxxx.hafx_msg void OnButtonClicked( UINT nID ); 10个按钮?10个按钮的ID要连续,一气呵成。可以检查resource.h的确认。把下面的代码,手动拷贝到你的程序中。xxxxx.cppON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CYourDialog::OnButtonClicked( UINT nID ){ int nButton = nID - IDC_BUTTON1; //从按钮取0,1,2,。 ASSERT( nButton >= 0 && nButton < 10 ); // ...}xxxxxxxxxxxxxxxx.hafx_msg void OnButtonClicked( UINT nID ); 9楼的,不好意思,加分加错了,本来那个15分是给你的,sorry 求VC DWORD转LPBYTE函数 自动扫雷 设计许可证问题 怎样得到CRichEditCtrl控件的行距?(100分) 请问打开一个工程时弹为什么出“visual sourcesafe login"对话框? 沙漏光标上下不停翻转是如何实现的? 谈谈你对Internet的理解!(来者有分) nyf文件使用什么东西打开? 在单文档结构中怎么去掉标题栏得文档名? 关于侯捷书的问题,很急,请大家知道的还请回答 请教 VC 自定义模板问题 请教各位大大通常怎么查找跟分割CString字符串
1 每个按钮进行消息响应,然后在每个函数里处理同一个函数就可以了,比如:
CXX::YourOnlyOneFun(参数1, ...)
{
// do something
}
CXX::OnOne()
{
YourOnlyOneFun(参数1,...);
}
CXX::OnTwo()
{
YourOnlyOneFun(参数2, ...);
}
//...2 响应OnCommand(WPARAM wParam, LPARAM lParam)
{
switch()
{
//...
}
..//
}
void CMyDialog::OnButtonClicked( UINT nID )
{
if ( IDC_BUTTON1 == nID )
....
}
10个按钮的ID要连续,一气呵成。可以检查resource.h的确认。
把下面的代码,手动拷贝到你的程序中。xxxxx.cppON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CYourDialog::OnButtonClicked( UINT nID )
{
int nButton = nID - IDC_BUTTON1; //从按钮取0,1,2,。
ASSERT( nButton >= 0 && nButton < 10 );
// ...
}
xxxxxxxxxxxxxxxx.h
afx_msg void OnButtonClicked( UINT nID );
10个按钮的ID要连续,一气呵成。可以检查resource.h的确认。
把下面的代码,手动拷贝到你的程序中。xxxxx.cppON_CONTROL_RANGE(BN_CLICKED, IDC_BUTTON1, IDC_BUTTON10, OnButtonClicked)void CYourDialog::OnButtonClicked( UINT nID )
{
int nButton = nID - IDC_BUTTON1; //从按钮取0,1,2,。
ASSERT( nButton >= 0 && nButton < 10 );
// ...
}
xxxxxxxxxxxxxxxx.h
afx_msg void OnButtonClicked( UINT nID );