リッチエディットコントロールのRTF保存について

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: リッチエディットコントロールのRTF保存について

ありがとうございました

by CURA » 2006年1月18日(水) 17:18

なんとか、無事にRTFで保存することができました。
EDITSTREAM構造体はABでは未定義のようだったので、自分で定義する必要がありましたが、RTFファイルは作られても空だったり、強制終了してしまったりと、色々ありましたが、成功しました。
今度はそれの読み込みをやってみようと思います。
Tomorrowさんありがとうございました。

Re: リッチエディットコントロールのRTF保存について

by Tomorrow » 2006年1月16日(月) 15:35

> 現在、リッチエディットコントロールを使用したテキストエディタを作っているのですが、それをRTFファイル形式で保存する方法がわかりません。
> 色々と調べてみたのですが、どれもCなどの解説なので、コールバック関数など、ABではどうすればよいのかわかりません。
RTFは使ったこと無いですが、エディットストリームは使ったことがあるので書きなおしてみました。
テストしてませんけど...流れは以下のようになるでしょうか?

コード: 全て選択

	Dim hFile As HANDLE	'ファイルハンドル
	Dim es As EDITSTREAM	'ストリーム使用

	'ファイルオープンしてファイルハンドルを取得
	hFile=CreateFile(lpFileName, GENERIC_WRITE, 0, ByVal 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)

	'ファイルハンドルとコールバック関数アドレスを渡す
	es.dwCookie=hFile As DWordPtr
	es.pfnCallback=AddressOf(EditStreamOutCallback)

	'ファイルにRichEditの内容をRTFで書き込む
	SendMessage(hEdit, EM_STREAMOUT, SF_RTF, VarPtr(es) As LPARAM)

	'ファイルハンドルを閉じる
	CloseHandle(hFile)


'エディットストリームコールバック
Function EditStreamOutCallback(dwCookie As DWordPtr, pbBuff As BytePtr, cb As Long, pcb As *Long) As DWord
	'ファイルへ書き込む
	If WriteFile(dwCookie As HANDLE, pbBuff, cb, pcb As DWordPtr, ByVal NULL)=FALSE Then
		EditStreamOutCallback = TRUE
	Else
		EditStreamOutCallback = FALSE
	End If
End Function

詳しくは、
http://www.kumei.ne.jp/c_lang/sdk2/sdk_133.htm
http://msdn.microsoft.com/library/defau ... frame=true
http://yokohama.cool.ne.jp/chokuto/uraw ... ertf1.html

などを自分で調べてください。

リッチエディットコントロールのRTF保存について

by CURA » 2006年1月15日(日) 12:23

初めまして。
これからお世話になるかも知れませんが、宜しくお願いします。

現在、リッチエディットコントロールを使用したテキストエディタを作っているのですが、それをRTFファイル形式で保存する方法がわかりません。
色々と調べてみたのですが、どれもCなどの解説なので、コールバック関数など、ABではどうすればよいのかわかりません。
(RADツールを使って開発しています)
宜しくお願いします。

ページトップ