Disclaimer: You have the right to use this software. You have the right not to use it. You have the right to remain silent if you don't like it. You have the right to code your own instead. You had the right to be the first to write this software but you lost it. You have the right to take the source code and mutilate it beyond my wildest imagination.
CORBA/Java | ActiveX SDK via Borland | Brockshmidt via Borland |
Win32 API Stuff | OWL,VCL,MFC Stuff | Win16 API Stuff |
ASM/Perl/Misc | White Papers | Links |
DGWApplet: This is a trival example of connecting to a DataGateway data source in an applet. Also shows how to specify multiple archives in the ARCHIVE property for the Html APPLET tag. Uses JBuilder. Click here to view some of the code or the html! | |
Oracle8_SP: Shows how to call Oracle stored procedures. Uses JBuilder and the JBCL 2.0. Also includes the a sample of the definition of an Oracle Stored Procedure in PL/1. View some of the code or the stored procedure itself! | |
ThreadTest: This is a trival example of implementing thread synchronization in Java. View some of the code! | |
ClientDataSets: This is a client for the server of the modified Subscrip example I adapted (see below) from the SUBSCRIP example in the Visibroker for C++Builder 3.2. It demonstrates how to fill a VCL TClientDataSet with a list of records sent from the CORBA server and display it in a TDBGrid. View the readme.txt or view some of the code! | |
CORBA Sequences: This example is adapted from the SUBSCRIP example in the Visibroker for C++Builder 3.2. It demonstrates how to send a list of structures between a server and client using CORBA sequences. View the readme.txt! |
USING C++BUILDER 1.0 ?: You need this C++Builder ActiveX Update. Herein are Win32 SDK .IDL files, MIDL.EXE 3.0, a new CPP32.EXE, IMPORT32.LIB, GUIDGEN.EXE and RPCNDR.H. View the readme.txt! | |
USING BC++5.02 ?: The files comcat.h, docobj.h, servprov.h, urlmon.h, urlhlink.h, and inet.lib missed the delivery. Get them here. | |
MINTLB: A simple example which demonstrates the absolute minimum registry entries and type library required in order to generate a .PAS and .HPP file using Component|Install|ActiveX in C++Builder 1.0. View the readme.txt. | |
BMPCTRL: The simple OLE API example I wrote for Borland Developer Conference '97. Includes the whitepaper. | |
ATL: ActiveX Template Library 1.1 built with Borland C++Builder. Uses MIDL. See makefile. Unzip with -d. | |
FRAMER: ActiveX SDK Framer Sample built with Borland C++Builder. This is an example of minimal ActiveX code for an OLE container. Paint will open up right inside this. It is kinda cool for so little code ! See makefile. | |
FRAMEWRK: ActiveX SDK FrameWrk library built with Borland C++Builder. See makefile. This static library is necessary to build any of the ActiveX servers in the SAMPLES\BASECTL directory on the ActiveX SDK. | |
PROGRESS: ActiveX SDK sample Progress built with Borland C++Builder. No source file changes ! Just remember to link INET.LIB to get RegisterBindStatusCallback() and CreateURLMoniker() import records from URLMON.DLL | |
IELNK: ActiveX SDK sample IELnk OCX built with Borland C++Builder. Also uses MKTYPLIB. See makefile. | |
IEMIM: ActiveX SDK sample IEMime OCX built with Borland C++Builder. Also uses MKTYPLIB. |
Chapter 5's Ekoala1 example adapted to demostrate a trivial singleton, local automation server. Implements an IDispatch interface using CreateStdDispatch. Thank you Bruneau B. for taking the time to educate me about ROT, singleton servers and dispid's in IDL. | |
Chapter 10, DataObj.dll. A great example of how to implement a class which supports IDataObject. View the readme.txt. | |
Chapter 10, DataUser.exe. Instantiates objects of the classes implemented in the OLE server above. | |
MDI Class library used throughout the book. | |
Chapter 11, FreeLoad.exe. OLE Data Cache is your shortcut ! I really had fun learning about the OLE Data Cache. This sample requires ClassMDI.lib and InOle.dll. Includes an enhancement for CF_UNICODETEXT. View some of the code ! | |
Chapter 24 PolyLine control. |
CATEGORY: A trivial sample which instantiates the Component Categories Manager found in COMCAT.DLL shipped with MS Internet Explorer. IMPORT32.LIB in the first release and patch had the incorrect GUIDs for the CLSID, ICatRegister and ICatInformation. Hence, this example shows how to instantiate the correct GUIDs yourself. View the code ! | |
OCXLICEN: A utility which takes an OLE server's PROGID and generates it's license info into a binary file. A good example of input in a console mode application, error handling without exceptions, UNICODE, BSTRs, IClassFactory2 and other basic OLE API functions. Build with Borland C++ 5.x or C++Builder. View some the code ! | |
PIPES32: A sample of a parent GUI app spawning a child console app and using anonymous pipes to communicate with the child's STDIN/STDOUT. This is a more straightforward method than the example found on MSDN. Uses OWL for the windowing, but that is easy to change. BC++ 4.0 and above. | |
SPLITWND: A sample of a WinNT/95 treeview control in a splitter window like Explorer. This is one of the better algorithms for reading and displaying directory information including network drives. No MFC/OWL. Build with BC++ or C++Builder. | |
MTTTY: Allen Denver's totally cool multi-threaded overlapped I/O serial communications application written for Microsoft. I've created a Borland C++ 5.x makefile for it. Please see his article Serial Communications in Win32 for a thorough and engrossing discussion of this topic. | |
DSHOURS: Nice, clean coded CGI modules for WinNT/95 written using Borland Database Engine and C++. No PERL, no VCL/VDBT. Requires a WinNT/95 HTTP server, BDE and BC++ or C++Builder. | |
PRINTBMP: A sample of printing a bitmap of an app's main window. Uses PrintDlg() and StretchBlt(). Build with BC++ or C++Builder. No VCL, just Win32API. | |
CONVERT: Just some short simple C++ code demonstrating the use of ifstream/ofstream classes. | |
SPAWN: Just a short simple example of how to use C RTL spawn() function to spawn a child process and communicate with it using Win32 memory mapped files. The example for _pipe() in the BC++ RTL help is broken. Or maybe _pipe() is just broken altogether. Anyway, this evolved from that escapade. | |
DRAGLIST: Nice clean WinAPI code implementing drag and drop listboxes. No OWL/MFC. Build using BC++ or C++Builder. | |
CRITSECS: Jeffery Richter's "Advanced Windows" sample on critical sections built with Borland C++ 5.02. Microsoft's rtl function _beginthreadex is different from our _beginthreadNT. Sorry, there were a couple of other compile time errors I just hacked through but did not record. Just diff the .h and .c files against the originals to see the changes. | |
SEGSHARE: Shows how to set up shared data between 32-bit modules using Borland's compiler. This allows you to recompile Jeffery Richter's MULTIINST and MODUSE samples from Advanced Windows, using Borland C++. Borland doesn't allow #pragma data_seg. Please see the README.TXT! BC++ 4.0 and above. This also has a great example of compiler and linker response files. Love those command line tools! |
TWEBBROWSER: VCL code demonstrating use of Navigate method of TWebBrowser ActiveX control from Microsoft Internet Controls. Be sure you have Internet Explorer installed and you have installed MS Internet Controls onto the Borland C++Builder component palette. Project created with C++Builder 1.0. See some code. Thanks to Dave Fenwick on the newsgroups. | |
TUTIL32: VCL app written by my buddy "Chuckbert" Gallant. It verifies and rebuilds Paradox tables and shows a good example of BDE API calls. Uses TUtil32.DLL supplied by the BDE Support group. Requires C++Builder 1.0. | |
ODRADIO: OWL code demonstrating owner drawn radio buttons. Build using BC++ 5.0 and above. | |
EDITBKGD: OWL code demonstrating use of 1) the WM_CTLCOLOR message to change a control's background and 2) the WNDCLASS structure to change a Window's background color. Build using BC++ 4.0 and above. | |
DLGACCEL: OWL code demonstrating 3 techniques for catching accelerator keys in a modeless dialog box. Build using BC++ 4.0 and above. | |
CMDENABL: OWL code demonstrating 3 techniques for enabling and disabling top level and popup menu items using OWL and the WinAPI in harmony. Build using BC++ 4.0 and above. | |
MENUDECR: OWL code demonstrating proper use of menu descriptors and accelerators in an MDI child window. Build using BC++ 4.0 and above. | |
PORTSETC: Just some .cpp files for this MFC app. Sorry, but I don't want to upset Artisoft. You'd need to install the whole 9 yards, drivers and all, in order to see anything anyway. Nice clean MFC code though and lots of it. Check out GETCLIENT.CPP for some gnarly and less than handsome code whichs parses our ASCII config file. | |
ODLISTB2: OWL code demonstrating owner-drawn listboxes. It also displays each item of the listbox in a different color.child. Build using BC++ 4.0 and above. | |
DECORATE: OWL code which derives from TStatusbar in a TDecoratedMDIFrame to display the status bar in a sunken window. Also shows how to assign ID's for menu items which invoke popup menus and have their hint text display in the message bar. View the statusbar code or the improved EvMenuSelect code. Borland C++ 4.0 and above. |
MLIGHTS: Just the .cpp files and .exe. Uses James Finnegan's PROCHOOK.DLL (MSDN) to hook Win16 comm functions and display modem lights on the desktop anytime a 16-bit app accesses the comm ports. | |
HOOKS: A hack of Kyle Marsh of Microsoft's code. This app watches for the F12 key and subsequently terminates the currently active app - even if it happens to be Program Manager (doh!). My roommate Chris got tired of pressing Alt-F4, so I wrote this for him. | |
DYNARRAY: How do you allocate a chunk of memory greater than 64k in a 16-bit program ? Huge pointers of course ! It is only one of the most common questions on the phone. View the .cpp here. |
RECURSEDIR.PL: This perl script shows a decent way to traverse sub directory trees. This one I used on a bunch of files which needed changes more than just what would be comfortable with the quick and easy 'perl -i.bak -p -e"s/foo/bar/" *.bat.' Here is another one which shows more of the same.
FINDDEPS.PL: I got frustrated with having to deploy multi-megabyte JDK jar files with my applets. It's unreasonable! JBuilder's Deployment wizard? Yeah, right - Don't you wish! While we wait for the indefatigable Mr Matt to come to our rescue, I wrote a perl script which tirelessly runs the compiler on my project, yanks from the output errors the missing classes and then copies them over to my project directory tree. Ideally, we will only end up with the classes we absolutely need and we can just jar up our entire source tree and it will be smaller than deploying swingall.jar, jbcl2.0xxx.jar, jglxxx, and the latest rt.jar just incase your user isn't in the absolute latest and greatest busted browser beta.
LLIST: Printing a linked list in assembly. This application uses only assembly and no C RTL startup code. It shows how to use the assembly directive, ORG in a macro to generate a linked list in the data segment at assembly-time. Built with Tasm32 5.2b from C++Builder3 but requires Tlink32.exe from BC++ or TASM 5.0 because ILink32 doesn't handle ORG properly.
Click here to view the makefile!
ADDTORTL: Some proud 16-bit assembly code I did for Educational Sales. It
generates and executes a batch file which will compile and lib a particular obj
into the C RTL in Borland C++. Built with Tasm32 5.2b from C++Builder3.
Click here to view the code!
ITOA: I was asked in an interview to implement itoa() in C. I got it with
some generous prompting by the interviewer, but got curious afterward to do it
in assembly. So here it is!
Built with Tasm32 5.2b from C++Builder3.
SQUARES: Another interview question. Print the squares of a contiguous sequence of integers without using multiplication. Built with Tasm32 5.2b from C++Builder3. Click here to view the code Squares function! The download contains the source to a 32-bit console application entirely in assembly which exercises this function.
TRACE: a Perl 5 script which searches all .CPP files in the current directory for OLE interface method implementations. When it finds one, it
inserts a Borland C++ TRACE macro at the beginning of the method. The TRACE
macro indicates the method name.
Using this script makes debugging OLE easier than having to place breakpoints
in the debugger for each interface method everytime you load your OLE app.
This script also has an option to remove any TRACE macros it has put in to
the .CPP files.
ARGV: UNICODE, _tmain(), HeapAlloc, GetOpenFileName, assert, makefile.
BC++ 5.02 - Unicode isn't as well supported in earlier versions of the
compiler.
EASYPRNT: Just a short simple example of how to send carriage return,
line feed, form feed to LPT1: in Windows.
REGEXPR: Demonstrates using TRegexp class to search strings of text.
Click Download to view code.
TESTCIN: Uses CIN to read from STDIN in a loop. Calls cin.clear() and
cin.rdbuf()->overflow() to revalidate CIN.
DCTSTWNV: Just a snippet which shows how to use ostrstream properly.
If you instantiate an ostrstream object but don't give it a buffer, then you
are responsible for deleting any buffer which the ostrstream object
subsequently allocates.
MINASM32: Minimum Win32 console app written in Borland Turbo Assembler 5.2b. In the bare minimum, you need something in the data segment and you need to import at least one of the Windows API functions (else the Windows DLLs won't load). If using ILink32, you'll need dummy publics __turboFloat and __setargv. See the LLIST or SQUARES examples. Click here to view makefile.
DLLDLG: Win32 API sample of displaying a dialog bound to a DLL. Also
shows how to use '__hInstance' exported from the startup code.
Click here to view DLL code.
TESTDLL: DllEntryPoint, __emit__(0xCC), and a makefile to build a
a project comprised of an exe, dll and static lib. Good for stepping
through global object initialization at DLL startup.