如何在对话框中实现自定义消息添加按钮

liuchuan007 2005-12-09 04:35:09
最近在做一个模拟工业控制面板的对话框程序,功能实现动态反映设备的状态!如电源已打开,我就要在控制面板上添加一个下压状态按钮(或是自绘按钮,总之就是跟普通的按钮不同) ,如果图像是黑白的图像我就要再添加一个显示黑白状态下压按钮,总之这样需要添加的按钮很多(14个).设备的消息可能通过串口传给我,我的任务主要是接收这些消息(肯定已统一定义好),根据这些定义的消息来判断是否添加下压按钮,我自己的想法是
1.自己定义好这些消息如
define WM_USER_POWERON (WM_USER+101);
2.在对话框的内定义中,加入该消息处理函数原型,加在DECLARE_MESSAGE_MAP后
afx_msg LRESULT OnPowerOn(WPARAM wParam, LPARAM lParam);
3.在对话框类消息映射表中加入相应的消息映射入口项,在AFX_MESSAGE_MAP后,END_MESSAGE_MAP前:
ON_MESSAGE(WM_USER_POWERON,OnPowerOn)
4.在对话框内中加入该消息处理函数的函数体.
   以上步骤是我参考网上达人写的一些有关VC自定义消息内容后自己总结出来的,但是由于设备的状态是不断变化的,我想每隔一段一时间都会接收这些消息,我想必须设置定时器,这一部分不太清楚了!在接收到消息后,根据消息的变化重绘按钮,新的按钮会被设置为下压状态,另外一些按钮将恢复正常!
我的主要疑问在哪些类或文件中完成这些编程,一些细节的东西也不太明白!
我这个只是一个子模块,我希望我已经把问题描述清白了,不知道哪位高人能够指点一二,如果能够帮我讲解一下流程,建议我看哪些源代码都可以!希望做过类似工作的朋友能够提供一些源代码以供参考!真的很希望能够尽快解决这个问题!


...全文
472 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
laofang 2005-12-09
  • 打赏
  • 举报
回复
补充一点,不需要用CButton::SetCheck

用CCmdUI::SetCheck 即可
你也不需要处理自定义消息,只要设置一个状态数据即可
BOOL m_bStatus[BUTTON_COUNT];
接收到串口消息时设置状态即可

然后在界面更新函数中用CCmdUI::SetCheck 改变按钮状态
但要注意这些按钮是不能让人点的,最好disable掉,状态自绘
laofang 2005-12-09
  • 打赏
  • 举报
回复
设备的消息可能通过串口传给我,我的任务主要是接收这些消息
——既然是通过串口接收消息,那就不需要定时器,只在接收到消息时switch一下消息类型,然后PostMessage

你在控制面板上的按钮用CheckBox,设置PUSH-LIKE风格,就是按下时表现为下沉状态
在你自定义的消息处理函数中用CButton::SetCheck 来更新按钮状态即可

可批量处理,用ON_UPDATE_COMMAND_UI宏
liuchuan007 2005-12-09
  • 打赏
  • 举报
回复
可是我根本就不会点击按钮!这些消息会有用吗?
goodboyws 2005-12-09
  • 打赏
  • 举报
回复
你可以在资源里把这些按钮都加上,用ShowWindow控制显示与否
lzzqqq 2005-12-09
  • 打赏
  • 举报
回复
或者你用ON_COMMAND_RANGE宏来映射也行.
ON_COMMAND_RANGE(ID_BASE_BTN,ID_MAX_BTN,OnBtnClick);

CDlgTest::OnBtnClick(UINT nID)
{
//do your process.
}
lzzqqq 2005-12-09
  • 打赏
  • 举报
回复
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if (pMsg->message==WM_SYSCOMMAND && HIWORD(pMsg->wParam)==BM_CLICK)
{
DWORD dwID=LOWORD(pMsg->wParam);
DoBtnClick(dwID);//传入你按钮的ID
}
return CDialog::PreTranslateMessage(pMsg);
}
自己再写个DoBtnClick的函数来处理就行了.
在Android开发 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建各种类型对话框的方法 并为给出创建对话框之后 并为给出如何用户获取在对话框做出选择后的数据 即如何监听用户做出的选择 接下来笔者将根据JavaDoc API文档引导读者详细的了解提示对话框 文本框对话框 简单列表对话框 单选项列表对话框 多选项列表对话框 自定义对话框6种类型对话框监听事件的具体处理过程 1 创建提示对话框 笔者为该对话框添加了3个按钮 分别是 PositiveButton (确定) NeutralButton NegativeButton(取消) 文意思是积极的按钮(确定) 立的按钮 消极的按钮(取消) 按字面意思翻译 有点怪 但是很形象 创建提示对话框实现监听事件的代码如下: 2 创建文本框对话框 笔者为该对话框添加了1个文本 一个PositiveButton (确定) 一个NegativeButton(取消) 并实现了PositiveButton点击监听事件 点击后后去文本框里的内容 并以toast形式显示出来 创建文本框对话框实现监听事件的代码如下: 3 创建简单列表对话框 笔者为该对话框添加了一个数组显示列表 并实现了点击列表item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 查阅JavaDoc API文档 读者可根据JavaDoc API文档来了解如何实现单击item选项监听事件 如下列出的setItems 方法第2个参数易知只要为第2个参数提供OnClickListener实例即可实现监听事件 读者可通过这种方式触类旁通以下几种对话框监听事件的实现 学会通过查阅JavaDoc API文档来解决问题是一项开发必备的编程能力 创建简单列表对话框实现监听事件的代码如下: 4 创建单选按钮列表对话框 笔者为该对话框添加了一个单选按钮数组显示列表 并实现了点击item选项监听事件 点击item选项后获取item内容 并以toast形式显示出来 5 创建复选框列表对话框 笔者为该对话框添加了一个复选框数组显示列表 并实现了点击复选框选项监听事件 选复选框选项后 获取所有选的选项 并以toast形式显示出来 创建复选框列表对话框实现监听事件的代码如下: 6 创建自定义列表对话框 笔者为该对话框添加自定义的布局文件 该自定义布局文件包含一个文本标签和一个文本框 并实现了确定按钮点击监听事件 在文本框输入内容后 获取文本框里的内容 并以toast形式显示出来 创建自定义列表对话框实现监听事件的代码如下: 参见blog:http: blog csdn net andie guo article details 14145135">在Android开发 我们经常会需要在Android界面上弹出一些对话框 比如询问用户或者让用户选择 关于Android Dialog的使用方法 已经有很多blog做出了详细的介绍(比如博客:7种形式的Android Dialog使用举例) 但是只是给出了创建 [更多]

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