在控制在产生一个可视化的Win32窗体,
在控制台输入信息,捕捉输入的字符串,给窗体postmessage,将输入的信息在窗体中显示出来!
关键是消息循环怎么处理!

解决方案 »

  1.   

    http://blog.csdn.net/xxingup/article/details/5506812vc控制台管道输入输出到窗口
      

  2.   

    你没有理解我的意思!
    我是说:启动一个控制台程序,它会产生自动一个win32窗体,捕捉控制台的输入,显示在win32窗体上!
    这个两个是一个exe完成的事情!大家在同一个进程里面!
      

  3.   

    可以运行的代码#include<stdio.h>
    #include<windows.h>
    #include <process.h>
    #include <TCHAR.H>#define WM_TEST WM_USER+1static TCHAR szClassName[] = "ConsoleWin";
    HWND g_hMain = NULL;void WinThread ( void *lparam );
    LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg,WPARAM wParam,LPARAM lParam);main()
    {
    TCHAR szReadBuf[1024];
    HANDLE hThread = NULL; hThread = (HANDLE)_beginthread(WinThread,1024,NULL);
    Sleep(1000); while ( _fgetts(szReadBuf,sizeof(szReadBuf),stdin) && g_hMain )
    {
    szReadBuf[_tcslen(szReadBuf)-1] = 0;
    _strlwr(szReadBuf); if ( !_tcscmp(szReadBuf,"q") )
    {
    SendMessage(g_hMain,WM_CLOSE,0,0);
    int n = GetLastError(); break;
    }
    SendMessage(g_hMain,WM_TEST,(WPARAM)szReadBuf,0);
    } WaitForSingleObject(hThread,INFINITE); return 0;
    }void WinThread ( void *lparam )
    {
    WNDCLASS wc;
    MSG msg;
    memset(&wc,0,sizeof(WNDCLASS)); wc.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
    wc.hCursor = (HCURSOR)LoadCursor(NULL,IDC_ARROW);
    wc.hIcon = (HICON)LoadIcon(NULL,IDI_APPLICATION);
    wc.hInstance = GetModuleHandle(NULL);
    wc.lpfnWndProc = WindowProc;
    wc.lpszClassName = szClassName;
    if ( !RegisterClass(&wc) )
    {
    int n = GetLastError();
    goto ext;
    }
    if ( ( g_hMain = CreateWindow(szClassName,szClassName,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,wc.hInstance,NULL)) == NULL )
    goto ext;

    ShowWindow(g_hMain,SW_SHOW);
    UpdateWindow(g_hMain); while ( GetMessage(&msg,NULL,0,0) )
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    } g_hMain = NULL;
    ext:
    _endthread();
    }LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg,WPARAM wParam,LPARAM lParam)
    {
    static TCHAR szstr[1024] ={0}; PAINTSTRUCT ps;
    HDC dc; switch(uMsg)
    {
    case WM_TEST:
    _tcscpy(szstr,(TCHAR *)wParam);
    InvalidateRect(hwnd,NULL,TRUE);
    case WM_PAINT:
    dc = BeginPaint(hwnd,&ps);
    SetBkMode(dc,TRANSPARENT);
    SetBkColor(dc,RGB(255,255,255));
    SetTextColor(dc,RGB(255,0,0));
    TextOut(dc,0,0,szstr,_tcsclen(szstr));
    EndPaint(hwnd,&ps);
    return 0;
    case WM_DESTROY:
    PostQuitMessage(0);
    return 0;
    } return DefWindowProc(hwnd,uMsg,wParam,lParam);
    }
      

  4.   

    给你个思路,在gameslq的代码的消息处理线程中捕获键盘消息,然后通过 TextOut进行输出到界面