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)... 颜色相同
我有一个 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)... 颜色相同