【问题标题】:How do I connect a slider to a variable in MFC如何将滑块连接到 MFC 中的变量
【发布时间】:2012-07-04 13:58:23
【问题描述】:

将滑块连接到 MFC 中的成员变量的正确方法是什么?到目前为止我做了什么:

  1. 在资源视图中将滑块拖到我的对话框中并为其指定 ID
  2. 右键单击滑块并选择添加变量
  3. 将变量设置为 Control variable,将 Category 设置为 Value,同时设置 Min value 和 最大值到所需值。

这会在我的对话框类中创建一个 int 类型的成员变量,并在 DoDataExchange 方法中添加一些内容。

但是,DoDataExchange 方法仅在我的对话框创建时调用一次,当我拖动滑块时,我必须做什么才能使我的成员变量更新?我是否应该将 Category 设置为 Ctrl 并手动管理范围,并拦截 WM_HSCROLL 消息?

(顺便说一下,这是一个非模态对话框)

【问题讨论】:

    标签: mfc


    【解决方案1】:

    调用 UpdateData 执行 DataExchange 传递 TRUE 以将数据保存并验证到您的变量,FALSE 以根据您的变量设置控制值,即。将数据传递到控件中。有关 UpdateData 的更多信息:

    http://msdn.microsoft.com/en-us/library/t9fb9hww(v=vs.80).aspx

    对于通用数据交换机制:

    http://msdn.microsoft.com/en-us/library/xwz5tb1x(v=vs.80).aspx

    【讨论】:

    • 我应该从哪里调用UpdateData(TRUE),WM_HSCROLL消息回调?
    • 如果您要拦截 WM_HSCROLL 以在滑块更改后立即获取值,那么我不会费心使用成员变量。只需直接从控件中获取值。成员变量通常仅在您在应用工作流程中具有不同的设置/更新点时使用(例如,打开表单/对话框然后应用/关闭)
    【解决方案2】:

    是的,您从控件的 WM_HSCROLL(或 WM_VSCROLL)的处理程序中调用 UpdateData(),如果它是一个垂直滑块)。见http://msdn.microsoft.com/en-us/library/ekx9yz55%28v=vs.80%29.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多