Как обработать событие «нажатие левой кнопки мыши» поля ввода в MFC - PullRequest
0 голосов
/ 03 июня 2019

У меня есть диалог с 8 Dynamic Read-Only Edit Boxes, 7/8 из них будут содержать разные текстовые строки, а последняя пуста. То, что я пытаюсь сделать, это: когда пользователь clicks на 1 из этих Edit Boxes (которые содержат текстовую строку), текст будет показан в пустом Edit Box. Если у вас, ребята, есть идеи, как это сделать, я был бы признателен.

Вот несколько кодов, которые я пробовал:

void CTab1::DoDataExchange(CDataExchange* pDX)
{
    CDialog::DoDataExchange(pDX);
        ...
    DDX_Text(pDX, IDC_TAB1CMTBOX, m_StrShow);
}

BEGIN_MESSAGE_MAP(CTab1, CDialog)
...
ON_CONTROL_RANGE(EN_SETFOCUS, 4000, 4100, &CTab1::OnEditBoxClicked)
END_MESSAGE_MAP()

void CTab1::OnEditBoxClicked(UINT nID)
{
    switch (nID)
    {
    case 4001:

        GetDlgItemText(4001, m_CmtText);
        m_CmtText = m_StrShow; 
        UpdateData(FALSE);
        break;

    case 4003:
        GetDlgItemText(4003, m_CmtText);
        m_CmtText = m_StrShow;
        SetDlgItemText(IDC_TAB1CMTBOX, m_StrShow);//This line doesn't work
        UpdateData(FALSE);
        break;
...
}

1 Ответ

1 голос
/ 06 июня 2019

То, что я вижу Вы, очевидно, только поменяли местами переменные.

void CTab1::OnEditBoxClicked(UINT nID)
{
   switch (nID)
   {
    case 4003:
      GetDlgItemText(4003, m_CmtText);  // Read ctrl Text to m_CmtString 
  //  m_CmtText = m_StrShow;            // then Write immediately m_strShow to m_CmtText.  Which make no sense
      m_StrShow = m_CmtText;            // <-- swapped
  //  SetDlgItemText(IDC_TAB1CMTBOX, m_StrShow);  // sure? You want show the Text in IDC_TAB1CMTBOX ?
      SetDlgItemText(IDC_SHOWBOX, m_StrShow); // replace IDC
      UpdateData(FALSE);
      break;
  ..
}

Это то, что я хотел бы сделать, упростить код.

void CTab1::OnEditBoxClicked(UINT nID)
{
  if (UpdateData(TRUE))
  {
    GetDlgItemText(nID, m_CmtText);         // Read ctrl Text nID 
    SetDlgItemText(IDC_SHOWBOX, m_CmtText); // Show the ctrl nID Text to ShowBox
    UpdateData(FALSE);
  }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...