What is it? =========== TabCtrl v1.0 is a custom control implementing the Word 6 style tabs. You can use it in your application to give it a fashionable look-and-feel. Who made it? ============ TabCtrl was derived by Freeman-Teresa Software from TabDlg3 that was made by Mr. Edward McCreary. As a result, Mr. McCreary and Freeman-Teresa Software together own the copyright to the software. As required by Mr. McCreary, the original copyright notice is included below: TabDlg Version 3.0 Copyright (c) 1994 Edward McCreary. All rights reserved. Permissions & Terms of agreement ================================ The use of TabCtrl is based on the following conditions: 1. This software is provided "as is" without representation or warranty of any kind, either expressed or implied, including without limitation, any representations or endorsements regarding the use of, the results of, or performance of the software, its appropriateness, accuracy, reliability, or correctness. The entire risk as to the use of this software is assumed by the user. In no event will Freeman-Teresa Software be liable for any damages, direct, indirect, incidental or consequential resulting from any defect in the software, even if Freeman-Teresa Software or Mr. Edward McCreary has been advised of the possibility of such damages. This disclaimer shall supersede any verbal or written statement to the contrary. If you do not accept these terms you must cease and desist using this software immediately. 2. If you are not distributing tabc.dll or tabc32.dll with an application, you must use the original archive file with the original contents and copyright notices. 3. If you are using tabc.dll and/or tabc32.dll with an application, you may use it free of charge, but you are required to include the following copyright notice somewhere in the documentation: TabCtrl v1.0 Copyright (c) 1995 Freeman-Teresa Software TabDlg3.DLL is Copyright (c) 1994 Edward McCreary 4. You cannot sell TabCtrl. It means that when you sell your own application that is using TabCtrl, you must be selling your own work, not ours. How much is it? =============== It is FREE!!! What are included in this package? ================================== tabc.dll --- TabCtrl 16bit DLL tabc32.dll --- TabCtrl 32bit DLL tabctrl.h --- Header file to be #include'd your program tabctrl.cpp --- C++ wrapper implementation test.exe --- Pre-built test program 16bit EXE test32.exe --- Pre-built test program 32bit EXE test.cpp --- Test/sample program source demonstrating how to use TabCtrl in a C program src\*.* --- Source to tabc.dll and tabc32.dll How to use TabCtrl? =================== 1. Design the master dialog. Put a custom control of class "FTTabCtrl" at wherever you want the body of the tab to appear. That is, this is the size and position for the tab control with no tabs. When you add tabs to it at runtime, it will extend itself upward. So, you should leave some room above the control when you create the dialog template. 2. Design a dialog box for each tab. The size of the template really doesnt matter but it should be as large as the master dialog box. You should place a group box there with the same ID as the tab control, which is in the master dialog. This group box is used as a reference frame. Then you can put the controls for that tab into the group box. Don't forget to give each control a unique ID, even across tabs. If you dont care what the ID of the controls is, as in the case of static text, give the control -1 for an ID. The custom control will assign is a unique ID when it is created. The caption of the dialog template will be used as the caption of the tab. The WS_VISIBLE flag of the dialog MUST be turned off, otherwise when it is loaded you will experience flickering. 3. If you use C, Delphi, Visual Basic: 3.0 #include "tabctrl.h" 3.1 At WM_CREATE of your main window: hlib = LoadLibrary("tabc.dll"); -or- hlib = LoadLibrary("tabc32.dll"); 3.2 At WM_INITDIALOG of your master dialog, add tab pages to it: SendDlgItemMessage(hDlg, IDC_TABCTRL, TAB_ADDTAB, WPARAM(hInst), LPARAM(LPSTR(MAKEINTRESOURCE(IDD_TABPAGE1)))); SendDlgItemMessage(hDlg, IDC_TABCTRL, TAB_ADDTAB, WPARAM(hInst), LPARAM(LPSTR(MAKEINTRESOURCE(IDD_TABPAGE2)))); SendDlgItemMessage(hDlg, IDC_TABCTRL, TAB_ADDTAB, WPARAM(hInst), LPARAM(LPSTR(MAKEINTRESOURCE(IDD_TABPAGE3)))); 3.3 At WM_DESTROY of your main window: FreeLibrary(hlib); 4. If you use C++, OWL or MFC: 4.0 #include "tabctrl.h" 4.1 Add tabctrl.cpp to your project. 4.2 At WM_CREATE of your main window: TabCtrl::CLInit(); 4.3 Declare a TabCtrl object in your dialog box object: TabCtrl tc; 4.4 At WM_INITDIALOG of your master dialog: tc.Init(hDlg, IDC_TABCTRL); tc.AddTab(hInst, MAKEINTRESOURCE(IDD_TABPAGE1)); tc.AddTab(hInst, MAKEINTRESOURCE(IDD_TABPAGE2)); tc.AddTab(hInst, MAKEINTRESOURCE(IDD_TABPAGE3)); tc.AddTab(hInst, MAKEINTRESOURCE(IDD_TABPAGE4)); 4.5 At WM_DESTROY of your main window: TabCtrl::CLFree(); How to get more info on the use of TabCtrl? =========================================== 1. Check out tabctrl.h where both the message-based interface and the C++ interface are documented. 2. Check out test.cpp for a working example. How to contact the authors? =========================== Freeman-Teresa Software ==> freemant@wr.com.au (Internet) -or- 100351,3364 (CompuServe) Mr. Eddie McCreary ==> edm@twisto.compaq.com When to contact us? =================== 1. You have found a bug. 2. You have enhanced the code and would like to share with us. 3. You have an excellent suggestion. When to NOT to contact us? ========================== 1. You don't know how to use it. 2. You have a common suggestion like Common Control compatibility. Impressed by the installer? =========================== It is called Freeman Installer. You can get a copy from: ftp.netnet.net /pub/users/freeman/finst22.zip or WinSDK forum on CompuServe