topguntoo 2023-02-25 18:19 采纳率: 44.4%
浏览 79
已结题

MFC 按钮图片按指定图片显示 球助!

IDB_BITMAP1是 “未按下”图片
IDB_BITMAP2是 “被按下”图片
添加了个按钮 Button1 我要做到的功能是 按钮默认是显示“未按下”图片,当按下按钮后通过串口发送一个 联机的信号,收到确认回复后 显示“被按下”图片
我目前是这样做的
按钮添加了变量 CBmpButton m_btn1;


运行后是显示的 “未按下”图片,按下按钮后通过串口发送一个 联机的信号,收到确认回复后 ,
执行了


出现的问题是 按钮图片没有刷新显示成“被按下”图片,而是点击对话框其他按钮后 Button1 的图片才被刷新为“被按下”图片 求指点下简单好实现的方法。!谢谢!

  • 写回答

6条回答 默认 最新

  • MarkHan_ 2023-02-25 19:13
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    您可以使用按钮的 SetBitmap() 函数来设置按钮的图片,例如:

    m_btn1.SetBitmap(IDB_BITMAP2);
    

    这将把按钮的图片设置为 IDB_BITMAP2,即“被按下”图片。

    如果您的按钮在按下后没有立即刷新显示为“被按下”图片,您可以尝试调用按钮的 RedrawWindow() 函数来强制重绘按钮,例如:

    m_btn1.SetBitmap(IDB_BITMAP2);
    m_btn1.RedrawWindow();
    

    这将立即重绘按钮,以便它显示为“被按下”图片。

    如果您在执行上述操作后仍然遇到问题,可能是与您的消息循环有关。在收到串口确认回复后,您可以尝试在主窗口的消息循环中添加一条强制重绘按钮的消息,例如:

    // 收到串口确认回复后执行以下代码
    m_btn1.SetBitmap(IDB_BITMAP2);
    PostMessage(WM_PAINT, 0, 0);
    

    这将向主窗口的消息队列中添加一条 WM_PAINT 消息,以便在消息循环中重绘按钮。

    希望这些方法能帮助您解决问题!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月5日
  • 已采纳回答 2月25日
  • 创建了问题 2月25日

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题