Цитата Pavluha:
пропадают некоторые русские буквы в вашем коде (только что заметил, что во всех кодах они пропадают). это из-за функции _GUICtrlRichEdit_StreamToFile($hRichEdit, $sStream_File) »
|
Да, нужно её поправить, в ней файл пишется в обычной кодировке:
Код:
...
__GUICtrlRichEdit_StreamToFile($hRichEdit, $sStream_File)
...
Func __GUICtrlRichEdit_StreamToFile($hWnd, $sFilespec, $fIncludeCOM = True, $iOpts = 0, $iCodePage = 0)
If Not _WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName) Then Return SetError(101, 0, False)
Local $iWparam
If StringRight($sFilespec, 4) = ".rtf" Then
$iWparam = _Iif($fIncludeCOM, $SF_RTF, $SF_RTFNOOBJS)
Else
$iWparam = _Iif($fIncludeCOM, $SF_TEXTIZED, $SF_TEXT)
If BitAND($iOpts, $SFF_PLAINRTF) Then Return SetError(1041, 0, False)
EndIf
; only opts are $SFF_PLAINRTF and $SF_UNICODE
If BitAND($iOpts, BitNOT(BitOR($SFF_PLAINRTF, $SF_UNICODE))) Then Return SetError(1042, 0, False)
If BitAND($iOpts, $SF_UNICODE) Then
If Not BitAND($iWparam, $SF_TEXT) Then Return SetError(1043, 0, False)
EndIf
If _GUICtrlRichEdit_IsTextSelected($hWnd) Then $iWparam = BitOR($iWparam, $SFF_SELECTION)
$iWparam = BitOR($iWparam, $iOpts)
If $iCodePage <> 0 Then
$iWparam = BitOR($iWparam, $SF_USECODEPAGE, BitShift($iCodePage, -16))
EndIf
Local $tEditStream = DllStructCreate($tagEDITSTREAM)
DllStructSetData($tEditStream, "pfnCallback", DllCallbackGetPtr($_GRC_StreamToFileCallback))
Local $hFile = FileOpen($sFilespec, 2+128) ; overwrite
If $hFile - 1 Then Return SetError(102, 0, False)
DllStructSetData($tEditStream, "dwCookie", $hFile) ; -> Send handle to CallbackFunc
_SendMessage($hWnd, $EM_STREAMOUT, $iWparam, $tEditStream, 0, "wparam", "struct*")
FileClose($hFile)
Local $iError = DllStructGetData($tEditStream, "dwError")
If $iError <> 0 Then SetError(700, $iError, False)
Return True
EndFunc
Цитата Pavluha:
всё стало норм, правда знаки переноса строки пропадают. Как сделать так, чтобы ничего не пропадало? »
|
Добавить параметр $fCrToCrLf:
Код:
$sRead = _GUICtrlRichEdit_GetText($hRichEdit, True)