_CtrlBox.tWnd = CreateWindow("EDIT", NULL, 
WS_CHILD | WS_DLGFRAME | WS_VSCROLL | WS_VISIBLE | ES_MULTILINE | ES_READONLY,
180, 0, 375, 360, _CtrlBox.hWnd, NULL, hInstance, NULL);
我创建了如上的一个EDIT控件,如果去掉ES_READONLY属性,可以在EDIT中输入,WS_VSCROLL 功能也能正常使用。
但用TextOut(TextDC, 1, tCount, TextStr, strlen(TextStr));向EDIT中输出时WS_VSCROLL 就不起作用了。
我应该怎么做才能实现通过EDIT控件只显示信息了?应该用什么API?

解决方案 »

  1.   

    如果你想自己绘制,就不要用Edit;否则用Edit自己的方法来添加字符串:SetWindowText
      

  2.   

    TextOut(TextDC, 1, tCount, TextStr, strlen(TextStr));
    你这个是DC绘制文字的绘图函数.简单点说只是把文字粘贴到屏幕上,他是不会对EDIT进行操作的.
      

  3.   

    EDIT控件设为ReadOnly,然后用SetWindowText就行了
      

  4.   

    果然用SetWindowText 可以,再问一下,怎样能不删除前一个SetWindowText(HWND, CHAR*)显示出来的string,让第二个SetWindowText接着第一个后面继续显示了?
      

  5.   

    在你SetWindowText前,先用\r\n将你的字符串连接起来(如果要求换行的话),或者直接接在原来的字符串上。
      

  6.   

    OnBtnAddStringToEdit(LPCTSTR lpszText)
    {
    CString str;
    GetDlgItemText(IDC_EDIT1,str);
    CString strText;
    strText.Format(_T("%s\r\n %s"), str, lpszText);
    SetDlgItemText(IDC_EDIT1,strText);
    }你的edit必须要MutiLine才能看到回车换行
      

  7.   

    TextOut怎么可以这样用在edit中呢?