WM_SETTEXT 是不会有问题的, 应该是你代码的问题
或者你贴代码上来

解决方案 »

  1.   

    EDIT控件文本长度是有限制的,改用CRichEdit吧
      

  2.   

    #include "Every.h"static HANDLE hInputRead,hInputWrite,hInputWriteDup;
    static HANDLE hOutputRead,hOutputWrite,hOutputReadDup;
    static HANDLE hProcess ;HANDLE StartChildProcess( LPSTR Command )
    {
    static SECURITY_ATTRIBUTES PipeSA , PipeSA1 ;
    UINT ExitCode ;
    DWORD cbwrite , cbread ;
    DWORD PipeLen = 4096 ;

    static TCHAR reponse[4096] = {0} ; LPSTR Notify ; PipeSA.nLength = sizeof(SECURITY_ATTRIBUTES) ;
    PipeSA.bInheritHandle = TRUE ;
    PipeSA.lpSecurityDescriptor = NULL ;
    CreatePipe( &hOutputRead , &hOutputWrite , &PipeSA , PipeLen ) ;
    DuplicateHandle(GetCurrentProcess(), hOutputRead, 
    GetCurrentProcess(), &hOutputReadDup, 0, 
    FALSE, DUPLICATE_SAME_ACCESS); 
    PipeSA1.nLength = sizeof(SECURITY_ATTRIBUTES) ;
    PipeSA1.bInheritHandle = TRUE ;
    PipeSA1.lpSecurityDescriptor = NULL ;
    CreatePipe( &hInputRead , &hInputWrite , &PipeSA1 , PipeLen ) ;
    DuplicateHandle(GetCurrentProcess(), hInputWrite, 
    GetCurrentProcess(), &hInputWriteDup, 0, 
    FALSE, DUPLICATE_SAME_ACCESS);  CloseHandle( hInputWrite ) ;
    CloseHandle( hOutputRead );

    hProcess = PrepAndLaunchRedirectedChild( Command , hOutputWrite , hInputRead ) ;
    //启动子进程
    if( hProcess == NULL )
    {
    return FALSE ;
    }
    else
    return hProcess ;
    }重定向子进程I/O并启动子进程
      

  3.   

    DWORD WINAPI ReadFromPipe( LPVOID item )
    {
    static TCHAR request[4096] = {0} ;
    DWORD cbread ;
    int lasterr ;
    threadpara *uint = (threadpara *)item ;
    while(TRUE)
    {      
    if( !ReadFile( uint->RWpipe , request , 4095 , &cbread , NULL ) || ! cbread )
    {
    lasterr = GetLastError() ;
    if (  lasterr == ERROR_BROKEN_PIPE )
    break; // pipe done - normal exit path.
    else
    return FALSE ; // Something bad happened.
    }
    if( cbread )
    WriteToEdit( uint->edit  , request ) ;
    }
    return TRUE ;
    }BOOL WriteToPipe( LPSTR lpszINPUT )
    {
    DWORD length , cbwrite ;
    length = strlen( lpszINPUT ) ; if( hInputWrite!= NULL || length > 0 )
    if( !WriteFile( hInputWriteDup, lpszINPUT, strlen(lpszINPUT), &cbwrite , NULL ) )
    if ( GetLastError() == ERROR_NO_DATA )
    ; // Pipe was closed (do nothing).
    else
    return FALSE ; // Something bad happened.
    return TRUE ;
    }两个子进程实现
      

  4.   

    现在知道问题是readfile阻塞了,这个怎么解决啊