| 
          
            
            
            
                       | 
        
                
          
                        | 
          
            
            
             
			  使用下面的C++程序就可以查出来: // RMXPClipboard.cpp : Defines the entry point for the console application. //
  #include "stdafx.h" #include <iostream> #include <Windows.h>
  using namespace std;
  int _tmain(int argc, _TCHAR* argv[]) {     int i = 0;     char name[100];     OpenClipboard(NULL);     while (i = EnumClipboardFormats(i))     {         GetClipboardFormatNameA(i, name, 100);         cout << i << ": " << name << endl;     }     CloseClipboard();     system("pause");     return 0; }              
                       | 
        
                
          
                        | 
          
            
            
             
			  为了看看RMXP程序到底在剪切板中放了什么内容,可以写一个C++程序把剪切板的内容输出到文件中。 程序代码: // RMXPClipboard.cpp : Defines the entry point for the console application. //
  #include "stdafx.h" #include <iostream> #include <Windows.h>
  using namespace std;
  int _tmain(int argc, _TCHAR* argv[]) {     OpenClipboard(NULL);     if (!IsClipboardFormatAvailable(50380))         return 1;
      HGLOBAL hMem = GetClipboardData(50380);     DWORD dwSize = GlobalSize(hMem);     cout << "Size: " << dwSize << endl;
      LPVOID data = GlobalLock(hMem);
      FILE *fp;     fopen_s(&fp, "clipboard.dat", "w");     fwrite(data, dwSize, 1, fp);     fclose(fp);
      CloseClipboard();     system("pause");     return 0; }              
                       | 
        
                
          
                        | 
          
            
            
            
			  运行程序后,输出的文件内容如下:               
                       | 
        
                
          
                        | 
          
            
            
            
			  测试时,我复制的是RMXP中的一个空白事件:               
                       | 
        
                
          
                        | 
          
            
            
             
			  根据这一线索,可以用C++编写一个程序,专门生成RMXP的各种事件,生成后粘贴到RMXP地图上就行了。             
                       | 
        
                
          
                        | 
          
            
            
            
			  复制一个魔塔样板中的老人事件:  其剪切板的内容如下:  其中的中文已经乱码。所以在编写程序时要注意编码的问题。              
                       | 
        
                
          
                        | 
          
            
            
             
			  根据一楼的程序运行结果的截图,可以得出的结论是:在RMXP中复制事件时,只产生了50380着一种剪切板内容格式。              
                       | 
        
                
          
                        | 
          
            
            
            
			  在RMXP中复制显示文章这一单条事件指令,产生的剪切板格式编号是50287,其名称为RPGXP EVENT_COMMAND。 例如,复制显示文章: \m[老人]注意:隐藏层不支持对话记录!       对话记录只支持固定数字的楼层。 其剪切板的内容为:               
                       | 
        
                
          
                        | 
          
            
              
                10樓                巨大八爪鱼
                2016-1-12 13:26
                                                 
               
             
            
            
			  为了修改剪切板中的内容,执行以下C++代码: char *data = (char *)GlobalLock(hMem); memcpy(data + 59, "abcdef", 6); GlobalUnlock(hMem); SetClipboardData(50287, hMem); 执行这段代码后,在RMXP事件编辑器中粘贴,可见其中一段内容已经成功改变:               
                       |