Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C Asli?

DDD
Lepaskan: 2024-11-20 16:04:15
asal
524 orang telah melayarinya

How to Display Console Output in a Native C   Windows Program?

Memaparkan Output Konsol dalam Program Windows C Asli

Dalam program C Windows menggunakan titik masuk WinMain, output konsol yang dijana oleh fungsi seperti std: :cout mungkin tidak kelihatan secara lalai. Ini kerana aplikasi antara muka pengguna grafik (GUI) biasanya tidak mempunyai tetingkap konsol yang dikaitkan dengannya.

Penyelesaian:

1. Lampirkan Konsol pada Aplikasi:

  • Gunakan fungsi AllocConsole() untuk mencipta tetingkap konsol baharu untuk program anda.
  • Ubah hala input standard (STDIN), output ( STDOUT), dan ralat (STDERR) mengalir ke konsol baharu menggunakan fungsi seperti _open_osfhandle() dan _fdopen().

2. Ubah hala Output Konsol ke Fail:

  • Jika anda tidak boleh mengubah suai pangkalan kod, anda masih boleh melihat output konsol dengan mengubah halanya ke fail teks.
  • Gunakan FreeConsole( ) untuk melepaskan pemegang konsol.
  • Panggil OutputDebugString() untuk mengubah hala output ke fail, yang boleh dilihat menggunakan alat nyahpepijat seperti DebugView.

Kod Contoh Menggunakan Pengalihan Konsol:

Coretan kod berikut menunjukkan cara melampirkan konsol pada program Windows dan mengubah hala strim kepadanya:

void RedirectIOToConsole()
{
    int hConHandle;
    long lStdHandle;
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    FILE *fp;

    // Allocate a console for this app
    AllocConsole();

    // Set the screen buffer size for scrolling
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
    coninfo.dwSize.Y = 500;
    SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);

    // Redirect stdout
    lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen(hConHandle, "w");
    *stdout = *fp;
    setvbuf(stdout, NULL, _IONBF, 0);

    // Redirect stdin
    lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen(hConHandle, "r");
    *stdin = *fp;
    setvbuf(stdin, NULL, _IONBF, 0);

    // Redirect stderr
    lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen(hConHandle, "w");
    *stderr = *fp;
    setvbuf(stderr, NULL, _IONBF, 0);
}
Salin selepas log masuk

Sertakan Pengepala:

#include "guicon.h"
Salin selepas log masuk

Penggunaan:

#ifdef _DEBUG
    RedirectIOToConsole();
#endif
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C Asli?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan