在控制在产生一个可视化的Win32窗体,
在控制台输入信息,捕捉输入的字符串,给窗体postmessage,将输入的信息在窗体中显示出来!
关键是消息循环怎么处理!
在控制台输入信息,捕捉输入的字符串,给窗体postmessage,将输入的信息在窗体中显示出来!
关键是消息循环怎么处理!
解决方案 »
- TeeChart8 自定义坐标轴的 删除问题
- CAsyncSocket网络编程遇到的问题
- 请教,CreateProcess启动bat文件为什么不能隐藏dos窗口。
- 请问ado里_ConnectionPtr的Execute返回的_RecordsetPtr是只读的吗?
- 一个sdi程序,如何在新开的一个线程中改变statusbar的内容???
- 带有旋转角度和折射系数的椭圆怎么画?
- 如何在VC中调用存储过程??
- 大家别笑,基础问题,有关serialize()
- 在MFC的对话框中,怎样将多个按钮的鼠标点击消息映射到一个函数?我是初学者,向各位专家学习。
- 对于asio使用的几个不明白的地方?
- 我该用什么语言进行应用软件的开发呢?
- 如何将网页的FLASH控件扣出来?
我是说:启动一个控制台程序,它会产生自动一个win32窗体,捕捉控制台的输入,显示在win32窗体上!
这个两个是一个exe完成的事情!大家在同一个进程里面!
#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);
}