【核心代碼】
// RXData.cpp : 定義控制台應用程序的入口點。
//
#include "stdafx.h"
#include "RubyMarshal.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
ostringstream stream; // 這是一個字符串的緩衝區
RubyMarshal rms(&stream);
rms.WriteHeader(); // 寫入Marshal的版本號4.8
rms.BeginArray(1); // 整個剪切板的內容是一個單元質數組
// ---- 從下面開始都是這個大數組的第一個元素的值 ------
rms.BeginObject("RPG::EventCommand", 3); // 這個數組的唯一元素是一個RPG::EventCommand對象的實例,該對象有3個成員變量
rms.BeginMember("code"); // 第一個成員變量code指定了事件指令編號
rms.WriteFixnum(101); // 「顯示文章」的編號為101
rms.BeginMember("indent"); // 第二個成員變量indent指定了事件指令在事件編輯器中的縮進程度
rms.WriteFixnum(0); // 縮進為0
rms.BeginMember("parameters"); // 第三個成員變量是事件指令的參數
rms.BeginArray(1); // 該成員變量的值是一個單元質數組
rms.WriteString("This is a string."); // 數組的唯一元素是一個字符串,指定了顯示文章的內容
// 注意,文章內容的編碼必須是UTF8編碼格式(準確的說是Unicode編碼的UTF8存儲方式)
// 在C++中,char字符數組可以存儲任何編碼的字符串,默認的編碼是ANSI編碼,而wchar_t字符數組存儲的字符串編碼一般為Unicode編碼的UTF16存儲方式。因此,使用wchar_t或wstring來存儲字符串時,可以先將UTF16存儲方式用WideCharToMultiByte函數轉換為UTF8存儲方式,最後再傳入WriteString方法里
// --------------------------------------------------
rms.Copy(CF_RPGXPEVENTCOMMAND); // 複製到剪切板中,括號中是剪切板的格式編號
return 0;
}
【運行程序後生成的剪切板內容】