⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 05o020.htm

📁 VC知识库5_chm_decompile_20040520_210715
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title></title>
<link rel="stylesheet" type="text/css" href="../../vckbase.css">
</head>

<body>

<div align="justify">
  <table border="0" width="100%" class="font" height="57">
    <tr>
      <td width="27%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">VC知识库(五)</font>
      </td>
      <td width="73%" height="6" class="bigfont" bgcolor="#B8CFE7" align="center" bordercolor="#800080">
      <font color="#800080">www.vckbase.com</font>
      </td>
    </tr>
    <tr>
      <td width="100%" height="4" class="header" valign="top" align="center" colspan="2">
      <hr>
      </td>
    </tr>
    <tr>
      <td width="100%" height="17" class="header" valign="top" align="center" colspan="2">
<small>
<big>如何设置RTF Control中的内容</big> 
</small> 
      </td> 
    </tr> 
    <tr> 
      <td width="100%" height="17" class="info" align="center" colspan="2"> 
      <small>闻怡洋 wyy_cq@188.net http://www.hchelp.com</small>
      </td>  
    </tr>  
    <tr> 
      <td width="100%" height="22" class="font" colspan="2">
        <hr>
      </td>  
    </tr> 
    <tr> 
      <td width="100%" height="5" class="font" colspan="2"> 
<small>
<p>
RTF控件为我们开发提供了很大的方便并减轻了我们开发的工作量,但是它并没有提供一种类似于SetWindowText的简便方法让我们存取内容。一般的方法可以是插入文本再进行格式化,或是利用回调函数进行设置,针对这一原因本文讲述一种利用CString变量存取RTF Contrl中的文本内容的方法,虽然这也是建立在回调函数之上的却可以使其具有重用性。 
</p> 
<p>1、定义回调函数<br> 
<pre>
</small><font size="3">static DWORD CALLBACK EditStreamCallBack(DWORD dwCookie, LPBYTE pbBuff, LONG cb, 
					LONG *pcb)
{
	CString *pstr = (CString *)dwCookie;

	if( pstr-&gt;GetLength() &lt; cb )
	{
		*pcb = pstr-&gt;GetLength();
		memcpy(pbBuff, (LPCSTR)*pstr, *pcb );
		pstr-&gt;Empty();
	}
	else
	{
		*pcb = cb;
		memcpy(pbBuff, (LPCSTR)*pstr, *pcb );
		*pstr = pstr-&gt;Right( pstr-&gt;GetLength() - cb );
	}
	return 0;
}
</font></pre>
<small>
<br>
参数dwCokkie为用户定义数据,我们利用他传入一个CString的指针,pbBuff为RTF用于保存数据的缓冲,cb为RTF要求的数据量,pcb为用户提供的数据量(返回值),如果该数值如果小于cb表示写数据结束,RTF将停止调用回调函数。请注意该函数将被RTF调用一次或多次。函数说明中的CALLBACK一定要加上。
<p>
2、定义新类<br>
<br>
</small>
<font size="3">CNewRTF::SetRTFText(....)<br>
{<br>
CString rtfPrefix, rtfPostfix;<br>
rtfPrefix = &quot;{\\rtf1\\ansi\\deff0\\deftab720{\\fonttbl{\\f0\\froman &quot;<br>
&quot;Times New Roman;}}\n{\\colortbl\\red0\\green0\\blue0;}\n&quot;<br>
&quot;\\deflang1033\\pard\\tx360\\tx720\\tx1080\\tx1440\\tx1800&quot;<br>
&quot;\\tx2160\\tx2520\\tx2880\\tx3240\\tx3600\\tx3960\\tx4320&quot;<br>
&quot;\\tx4680\\tx5040\\tx5400\\tx5760\\tx6120&quot;<br>
&quot;\\tx6480\\plain\\f3\\fs20 &quot;;<br>
rtfPostfix = &quot;\n\\par }&quot;;<br>
<br>
<br>
//DEMO String 你可用自己的参数替代<br>
CString rtfString = rtfPrefix + &quot;\\b Bold\\b0&quot; + rtfPostfix;<br>
<br>
EDITSTREAM es = {(DWORD)&amp;rtfString, 0, EditStreamCallBack};<br>
<br>
StreamIn(SF_RTF | SFF_SELECTION, es);<br>
}</font>
<small>
<br>
<p>关于读RTF的方法也可类似实现。</p>
</small>
      <p>  
      </td>    
    </tr>   
    <tr>
      <td width="100%" height="12" class="font" colspan="2"> 
      </td>    
    </tr>
    <tr>
      <td width="100%" height="6" class="font" colspan="2"> 
      </td>    
    </tr>
    <tr>
      <td width="100%" height="8" class="font" colspan="2"> 
      </td>    
    </tr>
    <tr>   
      <td width="100%" height="17" class="font" colspan="2"></td>    
    </tr>   
  </table>    
</div>    
    
</body>    
    
</html>    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -