C++ MFC CEdit不接受键盘输入

C++ MFC CEdit不接受键盘输入,c++,visual-c++,mfc,C++,Visual C++,Mfc,我有一个遗留项目,需要在视图中添加一个多行文本框 首先,我只想在视图类的onDraw函数中创建一个文本框,以便在屏幕上显示一个文本框。文本框的矩形会一直闪烁。我不能选择它或做任何事情 view类是从CView继承而来的。信息。我从研究中了解到,CEdit通常添加到dialog类中,但我仍然可以将其添加到任何视图中 CRect rect(100, 100, 300, 200); CEdit test; test.Create(WS_CHILD | WS_VISIBLE | WS_BORDER |

我有一个遗留项目,需要在视图中添加一个多行文本框

首先,我只想在视图类的onDraw函数中创建一个文本框,以便在屏幕上显示一个文本框。文本框的矩形会一直闪烁。我不能选择它或做任何事情

view类是从CView继承而来的。信息。我从研究中了解到,CEdit通常添加到dialog类中,但我仍然可以将其添加到任何视图中

CRect rect(100, 100, 300, 200);
CEdit test;
test.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | ES_MULTILINE | WS_VSCROLL, \
    rect, this, 1);
我对这个完全陌生,在我进入所有的句柄和消息之前,我只想创建一个文本框并在其中键入一些文本


提前感谢您的帮助。

您可能不想在OnDraw中创建编辑控件。事实上,除非视图包含需要绘制的其他内容,否则可能根本不需要处理OnDraw

当视图承载控件时,通常希望在视图的OnCreate中创建该控件,因此它是在创建视图自己的窗口之后创建的,该窗口将是控件的父窗口,但在显示视图的窗口之前创建,以便同时显示控件

在这种情况下,视图可能根本不需要处理绘图。它可能需要处理以下问题:

调整大小:调整控件大小以适应视图客户区的新大小。 焦点:当视图接收到焦点时,立即将焦点赋予控件。 命令:您通常希望处理以下事项: 在控件中剪切/复制/粘贴 将数据放入控件,例如,从文件 使数据不受控制,例如,保存到文件 设置控件的字体
看起来你把测试变成了一个局部变量。如果是这样的话,它会在函数返回后立即被销毁,并获得实际的控制权。您需要显示更多的代码,但前面的注释可能是答案的一部分。尝试使测试成为CView的成员?班我不确定OnDraw是否是创建CEdit控件的正确函数。@IgorTandetnik非常感谢您,在我将其分配到堆中后,它工作正常。谢谢。我正在使用的视图确实会在当前窗口中绘制其他东西,例如标记一个圆。在继续之前,我想先测试一个简单的文本框。我的最终目标是使用鼠标在客户端视图上分配/指示一个区域,这个新区域将是一个文本框。它应该处理一些用户与文档的交互。谢谢你的提示。