对话框控件 - 检测更改

时间:2011-07-08 13:38:45

标签: c++ winapi modal-dialog

我想检测用户操作何时更改对话框上的任何控件。例如,在文本框中输入数据时,会在日期时间选择器中输入日期,选中或取消选中复选框等。到目前为止,我已忽略此类通知,并且只是检索控件的状态时用户按下某个按钮,但现在我想知道发生了更改(我想在属性表上启用“应用”按钮)。我真的不在乎发生了什么变化,我想知道的是有些事情发生了变化。通过改变,我不是指焦点的改变,而是用户改变控制的一些实际动作。

我使用简单的旧c ++,没有MFC或任何花哨的东西。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用通过WM_COMMAND获得的BN_CLICKED通知代码来测试是否已选中复选框。

switch( uMsg ) {
  ...
  case WM_COMMAND: {
    switch( HIWORD( wParam ) ) {
    case BN_CLICKED: {
      if( Button_GetCheck( lParam ) == BST_CHECKED ) {
        ...
      }

      break;
    }
    default:
      return false;
    }
    break;
  }
  default:
    return false;
}

return true;

这是一个如何设置DialogProc的示例。您可以打开lParam或LOWORD( wParam )来识别哪个按钮。