| 1 |
|
|---|
| 2 | ;
|
|---|
| 3 | ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|---|
| 4 | ; AS IN 3.3.12.0 .... note the ? marks in the iWparam statements ... BUT MAINLY the "If $hFile - 1 Then ..." statement
|
|---|
| 5 | ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|---|
| 6 |
|
|---|
| 7 | ; #FUNCTION# ====================================================================================================================
|
|---|
| 8 | ; Authors........: Chris Haslam (c.haslam)
|
|---|
| 9 | ; Modified ......:
|
|---|
| 10 | ; ===============================================================================================================================
|
|---|
| 11 | Func _GUICtrlRichEdit_StreamToFile($hWnd, $sFilespec, $bIncludeCOM = True, $iOpts = 0, $iCodePage = 0)
|
|---|
| 12 | If Not _WinAPI_IsClassName($hWnd, $__g_sRTFClassName) Then Return SetError(101, 0, False)
|
|---|
| 13 |
|
|---|
| 14 | Local $iWparam
|
|---|
| 15 | If StringRight($sFilespec, 4) = ".rtf" Then
|
|---|
| 16 | $iWparam = ($bIncludeCOM ? $SF_RTF : $SF_RTFNOOBJS)
|
|---|
| 17 | Else
|
|---|
| 18 | $iWparam = ($bIncludeCOM ? $SF_TEXTIZED : $SF_TEXT)
|
|---|
| 19 | If BitAND($iOpts, $SFF_PLAINRTF) Then Return SetError(1041, 0, False)
|
|---|
| 20 | EndIf
|
|---|
| 21 | ; only opts are $SFF_PLAINRTF and $SF_UNICODE
|
|---|
| 22 | If BitAND($iOpts, BitNOT(BitOR($SFF_PLAINRTF, $SF_UNICODE))) Then Return SetError(1042, 0, False)
|
|---|
| 23 | If BitAND($iOpts, $SF_UNICODE) Then
|
|---|
| 24 | If Not BitAND($iWparam, $SF_TEXT) Then Return SetError(1043, 0, False)
|
|---|
| 25 | EndIf
|
|---|
| 26 |
|
|---|
| 27 | If _GUICtrlRichEdit_IsTextSelected($hWnd) Then $iWparam = BitOR($iWparam, $SFF_SELECTION)
|
|---|
| 28 |
|
|---|
| 29 | $iWparam = BitOR($iWparam, $iOpts)
|
|---|
| 30 | If $iCodePage <> 0 Then
|
|---|
| 31 | $iWparam = BitOR($iWparam, $SF_USECODEPAGE, BitShift($iCodePage, -16))
|
|---|
| 32 | EndIf
|
|---|
| 33 | Local $tEditStream = DllStructCreate($tagEDITSTREAM)
|
|---|
| 34 | DllStructSetData($tEditStream, "pfnCallback", DllCallbackGetPtr($__g_pGRC_StreamToFileCallback))
|
|---|
| 35 | Local $hFile = FileOpen($sFilespec, $FO_OVERWRITE)
|
|---|
| 36 | If $hFile - 1 Then Return SetError(102, 0, False) ;<<<<<<<<<<<<<<<<<<<<<<<<<<< problem
|
|---|
| 37 |
|
|---|
| 38 | DllStructSetData($tEditStream, "dwCookie", $hFile) ; -> Send handle to CallbackFunc
|
|---|
| 39 | _SendMessage($hWnd, $EM_STREAMOUT, $iWparam, $tEditStream, 0, "wparam", "struct*")
|
|---|
| 40 | FileClose($hFile)
|
|---|
| 41 | Local $iError = DllStructGetData($tEditStream, "dwError")
|
|---|
| 42 | If $iError <> 0 Then SetError(700, $iError, False)
|
|---|
| 43 | Return True
|
|---|
| 44 | EndFunc ;==>_GUICtrlRichEdit_StreamToFile
|
|---|
| 45 |
|
|---|
| 46 |
|
|---|
| 47 | ;
|
|---|
| 48 | ; AS IT WAS IN 3.3.8.1 ... for reference <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|---|
| 49 | ;
|
|---|
| 50 | ; #FUNCTION# ====================================================================================================================
|
|---|
| 51 | ; Name ..........: _GUICtrlRichEdit_StreamToFile
|
|---|
| 52 | ; Description....: Writes contens of a control to a file
|
|---|
| 53 | ; Syntax ........: _GUICtrlRichEdit_StreamToFile($hWnd, $sFilespec[, $fIncludeCOM=True[, $iOpts=0[, $iCodePage = 0]]])
|
|---|
| 54 | ; Parameters.....: $hWnd - Handle to the control
|
|---|
| 55 | ; $sFileSpec - file specification
|
|---|
| 56 | ; $fIncludeCOM - (Optional)
|
|---|
| 57 | ; |True (default):
|
|---|
| 58 | ; | If writing to a .rtf file, includes any COM objects (space consuming)
|
|---|
| 59 | ; | If writing to any other file, writes a text represntation of COM objects
|
|---|
| 60 | ; |False: Writes spaces instead of COM objects
|
|---|
| 61 | ; $iOpts - additional options: (Optional) (default: 0)
|
|---|
| 62 | ; |$SFF_PLAINTRTF - write only rich text keywords common to all languages
|
|---|
| 63 | ; |$SF_UNICODE - write Unicode
|
|---|
| 64 | ; $iCodePage - Generate UTF-8 and text using this code page (Optional)
|
|---|
| 65 | ; |Default: do not
|
|---|
| 66 | ; Return values..: Success - True
|
|---|
| 67 | ; Failure - False and sets @error:
|
|---|
| 68 | ; |101 - $hWnd is not a handle
|
|---|
| 69 | ; |102 - Can't create $sFilespec
|
|---|
| 70 | ; |1041 - $SFF_PLAINRTF is invalid for a text file
|
|---|
| 71 | ; |1042 - $opts: invalid option
|
|---|
| 72 | ; |1043 - $SF_UNICODE is only valid for a text file
|
|---|
| 73 | ; |700 - internal error
|
|---|
| 74 | ; Authors........: Chris Haslam (c.haslam)
|
|---|
| 75 | ; Modified ......:
|
|---|
| 76 | ; Remarks .......: If text is selected, writes only the selection, else writes all text in the control
|
|---|
| 77 | ;+
|
|---|
| 78 | ; If the extension in $sFileSpec is .rtf, RTF is written, else text
|
|---|
| 79 | ; Related .......: _GUICtrlRichEdit_SetLimitOnText, _GUICtrlRichEdit_StreamFromVar, _GUICtrlRichEdit_StreamToFile
|
|---|
| 80 | ; Link ..........: @@MsdnLink@@ EM_STREAMIN
|
|---|
| 81 | ; Example .......: Yes
|
|---|
| 82 | ; ===============================================================================================================================
|
|---|
| 83 | Func _GUICtrlRichEdit_StreamToFile($hWnd, $sFilespec, $fIncludeCOM = True, $iOpts = 0, $iCodePage = 0)
|
|---|
| 84 | If Not _WinAPI_IsClassName($hWnd, $_GRE_sRTFClassName) Then Return SetError(101, 0, False)
|
|---|
| 85 |
|
|---|
| 86 | Local $iWparam
|
|---|
| 87 | If StringRight($sFilespec, 4) = ".rtf" Then
|
|---|
| 88 | $iWparam = _Iif($fIncludeCOM, $SF_RTF, $SF_RTFNOOBJS)
|
|---|
| 89 | Else
|
|---|
| 90 | $iWparam = _Iif($fIncludeCOM, $SF_TEXTIZED, $SF_TEXT)
|
|---|
| 91 | If BitAND($iOpts, $SFF_PLAINRTF) Then Return SetError(1041, 0, False)
|
|---|
| 92 | EndIf
|
|---|
| 93 | ; only opts are $SFF_PLAINRTF and $SF_UNICODE
|
|---|
| 94 | If BitAND($iOpts, BitNOT(BitOR($SFF_PLAINRTF, $SF_UNICODE))) Then Return SetError(1042, 0, False)
|
|---|
| 95 | If BitAND($iOpts, $SF_UNICODE) Then
|
|---|
| 96 | If Not BitAND($iWparam, $SF_TEXT) Then Return SetError(1043, 0, False)
|
|---|
| 97 | EndIf
|
|---|
| 98 |
|
|---|
| 99 | If _GUICtrlRichEdit_IsTextSelected($hWnd) Then $iWparam = BitOR($iWparam, $SFF_SELECTION)
|
|---|
| 100 |
|
|---|
| 101 | $iWparam = BitOR($iWparam, $iOpts)
|
|---|
| 102 | If $iCodePage <> 0 Then
|
|---|
| 103 | $iWparam = BitOR($iWparam, $SF_USECODEPAGE, BitShift($iCodePage, -16))
|
|---|
| 104 | EndIf
|
|---|
| 105 | Local $tEditStream = DllStructCreate($tagEDITSTREAM)
|
|---|
| 106 | DllStructSetData($tEditStream, "pfnCallback", DllCallbackGetPtr($_GRC_StreamToFileCallback))
|
|---|
| 107 | Local $hFile = FileOpen($sFilespec, 2) ; overwrite
|
|---|
| 108 | If $hFile - 1 Then Return SetError(102, 0, False)
|
|---|
| 109 |
|
|---|
| 110 | DllStructSetData($tEditStream, "dwCookie", $hFile) ; -> Send handle to CallbackFunc
|
|---|
| 111 | _SendMessage($hWnd, $EM_STREAMOUT, $iWparam, $tEditStream, 0, "wparam", "struct*")
|
|---|
| 112 | FileClose($hFile)
|
|---|
| 113 | Local $iError = DllStructGetData($tEditStream, "dwError")
|
|---|
| 114 | If $iError <> 0 Then SetError(700, $iError, False)
|
|---|
| 115 | Return True
|
|---|
| 116 | EndFunc ;==>_GUICtrlRichEdit_StreamToFile
|
|---|
| 117 |
|
|---|