Замем CreateProcess? Вот, наваял примерчик - GUI приложение создает консоль и выводит в неё текст.
| Код | #define WIN32_LEAN_AND_MEAN #include <tchar.h> #include <windows.h> #include <stdio.h> #include <fcntl.h> #include <io.h>
LRESULT CALLBACK WndProc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam ) { switch( msg ) { case WM_CREATE: { // Создаём консольное окно AllocConsole();
// Прикручиваем созданную консоль к стандартному потоку вывода int handle = _open_osfhandle( reinterpret_cast<long>( GetStdHandle( STD_OUTPUT_HANDLE ) ), _O_TEXT ); *stdout = *_fdopen( handle, "w" ); setvbuf( stdout, NULL, _IONBF, 0 ); } break;
case WM_LBUTTONDOWN: { // Выводим текст в консоль при нажатии левой кнопки мыши printf(" WM_LBUTTONDOWN (x=%d, y=%d)\n", (int)(LOWORD(lparam)), (int)(HIWORD(lparam)) ); } break;
case WM_DESTROY: { FreeConsole(); PostQuitMessage(0); } break;
default: return DefWindowProc( hwnd, msg, wparam, lparam ); }
return 0L; }
int WINAPI _tWinMain( HINSTANCE hInstance, HINSTANCE, LPTSTR, int nCmdShow ) { WNDCLASSEX wc = {0};
wc.cbSize = sizeof( wc ); wc.hbrBackground = GetSysColorBrush( COLOR_WINDOW ); wc.hCursor = LoadCursor( NULL, IDC_ARROW ); wc.hInstance = hInstance; wc.lpfnWndProc = WndProc; wc.lpszClassName = _T("DummyClass"); wc.style = CS_HREDRAW | CS_VREDRAW;
RegisterClassEx( &wc );
HWND hwnd = CreateWindowEx( WS_EX_OVERLAPPEDWINDOW, wc.lpszClassName, _T("Example"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL ); ShowWindow( hwnd, nCmdShow ); UpdateWindow( hwnd );
MSG msg = {0};
while( GetMessage( &msg, NULL, 0U, 0U ) ) { TranslateMessage( &msg ); DispatchMessage( &msg ); }
return static_cast<int>( msg.wParam ); }
|
|