Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C dengan Titik Masuk WinMain?

Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C dengan Titik Masuk WinMain?

Patricia Arquette
Lepaskan: 2024-11-19 10:03:02
asal
544 orang telah melayarinya

How to Display Console Output in a Windows C   Program with a WinMain Entry Point?

Mengoutputkan Teks Konsol dalam Windows C

Aturcara C asli yang dijalankan pada Windows boleh menggunakan antara muka baris arahan untuk memaparkan output konsol. Walau bagaimanapun, jika titik masuk program ditakrifkan sebagai WinMain, cara melihat data yang dicetak menggunakan fungsi output standard seperti std::cout tidak dapat dilihat dengan segera.

Penyelesaian:

Terdapat beberapa pendekatan untuk mencapai output konsol dalam senario ini:

1. Menggunakan Fungsi Ubah Hala:

Laksanakan fungsi ubah hala tersuai yang memintas strim I/O standard dan menghalakannya ke konsol. Berikut ialah contoh menggunakan API Win32:

guicon.cpp

#include <windows.h>
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <iostream>
#include <fstream>
using namespace std;

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

  AllocConsole();
  GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
  coninfo.dwSize.Y = MAX_CONSOLE_LINES;
  SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);

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

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

  lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
  hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
  fp = _fdopen(hConHandle, "w");
  *stderr = *fp;
  setvbuf(stderr, NULL, _IONBF, 0);

  ios::sync_with_stdio();
}
Salin selepas log masuk

Kemudian, masukkan fungsi ini dalam program anda dan panggilnya sebelum menggunakan fungsi output standard.

2. Mengubah hala Output Konsol ke Fail:

Pilihan lain ialah mengubah hala output konsol ke fail, yang kemudiannya boleh dilihat menggunakan editor teks. Ini boleh dilakukan dengan mengubah suai baris arahan program:

program.exe 1>output.txt 2>&1
Salin selepas log masuk

Dalam contoh ini, output standard dan ralat standard dialihkan ke fail "output.txt".

3 . Menggunakan Kompilasi Bersyarat:

Jika program anda menyasarkan pembangunan atau penyahpepijatan secara khusus, anda boleh menggunakan kompilasi bersyarat untuk memasukkan output konsol hanya apabila perlu. Sebagai contoh, anda boleh membungkus pernyataan output konsol anda dalam blok #ifdef _DEBUG.

Contoh Pelaksanaan:

test.cpp

#include <iostream>

#ifdef _DEBUG
int main() {
  std::cout << "Hello, world!" << std::endl;
  return 0;
}
#endif
Salin selepas log masuk

Secara lalai, program ini tidak akan mengeluarkan apa-apa. Walau bagaimanapun, apabila disusun dengan makro prapemproses _DEBUG yang ditakrifkan, ia akan mencetak "Hello, dunia!" ke konsol.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Output Konsol dalam Program Windows C dengan Titik Masuk WinMain?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan