Enable built in justify-alignment in a rich textbox from vb.net

50 %
50 %
Information about Enable built in justify-alignment in a rich textbox from vb.net

Published on October 24, 2014

Author: DavidRossGoben

Source: slideshare.net


This sample article shows VB.NET developers how to easily enable built-in Full Text Justification within their Rich Text Box controls

1. Enable Built-In Justify-Alignment in a RichTextBox from VB.NET By David Ross Goben Copyright © 2014 by David Ross Goben All rights reserved. Last Update: Thursday, October 23, 2014 This is a sample excerpt from the free PDF e-book, Enhancing Visual Basic .NET Far Beyond the Scope of Visual Basic 6.0, by David Ross Goben. Download this e-book, and its free companion, Navigating Your Way Through Visual Basic 6.0 Upgrades to Visual Basic .NET, also by David Ross Goben, at www.slideshare.net/davidrossgoben. They are also available on Google Docs at https://docs.google.com/leaf?id=0B_Dj_dKazINlN2JlY2EwMmEtNGUyMy00NzQzLTliN2QtMDhlZTc5NDUzY2E5&sort=name&layout =list&num=50. Table of Contents Black Book Tip # 30: Enable Built-In Justify-Alignment in a RichTextBox from VB.NET.............................408

2. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Black Book Tip # 30 Enable Built-In Justify-Alignment in a RichTextBox from VB.NET Previously, in Black Book Tip # 9, I provided a class that you could use to easily display fully justified text from a TextBox control. I have been asked by a number of people if I would also modify this class, or create another one, to additionally work with a RichTextBox control. This is actually very easy to do, and any developer worth the status of being just intermediately knowledgeable of Visual Basic .NET should be able to make those changes by modifying only a few lines of code. However, if you have used the WordPad application in Windows 8, or the incredible and free Jarte Rich Text Editor (“Unlock the power behind Microsoft’s WordPad”; www.jarte.com), you may have noticed that both of these applications feature not only the standard Left, Right, and Center alignment options, but they also feature a fourth option, Justify, which performs fast and perfect full text justification on their Rich Text Format data. This extended functionality featured in these text processors is not performed by auxiliary code within these applications, perhaps doing something similar to what I did for a TextBox, but this enhanced functionality is actually built right into the RichTextBox control that ships with Dot Net and with Microsoft Windows ever since Windows XP was released, and is fully capable of performing Full Text justification on its own (for more technical details, please refer to MSDN’s “About Rich Edit Controls” at http://msdn.microsoft.com/en-us/ library/windows/desktop/bb787873(v=vs.85).aspx). Windows XP Shipped with the new RichEdit Control 3.0. The thing that is probably confusing about this was that its DLL was still named Riched20.DLL, the system still sported a RichEdit 1.0 emulator, and its class name remained RICHEDIT_CLASS. Windows XP SP1 and all versions of Windows following it additionally featured the newest Rich Text Editor Class, version 4.1, renamed Msftedit.DLL, and with a new class name of MSFTEDIT_CLASS. But even so, by default Dot NET still uses RichEdit 3.0. But now that you know that the RichTextBox control you might have been using for years sports this powerful, yet clandestine functionality, you may be wondering how to access it. After all, the control’s SelectionAlignment property does not accept anything except the values HorizontalAlignment.Left, HorizontalAlignment.Right, and HorizontalAlignment.Center. What gives? Actually, just two things stand in your way from using Full Text Justification and many other new features in your RichTextBox control. The first is the HorizontalAllignment class that is used to service the SelectionAlignment property of the RichTextBox control, and the other is turning on the control’s advanced typography options so that enhanced line-breaking and line formatting options are enabled. The HorizontalAlighment class is defined to support only 3 values: 1=Left-Align, 2=Right-Align, and 3=Center-Align. Anything outside this integer range will result in an exception error. Sadly, the needed new Justify option is an integer value of 4. However, we can “cheat” by simply sending it a message. What we need to do is pass a PARAFORMAT structure (no need for the much longer PARAFPORMAT2. for our purposes) to the RichTextBox control with the appropriate alignment value set. But just that is not enough. We also need to inform the RichTextBox that we want it to enable its Advanced Typography Options, which will enable the advanced line-breaking and line formatting options to be enabled. Without this, the text will simply remain left-aligned, which is its default state. Page 408 of 419

3. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben For some time there has been a bit of a clatter on the web regarding this issue. Everyone wants to know how to do it, and I have seen quite a number of people offer up solutions, mostly in C#, in which they usually state, “I think this should work…”, but all of them I have seen, and there are a lot, actually fail, but they fail because they do not address this advanced typography issue that MSDN keeps referencing in their notes. That being said, Lars Larson out of Denmark is the only other person who has managed to cobble together a free-ware solution, though he did so by brute force as he was trying to help someone else out. I managed my own more robust version by reading the tea leaves in the MSDN documentation. Actually, when the documentation states that “you must also send the RichTextBox a EM_SETTYPOGRAPHYOPTIONS message to enable advanced line formatting”, it is probably a good idea not to ignore it, though most of us are too focused on sending a 4=Justify instruction to a RichTextBox. So, for as complicated as most people make it out to be, what we really need to do is the following: 1. Issue a SendMessageLong(RTB.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY) command to the RichTextBox to enable advanced typography options. 2. Define a PARAFORMAT structure, sets its length and alignment members, and send this structure as a message to the Page 409 of 419 RichTextBox control. That being said, why not spiff it up further by apply these changes to the text without causing any of the usual and maddening RichTextBox flicker, especially if we need to select its whole text? We can select the text, without flickering or any brief blanking of the RichTextBox control by instead selecting text by sending an EM_SETSEL message to the RichTextBox control, along with a tiny CHARRANGE structure that will specify the Selection Start index and the Selection Length. The listing below is my modJustifyRTB modules, to force a RichTextBox to justify its text. You can use it like this: justifyRTB(myRichTextBox, TextAlign.Justify), which you can issue immediately after loading the Rich Text control with a file or loading it with text data: Option Strict On Option Explicit On '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- ' modJustyRTB ' Provide extended RichTextBox services. Beyond Providing Default Left, Right, ' and Center Alignment, a fourth feature is provided, Justify, which allows full ' Text justification. ' ' The JustifyRTB() function provides this service: '------------------------------------------------------------------------------- ' Method : justifyRTB (as Function or Subroutine) ' Purpose : Performs advanced alignment features on a RichTextBox, ' : featuring Left, Right, Center, and Justify alignment. '------------: ' Parameters : RTB -- the RichTextBox control. ' : Alignment -- from the TextAlign enumeration: Left, Right, Center, Justify. ' : SelStart -- Start index of text to apply the alignment to. ' : If SelStart = -1, then apply the alignment to the entire text. ' : If SelStart = -2, then use the SelectionStart and SelectionLength ' : properties of RTB to set the range. ' : SelEnd -- Character length of text to apply alignment to. ' : If SelEnd = -1, then select to the end of the Text. ' : ResetSelection = True if you want to turn the selection back off (default). ' : Set this parameter to False if you want it left intact. '------------: ' NOTE : When SelStart is set to -1 or -2, then SelEnd is ignored. ' : ' Returns : TRUE -- Advanced options were applied. ' : FALSE -- Advanced options application Failed. ' USES : RTBFastSelect() function for faster text selection without flicker.' '------------------------------------------------------------------------------- ' Method : RTBFastSelect (as Function or Subroutine). ' Purpose : Provide Fast Text selection service for a RichTextBox. '------------: ' Parameters : RTBHandle -------- Handle of RichTextBox to select text within. ' : SelectionStart --- Start index of text to apply the alignment to. ' : SelectionLength -- Character length of text to selection. ' Returns : <> 0 -- Executed successfully. ' : 0 ------ Failure. Likely index or length value was invalid.

4. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben '------------------------------------------------------------------------------- '------------------------------------------------------------------------------- Imports System.Runtime.InteropServices Module modJustyRTB '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ '------------------------------------------------------------------------------- 'Enumeratiuon to specify extended text alignment in the RichTextBox '------------------------------------------------------------------------------- Friend Enum TextAlign As Integer Left = 1 'left align Right = 2 'right align Center = 3 'center text Justify = 4 'full justify (new as of RICHEDIT20.DLL version 3.0) Page 410 of 419 End Enum '------------------------------------------------------------------------------- 'structure used to extend text alignment in a RichTextBox '------------------------------------------------------------------------------- <StructLayout(LayoutKind.Sequential)> Private Structure PARAFORMAT Dim cbsize As Short 'size of this structure Dim dwpad As Short Dim dwMask As Integer Dim wNumbering As Short Dim wReserved As Short Dim dxStartIndent As Int32 Dim dxRightIndent As Int32 Dim dxOffset As Int32 Dim wAlignment As Short Dim cTabCount As Short <VBFixedArray(31)> Dim lTabstops() As Int32 End Structure '------------------------------------------------------------------------------- 'Used Constants '------------------------------------------------------------------------------- Private Const WM_USER As Short = &H400S Private Const EM_SETPARAFORMAT As Int32 = (WM_USER + 71) Private Const EM_SETTYPOGRAPHYOPTIONS As Int32 = (WM_USER + 202) Private Const EM_GETTYPOGRAPHYOPTIONS As Int32 = (WM_USER + 203) Private Const TO_ADVANCEDTYPOGRAPHY As Short = &H1S Private Const PFM_ALIGNMENT As Short = &H8S '------------------------------------------------------------------------------- 'p/invoke methods '------------------------------------------------------------------------------- 'SemdMessageLong will allow us to set and check the advanced typography option Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Int32, ByVal lParam As Int32) As Int32 'this version of SendMessage allows us to pass a PARAFORMA2 structure to the system Private Declare Function SendMessage Lib "user32.DLL" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Int32, ByRef lParam As PARAFORMAT) As Int32 'this version of SendMessage allows ua to pass a CHARRANGE structure to the system Private Declare Function SendMessage Lib "user32.DLL" Alias "SendMessageA" (ByVal hwnd As IntPtr, ByVal wMsg As Int32, ByVal wParam As Int32, ByRef lParam As CHARRANGE) As Int32 '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ '******************************************************************************* ' Method : justifyRTB ' Purpose : Performs advanced allighment features on a RichTextBox, '******************************************************************************* Friend Function justifyRTB(ByRef RTB As RichTextBox, ByVal Alignment As TextAlign, Optional ByVal SelStart As Int32 = 0, Optional ByVal SelEnd As Int32 = -1, Optional ByVal ResetSelection As Boolean = True) As Boolean '------------------------------------------------------------------- If SelStart = -1 Then RTBFastSelect(RTB.Handle, 0, RTB.Text.Length) 'select all text if SelStart=-1 ElseIf SelStart <> -2 Then 'no need to select if already selected If SelEnd = -1 Then 'user start to end of document? RTBFastSelect(RTB.Handle, SelStart, RTB.Text.Length - SelStart) 'use selstart to end of document Else RTBFastSelect(RTB.Handle, SelStart, SelEnd) 'else user speciffied both start and length End If End If '------------------------------------------------------------------- Dim fmt As New PARAFORMAT 'set aside Format structure fmt.cbsize = CShort(Len(fmt)) 'set the structure's length

5. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Dim Result As Boolean = False 'assume failure of operation to start 'first try to tell the RichTextBox to set Advanced Typography options... If SendMessageLong(RTB.Handle, EM_SETTYPOGRAPHYOPTIONS, TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY) <> 0 Then 'test to see if the above turned on the Advanced Typography Options... If SendMessageLong(RTB.Handle, EM_GETTYPOGRAPHYOPTIONS, 0, 0) = TO_ADVANCEDTYPOGRAPHY Then fmt.dwMask = PFM_ALIGNMENT 'it did, so we are going to set a new alignment value fmt.wAlignment = CShort(Alignment) 'inform the structure we are setting alignment SendMessage(RTB.Handle, EM_SETPARAFORMAT, 0, fmt) 'apply the alignment instruction Result = True 'successfully applied advanced options Page 411 of 419 End If End If '------------------------------------------------------------------- If Not Result Then 'if Advanced Typography not available (unlikely) If Alignment = TextAlign.Justify Then 'Justify selected, force to Left alignment Alignment = TextAlign.Left End If RTB.SelectionAlignment = DirectCast(Alignment, HorizontalAlignment) 'set alignment normally End If '------------------------------------------------------------------- If ResetSelection Then 'should we reset the cursor selection? RTBFastSelect(RTB.Handle, 0, 0) 'yes, so deselect text End If Return Result 'True if we applied advanced options End Function '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ '------------------------------------------------------------------------------- 'structure to specify selection range for alignment option. Unline usual selection of the text using 'the SelectionStart and Selection Length options, there is no screen blinking, or even temporary ' blanking if the RichTextBox when a new alignment value is set. '------------------------------------------------------------------------------- <StructLayout(LayoutKind.Sequential)> Private Structure CHARRANGE Dim chrPosnMax As Int32 Dim chrPosnMin As Int32 End Structure '------------------------------------------------------------------------------- 'Constant used by RTBFastSelect() method, defined below '------------------------------------------------------------------------------- Private Const EM_EXSETSEL As Int32 = (WM_USER + 55) '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ '******************************************************************************* ' Method : RTBFastSelect ' Purpose : Provide Fast Text selection service for a RichTextBox '******************************************************************************* Friend Function RTBFastSelect(ByVal RTBHandle As IntPtr, ByVal SelectionStart As Int32, ByVal SelectionLength As Int32) As Int32 If SelectionStart >= 0 AndAlso SelectionLength >= 0 Then 'if parameters seem to be OK Dim selRange As CHARRANGE 'allow quiet text selection selRange.chrPosnMin = SelectionStart 'mark start of text with the current selection length selRange.chrPosnMax = SelectionLength 'mark end of text with the current selection length Return SendMessage(RTBHandle, EM_EXSETSEL, 0, selRange) 'select range of text End If Return 0 'failure if bad indexes End Function End Module

6. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben About the Author David Ross Goben is an independent researcher who is obsessive about details, a professional software engineer, and author, living his life in glorious anonymity. As a software engineer, he has been expected to think entirely out of the box and use intuitive perception to develop solutions to problems that were often assumed impossible. He says that he has been designing software solutions since dinosaurs walked the Earth, being a systems designer, language designer, and a compulsive developer (oh, and he has also painted houses, built them, and moved people's furniture across the country). He has written professional code in FORTRAN, C, C++, VB, Forth, COBOL, Pascal, various assembler languages, and others he wants to forget, and some he has successfully forgotten. Of Jewish descent, he has extensively explored Biblical history, ancient cultural thinking, and ancient slang for over three decades, which had resulted in his seminal work: A Gnostic Cycle: Exploring the Origin of Christianity. He has written numerous books, manuals, and magazine articles, many not credited, or authored under pen names. His other interests include Cosmology, Quantum Physics, Particle Physics, Astrophysics, Nuclear Physics, human-machine interaction, the Global Warming Myth, The Electric Universe, Expansion Tectonics, Perpetual Energy Technology, Quartz Technology, the real truth of history, exploring the glaring flaws in current Darwinian theory and Mendelian Inheritance, studying the bio-mechanical origins of life, and exploring the ancient practice of Dream Walking. His goal is to become as close as he can possibly be to a Universal Scholar. David Ross Goben Lady Lake, FL, USA david.ross.goben@gmail.com Page 412 of 419

7. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Free Online PDF Documents Available by David Ross Goben Four ready-to-read PDF documents are available for both online viewing and free downloading from Google Docs. They are: Open Letters Sent to Advocates for the Electric Universe and Expansion Tectonics Theories, and Exploring How These Theories Connect (152 pages). Since their initial proposals, gathered evidence has only strengthened the Electric Universe and the Expansion Tectonics theories. In spite of this, each time additional evidence for either of them surfaces, or another of a fast-growing body of scientists, especially those of important and augustly respected note, dares to declare favor for one or the other, select advocates for presumed ‘standard’ theories pop up, like South African meerkats alerted to an impending threat, and respond with typically scripted salvos of protest, too frequently droning the same old and practiced slogan-laced retorts like Gregorian Chants, as if their need to deny the public’s access to, or worse, their acceptance of such ideas was a matter of personal or professional survival. And it may be no wonder. In these last few decades, tenures, funding, and reputations have often been decided wholly upon which ideas, real or imagined, are accepted by the general public. We will compare the evidence between the Electric Universe and the Gravity-Based Universe, and between Expansion Tectonics and Plate Tectonics. We will also explore the long-held Prime Matter (Aether) theory that can strengthen the liquefacting sand upon which Particle Physics now finds itself, and which also strongly links the Electric Universe with Expansion Tectonics and makes these two models all the more plausible. So, prepare yourself for a Gnostic rollercoaster ride through an extremely thick ocean of information and history, a great deal of which had in the past often been intentionally obscured. View and download this PDF document for free at: https://docs.google.com/open?id=0B_Dj_dKazINlZTFjOWZmMWItNTg3ZS00MDcxLWE3NDctNDhhZGY2Y2JkOTRk Also available through web searches, and on Scribd.com and SlideShare.com. Page 413 of 419

8. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Navigating Your Way Through Visual Basic 6.0 to Visual Basic .NET Application Upgrades (87 pages). This is powerful lap reference and resource for those needing to upgrade their old VB6 application to the object oriented universe of Microsoft Dot NET technology. When the majority of VB6 developers demanded the ability to build VB code in a common language IDE (Integrated Development Environment), have 100% unfettered cross-language interoperability, and expecting no less than 100% unrestricted object oriented programming language capabilities, most of them did not have the first clue, not the slightest understanding, of the earth-shattering impact their passionate, relentless, spittle-laced howling would have on their beloved VB. An immense host of them, mostly amateur programmers and hobbyists, naively believed that after such a necessarily monumental undertaking, they could simply continue on their merry little way, writing VB code exactly as they had done before, using the very same often non-uniform syntax that they had been using before, and, oh yes, they expected there would be a few additional commands here and there to address full class inheritance, and also allow seamless access to methods whose source code was written in some other programming language, such as C++. They did not grok the fact that in order to provide them with exactly what they were keenly expecting would also clearly necessitate colossal changes to their beloved VB so that it would be a fully integrated, object oriented environment that would also interoperate with and act exactly like the other Visual Studio languages (or other .NET-compliant languages). This requires perfect synchronicity between all those languages; that each of them could clearly understand and use objects from each other without the slightest misconstruction. This manual makes dealing with those many changes a snap. View and download this PDF document for free at: https://docs.google.com/file/d/0B_Dj_dKazINlMjViMGUzZTUtMWFiZS00ZGNhLWE1NjEtMDQ4NjcwNmNiOTFm/edit?pli=1 Also available through web searches, and on Scribd.com and SlideShare.com. Page 414 of 419

9. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Enhancing Visual Basic .NET Applications Far Beyond the Scope of Visual Basic 6.0 (419 pages). Transitioning from Microsoft Visual Basic 6.0 (VB6) to Microsoft Visual Basic .NET (VB.NET), at first glance, may look to be an intimidating endeavor. After all, you have likely heard or read through copious magazines and blogs that there are huge differences between these two developmental platforms. Though some of those differences are real, most others are simply imagined, engendered by nothing more than unapprised conjecture. Of the real platform deviations, most are simply due to them having to be expressed differently; plainly because VB.NET strictly follows a stringent pattern of uniform language syntax, which is something VB6 was not always good at. Hence, a programming language feature may have to be implemented under VB.NET using a radically different access conduit than the way it may have been realized under VB6. Other disparities, some seen as much more profound, actually end up being VB6 features that VB.NET does in fact support, but, again, due to tight .NET platform architectural specifications, VB.NET cannot support them in a like manner, but may by necessity have to utilize non-VB6-style invocation rules. Nevertheless, by employing some simple user-defined helper functions, such as will be demonstrated throughout this document, you can easily emulate “lost” VB6 commands, or, in most cases, make their functionality more accessible through simpler syntax. Regardless, you will find that, overall, VB.NET supports all these many differences, both major and minor, in but different forms, and in all it also implements much more robust techniques to apply their functionality. Many of the “major” differences bemoaned by many VB6 purists no longer exist; having existed only in Beta releases of VB.NET, but being addressed by the time of the initial product launch, or, in more complex cases, in later releases. The biggest problem here is that most new VB.NET developers still approach problems the same way as they may have faced them under VB6, or had been trained by VB6-savy developers. This book helps you to not only break yourself free of that mold, but to really make your VB.NET application shine by example after example of how to make what was thought to be difficult to be in fact very easy, and it also provides you with a toolkit you can build yourself, and customized to your needs so that you can really make your applications stand out from the rest of the pack. View and download this PDF document for free at: https://docs.google.com/file/d/0B_Dj_dKazINlRi1JWW42UXFzVG8/edit?pli=1 Also available through web searches, and on Scribd.com and SlideShare.com. Page 415 of 419

10. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Doom 3 Walkthrough and Strategy Guide (400 pages). This is an enhanced novelized exploration into the dark horrors of the 2004 Doom 3 adventure, perhaps one of the scariest and most densely detailed first-person-shooter escapades ever conceived, for both the original offering from Id Software and their later Doom 3 BFG Edition. This walkthrough takes you through the Doom 3 adventure at the Veteran Difficultly level, describing in intimate detail this quest and the strategies required to both beat this game easily and to explore areas and find treasures that you may have never before thought existed. Some of the most arduous battles that gamers often wail and gnash their teeth about can sometimes be accomplished by using some of the simplest solutions imaginable, and all without cheat codes, but with quick thinking and actual military techniques. For example, many players dread facing off with the six maggots (tall man-like demons with razor-sharp talons, two heads, and panther-like ferocity) at the end of the Alpha Labs – Sector 1 level, because they always seem to come to great harm unless, through sometimes pure luck or random fortune, they can hole up in the left far corner of that locked room and hold the massing maggot hoard at bay long enough for the player to take them all down in a blazing torrent of voluble gunfire, but did you know that it is actually stupidly easy to defeat them pain-free, and on top of that you can do it in perfect safety and at your leisure? Full descriptions of items, adversaries, strengths, weaknesses, locations, secrets and caches not mentioned in any other guide, a dense listing of useful console command codes, and custom modifications are covered, such as how to play at your monitor’s maximum resolution, add and/or alter custom keyboard commands and toggles, and how to easily play Doom 3 BFG Edition on otherwise uncooperative Windows 8.1 systems, offering two fast and very easy solutions that have worked on every system they have ever been tried. View and download this PDF document for free at: https://docs.google.com/file/d/0B_Dj_dKazINlY3pJTXVjd1FWWlE/edit?pli=1 Also available soon through web searches, and soon on Scribd.com and SlideShare.com. NOTE: Although the complete adventure is described, it is still a work in progress. Page 416 of 419

11. Enhancing Visual Basic .NET Beyond the Scope of Visual Basic 6.0 – David Ross Goben Also Available From the Author A Gnostic Cycle: Exploring the Origin of Christianity (712 pages). In this book, you are going to explore the bare-boned facts behind a broad range of Biblical mysteries, digging deep beneath the thick layers of misunderstood traditions, semantic misconceptions, invented religious and political dogma, and breath-taking, world-changing events in history that had been willfully suppressed or misrepresented. Like any really good who-done- it, you will read tales of sinister deception, glorious victory, hateful murder, intimate love, rampaging armies, wholesale genocide, spiritual salvation, and, as you would anticipate in such mysteries, the heroes and villains are not always who they seem to be. Listed below is a short list of the hundreds of things you will herein unearth: • The Hebrew Bible was written to build self-esteem, not to record concise history. • King David was based upon Pharaoh Thutmosis III. • King Solomon was based upon Pharaoh Amenhotep III. • Moses was based upon Pharaoh Akhenaten (Amenhotep IV). • Joshua (Ye-ho-shua) was based upon Pharaoh Tutankhamun (Amenhotep V). • Joshua was the son of Moses, not of Nun, and lived only until he was 19, not 110. • Jesus was named for Joshua, because it was believed he was his Second Coming. • Jesus was a dynastic king; a direct descendant of the Scythian Anointed Kings. • Jesus married Mary Magdalene, a Royal Princess, and their offspring live today. • The Apostle John Mark was actually Mary Magdalene; the Beloved Disciple. • Simon Zealot was of the Magi, and was one of the most brilliant men of all time. • Lazarus raised Jesus from the grave after his crucifixion. • Judas Iscariot was hung on a tree (ancient slang for a crucifix), not from a rope. • Mary Magdalene was the first Pope of the Church Jesus personally established. • Christianity and Judaism are polytheists, worshipping to this day multiple Gods. • The Holy Spirit is the Jewish Shekinah (Presence of God); the Mother Goddess. • The Father in Heaven (Hebrew Adon) and Yahveh are two competing deities, from ancient Mesopotamia, and are separate to this day in the Page 417 of 419 Hebrew Bible. • Women are not half the value, but are in fact twice the value of a man. • The Jerusalem Church was actually located in Qumrân, by the Dead Sea. • Original Christian doctrine comes from Chapter 6 of Numbers, from the Hebrew Bible; rules governing the Qumrân Nazarite (pronounced “Nazareth”) Order. • The Apostolic Church has tried for centuries to exterminate Jesus’ Family Line. • True royal blood has different genetic markers than the common population. • The Eucharist is an ancient ceremony, using bread mixed with white powder gold. • The reason we think non-precious metals like gold and silver valuable is spiritual. • The Antichrist was born 8 years after Jesus, yet his sway is more powerful today. This book is available from your favorite book seller, or directly from Authorhouse or Authorhouse UK Ltd., for either $17.50USD or for £13.90UK: http://www.authorhouse.com/Bookstore/ItemDetail.aspx?bookid=33204 (ph: 1-888-519-5121) http://www.authorhouse.co.uk/Bookstore/ItemDetail.aspx?bookid=33204 (ph: 0800-1974150)

Add a comment

Related presentations

Speaker: Matt Stine Developing for the Cloud Track Marc Andressen has famou...

This presentation explains how to develop a Web API in Java using (JAX-RS or Restl...

1 App,

1 App,

November 10, 2014

How to bring innovation to your organization by streamlining the deployment proces...

Cisco Call-control solutions can handle voice, video and data

Nathan Sharp of Siemens Energy recently spoke at the SAP Project Management in Atl...

Related pages

RichText ActiveX - Lebans

... 2004 RichText ActiveX . ... The RTF2 ActiveX control requires a minimum of Version 3 of the Rich Edit DLL found on ... Justify alignment : Ctrl+R:
Read more

db:: 4.02::Word Open XML Plain text content control zp

... can I create a rich textbox from ... You can convert the C# code to be VB.NET. ... the only valid options are enable. You will notice that the Rich ...
Read more

Enhancing Visual Basic .NET Applications Far Beyond the ...

... under VB6 and turbo charge it with VB.NET savvy. This document reviews the fundamental differences between VB6 and VB.NET, and how to deal with and ...
Read more

ActiveReports 6 User Guide - manualzz.com

Categories. Baby & children Computers & electronics Entertainment & hobby
Read more

What's New in 14.1.3 (.NET Product Line)

... Avoid extraneous ByVal declarations for VB.NET ... Add a note that it is necessary to enable the TileContainer ... The standard TextBox control is ...
Read more

Active ReportrGuide - Documents - DOCSLIDE.US

Active ReportrGuide; Download. of 450
Read more

ActiveReports 6 Designer - 道客巴巴

内容提示: ActiveReports 6 DesignerActiveReports 6 Designer | Table of ContentsActiveReports Designer End User Guide 1Getting Started 2ActiveReports ...
Read more