小弟不知在 EditBox 的内容被选中时会发送什么消息,想在它选中的内容变化时作点事情请指教~!

解决方案 »

  1.   

    将会触发EN_SELCHANGE通知消息:
    switch (Msg)
    {
      case WM_COMMAND:
      {
        if (HIWORD(wParam) == EN_SELCHANGE)
          // 就在这里处理你想做的事情
      }
      break;
      // ...
    }
      

  2.   

    好象不行啊
    我在前面加上了 if(LOWORD(wParam) == IDC_EDIT)
     用Debug 调试的时候还是不能运行到EN_SELCHANGE的下一步能不能具体一点?
    谢谢!
      

  3.   

    nId = ::GetDlgCtrlID(pMsg->hwnd);
    id好像是这么取的吧
      

  4.   

    抱歉,EN_SELCHANGE是richedit的,对于EditBox好像没有现成的消息可以用,你可以参考一下这段代码:
    case WM_COMMAND:
    {
      if (LOWORD(wParam) == IDC_EDIT1)
      {
        int nStart, nEnd;
        TCHAR str[200], strSel[100];
        SendDlgItemMessage(hDlg, IDC_EDIT1, EM_GETSEL, (WPARAM)&nStart, (LPARAM)&nEnd);
        GetDlgItemText(hDlg, IDC_EDIT1, str, 200);
        lstrcpyn(strSel, &str[nStart], nEnd - nStart);
        // 现在strSel里就是IDC_EDIT1中选择的文本了
        break;
      }
    }
    break;