3681|9

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助:怎样实现程序执行时检测是否有别的按钮被按下 [复制链接]

我在EVC下用向导创建了一个项目,然后添加了3个按钮,分别称为1,2,3。想要实现下列功能:
在按钮1被按下是运行一个mfc应用程序,想要在这个程序执行时探测是否2,3按钮被按下,例如:如果2被按下,
则执行按钮2对应的read(){}函数。不知道以上功能怎样实现?还请各位高手指点。谢谢

最新回复

你应该是 按钮1按下后执行一个函数(不是一个单独的程序)例如receive(){}, 这个函数要同时和按钮2,3相关。 你在receive中创建一个线程。 然后你的主线程就能处理按钮2和3了。  详情 回复 发表于 2008-9-7 10:41
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这是进程之间的问题,可以采用在进程之间发送自定义的信息来实现。

即按键按下时,给后来启动的程序发送一个消息。接收到此消息后, 执行想要的操作。
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
"在按钮1被按下是运行一个mfc应用程序",是运行一个新的程序吗?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

4
 
但还有个问题:正在执行的程序怎样探测到
有按钮按下了并且终止正在执行的操作?
由于我是新手,对多线程不太熟悉,但又急着用,
所以如果哪位高手能给个这方面的例子,我会很感激的。
谢谢
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
回复yashi:
对,按钮1按下后执行一个程序例如receive(){},要求在receive(){}执行的
过程中要判断是否有其他按钮被按下。若有其他按钮按下则终止receive(){}而
执行其他按钮对应的程序。
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
在该窗口下添加PreTranslateMessage消息,然后在该函数下面添加
if(pMsg->message==WM_KEYDOWN)
{
   if(pMsg->wParam==YourKeyASCII)
      AfxMessageBox(_T("Your Key Pressed"));
     //YourKeyASCII  是该健的ASCII码
}
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢楼上,
再请教楼上怎样添加记载什么地方添加PreTranslateMessage消息,能否给一个实例?谢谢。
由于是新手,上面问题让各位见笑了。
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

8
 
1, 在头文件里面定义如下变量:
  BOOL m_bEnd;
  BOOL m_bCancel;

2, 按钮1的响应函数
UINT ReceiveProc(LPVOID pParam)
{
  CMyDialog *pDlg = (CMyDialog*)pParam;
  pDlg->receive();
  return 0;
}

void CMyDialog::OnClickButton1()
{
  m_bCancel = FALSE;
  //创建线程
  AfxBeginThread( ReceiveProc, (LPVOID)this, THREAD_PRIORITY_ABOVE_NORMAL );
}

void CMyDialog::receive()
{
  m_bEnd = FALSE;
  //假设你这里是一个循环
  while( 1 )
  {
    ......
    if( m_bCancel )break;  //中止标志,按钮2被按下了
  }
  m_bEnd = TRUE;        //告诉按钮2的响应函数,本函数结束了
}

3, 按钮2的响应函数
void CMyDialog::OnClickButton2()
{
  m_bCancel = TRUE;             //设置中止标志
  while( !m_bEnd )Sleep( 10 ); //等待receive()结束
  read();             //执行你的read()函数
}

 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

9
 
非常感谢楼上,我试一下
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 4 楼 jushilq 的回复:
回复yashi:
对,按钮1按下后执行一个程序例如receive(){},要求在receive(){}执行的
过程中要判断是否有其他按钮被按下。若有其他按钮按下则终止receive(){}而
执行其他按钮对应的程序。


你应该是
按钮1按下后执行一个函数(不是一个单独的程序)例如receive(){},
这个函数要同时和按钮2,3相关。

你在receive中创建一个线程。

然后你的主线程就能处理按钮2和3了。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表