[求助]如何让两个按钮控件都保持按下状态!

study_boy 2004-09-17 11:32:44
我用WM_KEYDOWN和WM_KEYUP来控制按钮的LBUTTONDOWN和LBUTTONUP状态,但我希望能让两个或两个以上按钮能同时响应键盘的按下操作,并保持这种状态,请问各位大虾,这该怎么做?
...全文
455 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sungengyu 2004-09-17
  • 打赏
  • 举报
回复
你试过么?怎知没用?
只不过不知道这种效果是不是你想要的。

Sets the highlighting state of a button control.

Highlighting affects the exterior of a button control. It has no effect on the check state of a radio button or check box.

A button control is automatically highlighted when the user clicks and holds the left mouse button. The highlighting is removed when the user releases the mouse button.
study_boy 2004-09-17
  • 打赏
  • 举报
回复
我的按钮是Button,不是Check Box,也不是Radio Button
CButton::SetState(1)对于普通按钮是没有作用的。
Kudeet 2004-09-17
  • 打赏
  • 举报
回复
checkbox选上push-like风格可以实现,或者你试试用SetCheck(1);

sungengyu 2004-09-17
  • 打赏
  • 举报
回复
CButton::SetState(1);
老夏Max 2004-09-17
  • 打赏
  • 举报
回复
使用CheckBox吧,将其属性中设为Push-like。能获得效果
添加自定义消息,可以处理之!
sungengyu 2004-09-17
  • 打赏
  • 举报
回复
我想知道如何解决的. :)
study_boy 2004-09-17
  • 打赏
  • 举报
回复
问题解决了,谢谢各位的帮助,分数稍后送上
老夏Max 2004-09-17
  • 打赏
  • 举报
回复
CheckBox在设置位Push-like以后的显示效果和Button是一样的!!!!!!!
study_boy 2004-09-17
  • 打赏
  • 举报
回复
是我没有把目的和环境说清楚,我是想让对话框中的几个按钮模拟键盘按下和放开的动作,因此,必须在
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)中实现此功能,因为这种情况下在OnKeyDown中实现是没有反映的(http://community.csdn.net/Expert/TopicView.asp?id=3356952)

所以我只能使用如下代码:
BOOL CTestDlg::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
if(pMsg->wParam == VK_CONTROL) //模拟CTRL键的按下和松开状态
{
if(!((pMsg->lParam) & 0x1000000L)) //判断是左CTRL,还是右CTRL
{
SendDlgItemMessage(IDC_CTRL1, WM_LBUTTONDOWN);
}
else
{
SendDlgItemMessage(IDC_CTRL2, WM_LBUTTONDOWN);
}
}

if(pMsg->message == WM_KEYUP)
if(pMsg->wParam == VK_CONTROL)
{
if(!((pMsg->lParam) & 0x1000000L))
{
SendDlgItemMessage(IDC_CTRL1, WM_LBUTTONUP);
}
else
{
SendDlgItemMessage(IDC_CTRL2, WM_LBUTTONUP);
}
}

return CDialog::PreTranslateMessage(pMsg);
}

我希望实现的是,就好象真的在按键盘一样,比如,先按下键盘的左CTRL不放,再按下键盘的右CTRL,此时,按钮的动作也要与键盘两个CTRL的状态相一致。
1.键盘两个CTRL都按下时,两个按钮也同时处于按下状态
2.无论放开哪个处于按下状态的CTRL键时,相对应的按钮也松开。
3.不仅仅想实现两个CTRL的模拟,还希望实现诸如CTRL+A,B,C等等
jijinxu 2004-09-17
  • 打赏
  • 举报
回复
to study_boy:
我刚测试的,setstate函数可以同时让两个按钮保持按下状态
((CButton*)GetDlgItem(IDC_BUTTON2))->SetState(1);
((CButton*)GetDlgItem(IDC_BUTTON3))->SetState(1);
你再试试

study_boy 2004-09-17
  • 打赏
  • 举报
回复
就是试过没用才这么说的,你贴的这段解释,我还有中文版本的呢!

CButon::SetState

void SetState( BOOL bHighlight)

参数:
bHighlight 指定按钮是否被加亮显示。非零值将加亮显示按钮,0将不加亮显示。

说明:
本函数用于设置是否加亮显示按钮。
加亮显示影响控件的外观,但对单选钮和复选框控件的选中状态没有影响。
当用户单击并且保持鼠标左键为按下状态时,按钮控件自动地加亮显示。当用户放开鼠标按钮时,按钮控件将不再加亮显示。

