c++ - 文本框 MFC SDI 不会出现

标签 c++ mfc textbox sdi

我正在尝试向我的表单添加一个文本框(接下来我想将从此框中输入的数据传递到文档以进行存储),但我无法让文本框正常工作。

下面是我试过的代码。为什么我的文本框没有出现,以及如何正确地让文本框出现在我的 View 中。

void CMy861a4VasilkovskiyView::OnDraw(CDC* pDC)
{
    CMy861a4VasilkovskiyDoc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;
    const CString str("Hello");
    pDC->TextOut(0, 0, str);
    CEdit m_edit;
    CRect rect(20,20,10,10);// (85, 110, 180, 210);

    m_edit.Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP |
             ES_AUTOHSCROLL | WS_BORDER, rect, this, ES_LEFT);
   // m_edit.SetFocus();


    // TODO: add draw code for native data here
}

最佳答案

我可以看到几个问题:

  1. OnDraw() 不是创建 CEdit 控件的正确位置 - CMy861a4VasilkovskiyView::Create() 可能是最佳位置。如果您将它留在 OnDraw() 中,这将在每次重绘 View 时重新创建 CEdit 控件,这不是您想要的。
  2. 您的 CEdit m_edit 变量需要是 CMy861a4VasilkovskiyView 类的成员变量。这是它未被绘制的主要原因 - 目前 m_edit 在绘制之前超出范围。

关于c++ - 文本框 MFC SDI 不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16198284/

相关文章:

javascript - Android 浏览器中不允许使用字母或除数字 (0-9) 或小数之外的其他符号

c++ - CScrollBar 拇指跟踪不起作用

c++ - 汇编代码中的数字非常大,但在 C++ 中无效

c++ - 带有 TCSADRAIN 标志的 tcsetattr() 阻塞时间很奇怪

c++ - 在随机访问网络服务器上的文件后顺序访问文件时的性能

user-interface - 用于基于 MFC 的 GUI 应用程序的免费自动化测试工具

c++ - 将面板添加到 MFC 应用程序 (Visual Studio C++)

asp.net - 输入按钮不提交表单(仅限 IE)ASP.NET

javascript - Textbox 类 Onchange 事件监听器不适用于多个类

c++ - 为什么 CLion 不将类标记为类?