win32 项目中的 SendMessage 有不同的结果

SendMessage in win32 project has different result

我有一个 win32 项目,它有 2 个文本 windows(inputArea、outputArea)和 2 个按钮(sendButton 和 ResetButton)。

我的问题是,当我按下 Reset 时,我想清除两个区域中的文本,输入区域被清除但输出区域变色。

这是我试过的代码:

case IDC_ResetButton:
{
   SendMessage(hwndInputArea, WM_SETTEXT, NULL, NULL);
   SendMessage(hwndOutputArea, WM_SETTEXT, NULL, NULL);
   break;
}

我的初始输入区域:

我的初始输出区域:

下面是当我按下 Reset 时 outputArea 发生的情况:

此外,我分别尝试了每一行代码,它们都有效,但是当我把它们都放在一起时,我得到了 outputArea 的这个结果,但我找不到原因。

提前致谢。

每次在你的按钮盒上尝试像这样获取你的编辑控件的句柄(将 IDC_EDIT1 和 2 更改为你的编辑控件 ID):

case IDC_ResetButton:
{
hwndInputArea = GetDlgItem(hwndDlg,IDC_EDIT1);
hwndOutputArea = GetDlgItem(hwndDlg,IDC_EDIT2);

SendMessage(hwndInputArea, WM_SETTEXT, 0, NULL);
SendMessage(hwndOutputArea, WM_SETTEXT, 0, NULL);
break;
}

我猜那是editcontrol。 有三种颜色可供选择。

・文字颜色
・背景颜色
・画笔

HBRUSH CXxxDlg::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ) {

    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    pDC->SetTextColor(RGB(0,0,0));  
    pDC->SetBkColor(RGB(192,192,192)); // …(1)
    HBRUSH hbrOrg = static_cast<HBRUSH>(GetStockObject(GRAY_BRUSH)); // …(2)

    return hbrOrg;
}

(1)(2)... 颜色相同