MFC CEdit不会接受键盘输入

时间:2019-03-04 14:57:04

标签: c++ visual-c++ mfc

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

我首先只是想在我的视图类的onDraw函数中创建一个文本框,以在屏幕上放置一个文本框。文本框的矩形一直闪烁。我无法选择它或做任何事情。

view类是CView固有的。该信息。我从研究中得出的结论是CEdit通常添加到对话框类中,但是我仍然可以将其添加到任何视图中。

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);

这是我的新手,在进入所有句柄和消息传递之前,我只想简单地创建一个文本框并在其中输入一些文本即可。

谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

当您拥有一个托管控件的视图时,通常希望在视图的OnCreate中创建该控件,因此它是在创建视图自己的窗口(将成为控件的父窗口)之后但在显示视图窗口之前创建的(因此可以同时显示该控件。)

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

  1. 调整大小:调整控件的大小以适合视图工作区的新大小。
  2. focus:当视图获得焦点时,立即将焦点赋予控件。
  3. 命令:您通常想处理类似以下内容:
    • 从控件中剪切/复制/粘贴
    • 将数据放入控件中(例如,从文件中)
    • 从控件中获取数据(例如,保存到文件中)
    • 设置控件的字体