Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Kalkidas Newsgroups: comp.lang.basic.visual.misc Subject: Re: RichEdit control question Date: Mon, 17 Oct 2011 15:59:12 -0700 Organization: A noiseless patient Spider Lines: 80 Message-ID: References: <01cc8b90$69e63db0$6d01a8c0@k8s8x> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Mon, 17 Oct 2011 22:57:20 +0000 (UTC) Injection-Info: mx04.eternal-september.org; posting-host="a85D89xrZPR1TT0sKrI4uw"; logging-data="15164"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/hvyHJh7Te147gBIcqJ/On" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20111012 Thunderbird/8.0 In-Reply-To: Cancel-Lock: sha1:avIV9uThjTQpTI4ndS1+spoJdHY= Xref: x330-a1.tempe.blueboxinc.net comp.lang.basic.visual.misc:507 On 10/17/2011 2:19 PM, Mayayana wrote: > OK, I got curious and did this. It's actually fairly > simple. > > Here's a basic sample that works in VB. Hopefully > you can translate it to .Bloat. As I was working on it > I wondered how one would make text visible again. > How do you know what text it is? You can't select > invisible text. I don't know whether a hidden word has > a character index. For instance: > > "The quick brown fox" > > quick begins at character index 4 and goes to index > 8. If I hide "quick", is it still at index 4, or is the space > before "brown" at index 4? If the latter, then how do I > find hidden text? If the former then how do I accurately > handle finding the caret position in the window, etc.? > > I don't know. I'll leave that issue to you. The way I did it > here, for the sake of the demo, is that one sub can hide > selected text or unhide all hidden text. You should be able > to use EM_GETCHARFORMAT to find out whether given text > is hidden, but as detailed above, I'm not sure how that > plays out. > > This sample was written in VB with a system-drawn > RichEdit v. 3 window. It won't work with a VB RTB. Maybe it > works with a VB.Net RTB? I don't know if VB.Net even has > an RTB. ?? One would hope they could put a basic RTB in > that 1/2 GB of support file slop that .Bloat requires... > > In any case, the RTB would need to be derived from > a RichEdit window and it would need to be using v. 3 or > later. (Some references say hidden text is available in > v. 2. In any case, v. 3 is available even in Win98 when one > creates a "RichEdit20A" from RICHED20.DLL. That DLL name > is the same for v. 2 and v. 3 for the sake of compatibility. > ... So you shouldn't need to worry about 2 vs 3.) > > I'll leave the constants declarations and such to you. > The following would be the VB6 code: > > '-------------------------------------------- > Public Sub HideText(Hide As Boolean) > Dim LRet As Long > Dim CF2 As CHARFORMAT2 > With CF2 > .cbSize = 84 > .dwMask = CFM_HIDDEN > If Hide = True Then .dwEffects = CFE_HIDDEN '-- leave this out to > unhide. > End With > > If Hide = True Then > SendMessageAny hRTB, EM_SETCHARFORMAT, SCF_SELECTION, CF2 > Else > SendMessageAny hRTB, EM_SETCHARFORMAT, SCF_ALL, CF2 > End If > End Sub > '---------------------------------------------- > > To hide currently selected text: HideText True > To unhide all hidden text in the window: HideText False > > As you can see, the actual method is not really very > complex. It just can't be done with a VB RTB because that > wraps RichEdit v. 1. Can .Bloat handle system-drawn > windows? I don't know. If not, and if it doesn't have a > usable RTB -- and if you know VB -- you could download > the RTB from vbaccelerator, edit that code to include > the hidden functionality, then compile it. (The vbaccelerator > sample also provides all the declarations, if you need those.) Interesting. SendMessageAny with CF2.dwmask set to CFM_Hidden and with selection set to SCF_ALL does indeed globally un-hide all the hidden words in the document. But what values will re-hide them? There must be a way.