请参阅:
CButton::GetState, CButton::SetCheck, CButton::GetCheck, BM_SETSTATE
这是一个功能超强的表达式处理系统,提供16种常规运算符,7种基本数据类型,支持数据类型自动识别与智能转换,支持变量定义,支持变量式变量名,包含宏处理功能,支持数据库访问,提供三百多个各种常规函数,允许运行期自定义函数,开放式函数开发机制允许开发人员自由且容易地扩充自己的函数。系统不仅实现了一般意义上的表达式运算,同时也实现了基本的程序控制逻辑:顺序、分枝和循环,这意味着应用程序可以将许多不稳定的业务需求从源程序内部实现改为表达式系统的外部实现,从而极大程度地提高系统的可维护性。 该系统使用DELPHI开发,提供运行包和设计包,包含低级的类系,也包括高级的非可视化控件,允许开发人员以多种方式来使用本系统。使用该系统可与应用程序完美无缝融合,甚至可以在表达式中直接操纵应用程序的界面元素,如点击按钮等。 此软件的产生最早可追朔到 TURBO Pascal 3.0 的时代,在 TURBO Pascal 6.0 发布后全部按 OO 方式重写,以后从DELPHI 1.0开始,伴随着DELPHI版本的每次升级,本系统也在进行相应的更新和升级,因此,本软件可适用于DELPHI的所有版本。但因为本软件一直是作为《佐尔企业应用辅助开发平台》的一个子系统开发的,独立发行版目前只有D6,D7和D9的,若有需要其它版本的,可与本公司联系。 软件组成━━━━ 本独立发行版核心部分主要由两个包组成,ZRExpDx.bpl和ZRExpDBDx.bpl,(x是DELPHI版本号,如ZRExpD7表示DELPHI7.0适用的包)。 发布的文件还包括开发指南、联机求助文档、示范程序以及使用到的第三方控件等。 安装指南━━━━ 发布文件是一个WinRAR压缩包,ZRExpDx.rar,尺寸约3.3M,展开尺寸约13M,其中包括以下文件夹: Lib //本系统的所有dcp,dcu文件 Bin //bpl和exe文件(示范程序) Doc //开发指南 Help //联机求助文档 Demo //示范程序源程序文件 OtherDCUs 示范程序用到的第三方控件的dcu文件 OtherBPLs 示范程序用到的第三方控件的bpl文件 Data //示范程序用到的数据文件 Expressions //各种表达式示例文件 Formal //正式版编译的示范程序 安装过程: (1) 将压缩包解压到任一文件夹 (2) 启动DELPHI (3) 在DELPHI中安装设计包 ZRExpDx.bpl
iSee视频监控 v5.2 视频监控软件使用说明书 版权所有 翻录必究 2009年10月1日 Ver:01.01.05 注意事项 首先,感谢您选用我公司最新产品。 在使用本监控卡之前,请详细阅读本说明书所涉及的相关事项,熟悉 硬件、软件各部分的功能后,方能使用,以确保该系统为您发挥最佳功能。 否则一切后果自负。 本说明书将向您详细阐述全实时“视频监控系统”的安装、操作、设 置和网络使用方法。 本系统工作主机供电电压为220V_10%,如果在电压不稳或者干扰大 的场合,请您选用优质稳压电源(即UPS),保证系统正常良好的工作状态。 本系统在安装、拆卸视频采集卡时,必须将主机处于完全断电状态, 否则主板上残留的电压将损坏采集卡。 本系统可切换D1与CIF分辨率,切换分辨率设置后,在主界面必须关 闭通道视频,重新打开通道视频,设置才能生效。 本系统主机工作于常温(-10_3℃~55_2℃)、清洁的环境,并且保持 良好的通风状态。 本系统软件属于我公司专有产品,未经同意,请勿复制,否则影响机 器稳定概不负责,并将通过有关法律渠道追究盗版责任。 功能特点(H.264压缩) 压缩方式:H.264/MPEG 4; 显示分辨率:1024_768、1280_1024、16:9宽屏、16:10宽屏; 预览分辨率 (可调) :704_576(PAL制),740_480(NTSC制); 352_288(PAL制),370_240(NTSC制); 录像分辨率(所见即所得):704_576(PAL制), 740_480(NTSC制); 352_288(PAL制),370_240(NTSC制); 单机容量支持12路D1、48路CIF; 支持单画面、4画面、9画面、16画面、20画面、25画面显示,可全屏显示,支持自动 翻页; 多画面实时显示/录像/回放功能,支持多协议云镜控制,支持多种报警盒实现联动报警; 手动录像、连续录像、定时录像、动态录像、事件录像、联动报警录像等多种录像方式; 可以设置每个通道的显示名称; NTSC/PAL两种视频显示制式可选, 25帧/秒实时预览、录像、回放; 视频图像属性调节功能,使图像更清晰。 视频录像图像质量有多种等级可调,以改变存储文件大小,方便不同场合应用。 视频移动报警录像功能,报警录像灵敏度、预录像时间、延迟录像时间可调,支持声音 报警输出。 智能检索,可按摄像镜头年/月/日/时间段或长时间连续检索回放,自动检索报警录像, 能区分录像事件。 具有局部放大功能,可逐帧回放,快速播放,慢速播放,常规播放。 回放时可进行图片抓拍功能,回放时文件备份功能、文件剪辑功能。 可进行远程监控,远程控制云镜、色彩、手动录像、布撤防、重启计算机等控制工作。 支持现今最大容量的硬盘,并支持安装多个大容量的硬盘。 硬盘管理可以通过对最大使用硬盘和硬盘最小预留空间的设置使硬盘能够得到充分合理 的使用。 自动创建日志文件(用户操作日志、系统日志、远程控制日志),便于查询操作记录。 系统可任意设置定时关机,定时重启功能,保证系统运行的高稳定性。 可设定开机自动运行监控软件,断电自动关闭程序,来电自动重启,自动恢复录像。 硬件、软件经过严格的拷机试验,稳定可靠。 系统硬件配置要求低,48路同时录像显示时,CPU的占用率低于75%。 系统能有效防止用户多次重复运行监控系统导致系统崩溃的情况。 目录 第一部分 软件安装与卸载..............................................................................................................6 1.1 系统要求 ..................................................................................................................................................6 1.1.1 硬件要求(推荐) ................................................................................

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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