Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ win32项目中的SendMessage具有不同的结果_C++_Codeblocks_Sendmessage_Win32gui - Fatal编程技术网

C++ win32项目中的SendMessage具有不同的结果

C++ win32项目中的SendMessage具有不同的结果,c++,codeblocks,sendmessage,win32gui,C++,Codeblocks,Sendmessage,Win32gui,我有一个win32项目,它有两个文本窗口(inputArea、outputArea)和两个按钮(sendButton和ResetButton) 我的问题是,当我按下Reset键时,我想清除两个区域的文本,输入区域被清除,但输出区域被着色 以下是我尝试过的代码: case IDC_ResetButton: { SendMessage(hwndInputArea, WM_SETTEXT, NULL, NULL); SendMessage(hwndOutputArea, WM_SETTEX

我有一个win32项目,它有两个文本窗口(inputArea、outputArea)和两个按钮(sendButton和ResetButton)

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

以下是我尝试过的代码:

case IDC_ResetButton:
{
   SendMessage(hwndInputArea, WM_SETTEXT, NULL, NULL);
   SendMessage(hwndOutputArea, WM_SETTEXT, NULL, NULL);
   break;
}
我的初始输入区域:

我的初始输出区域:

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

另外,我分别尝试了每一行代码,它们都能工作,但当我把它们都放进去时,我得到了输出区域的结果,我不知道为什么


提前感谢。

每次尝试在按钮盒上获得编辑控件的手柄,如下所示(将IDC_EDIT1和2更改为编辑控件ID):


我想这就是编辑控制。 有三种颜色可供选择

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

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;
}
HBRUSH cxxdlg::OnCtlColor(CDC*pDC、CWnd*pWnd、UINT-nCtlColor){
HBRUSH hbr=CDialog::OnCtlColor(pDC、pWnd、nCtlColor);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(192192)); // …(1)
HBRUSH hbrOrg=静态投影(GetStockObject(灰色笔刷)); // …(2)
返回hbrOrg;
}

(1) (2)…使用相同的颜色

试着改用。另外,
LRESULT
在这两种情况下,当它工作时和不工作时,
SendMessage
返回什么?Genti Saliu,LRESULT在这两种情况下都是1,它工作,它从输出区域删除文本,但我不希望颜色出现在那里。Christopher Oicles,我试过了,结果也一样。@Tom抱歉——我意识到我的建议没有用,但在我注意到你的答复之前,我删除了我的建议。我的下一个猜测是,您可能正在通过处理一条
WM\u CTLCOLOR…
消息来设置背景色,检测hWnd是否用于您的输入控件,然后更改DC的背景色(和笔刷)作为groovy背景色。但是,如果hWnd用于另一个控件,则处理程序只会将DC单独留下。如果是这样的话,,当为输出hWnd调用处理程序时,您可能希望尝试将DC重置为默认背景色。由于他的现有代码已经改变了两个窗口,很明显他已经有了正确的窗口句柄。我刚刚测试了相同的操作,当我在案例外获得句柄时,得到的结果并不相同句柄,因此它可能是一个句柄问题,句柄可以保存在WM_命令案例或按钮单击事件案例中。
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;
}