初めまして。
これからお世話になるかも知れませんが、宜しくお願いします。
現在、リッチエディットコントロールを使用したテキストエディタを作っているのですが、それをRTFファイル形式で保存する方法がわかりません。
色々と調べてみたのですが、どれもCなどの解説なので、コールバック関数など、ABではどうすればよいのかわかりません。
(RADツールを使って開発しています)
宜しくお願いします。
リッチエディットコントロールのRTF保存について
Re: リッチエディットコントロールのRTF保存について
RTFは使ったこと無いですが、エディットストリームは使ったことがあるので書きなおしてみました。> 現在、リッチエディットコントロールを使用したテキストエディタを作っているのですが、それをRTFファイル形式で保存する方法がわかりません。
> 色々と調べてみたのですが、どれもCなどの解説なので、コールバック関数など、ABではどうすればよいのかわかりません。
テストしてませんけど...流れは以下のようになるでしょうか?
コード: 全て選択
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で保存することができました。
EDITSTREAM構造体はABでは未定義のようだったので、自分で定義する必要がありましたが、RTFファイルは作られても空だったり、強制終了してしまったりと、色々ありましたが、成功しました。
今度はそれの読み込みをやってみようと思います。
Tomorrowさんありがとうございました。
EDITSTREAM構造体はABでは未定義のようだったので、自分で定義する必要がありましたが、RTFファイルは作られても空だったり、強制終了してしまったりと、色々ありましたが、成功しました。
今度はそれの読み込みをやってみようと思います。
Tomorrowさんありがとうございました。