我最近剛從頭開始準備電腦軟體設計丙級的考試,遇到需要在Windows Form設定一個Button和PrintDocument,並在按下Button之後,列印考生答案和一些基本資料。考生的答案會先顯示在Windows Form上(有一個標準答案),按下列印答案的Button之後才會出現預覽文件的樣子。
我有買一本用C++解題的書,但我在他的網站上發現他全部都是用Visual Basic寫的,網路上也很少講到用C++列印那些的寫法。他用VB寫的是,直接在Button寫Call PrintDocument元件,然後在PD的程式碼部份寫要列印的資料和答案。
想請有看到的人能夠幫我解答一下或是有經驗可以分享給我,謝謝!
#include <cstdio>
#include <cstdlib>
#include <string>
#include <Windows.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cctype>
#include <locale>
using namespace std;
string studentData; // 用來儲存考生資料和答案的全局變數
// 列印文件的 PrintPage 事件處理函數
void printDocument_PrintPage(Object^ sender, System::Drawing::Printing::PrintPageEventArgs^ e)
{
    // 創建一個新的 Font
    System::Drawing::Font^ font = gcnew System::Drawing::Font("Arial", 12);
    // 創建一個新的 Brush
    System::Drawing::Brush^ brush = gcnew System::Drawing::SolidBrush(System::Drawing::Color::Black);
    // 將考生資料和答案寫入列印文件
    e->Graphics->DrawString(gcnew System::String(studentData.c_str()), font, brush, 50, 50);
}
// 按鈕的 Click 事件處理函數
void printButton_Click(Object^ sender, EventArgs^ e)
{
    // 創建一個新的 PrintDocument
    System::Drawing::Printing::PrintDocument^ printDocument = gcnew System::Drawing::Printing::PrintDocument();
    // 添加列印事件
    printDocument->PrintPage += gcnew System::Drawing::Printing::PrintPageEventHandler(printDocument_PrintPage);
    // 創建一個新的 PrintPreviewDialog
    System::Windows::Forms::PrintPreviewDialog^ printPreviewDialog = gcnew System::Windows::Forms::PrintPreviewDialog();
    // 將 PrintDocument 設置為預覽對話框的列印文件
    printPreviewDialog->Document = printDocument;
    // 顯示列印預覽對話框
    printPreviewDialog->ShowDialog();
}