`
`D DEVELOPERs .IounNAI.
`I The Magazine for Windows Programmers
`
`. A More Accurate Timing Tool
`I A Palette Spy Tool
`
`
`
`
`
`
`
`sChecIIerIi
`I
`-
`I
`IndsChecII:3ug++ 0f the Month H!
`.IIisucII CH
`
`Compiler Benchmark: InIiningT’
`Wilding. Win32 ”us. the High! WaII__--.
`
`533:; The Missing @9 _
`
`IIIIIIII Warning Message
`y Ugs
`illreleoseifi’reCh Tips
`__
`Combaboxes In Toolbars I
`_'....................
`
`er” Understanding NT
`...................
`I
`
`31E inierlwi
`IIIIIIIIIII Debugging Services
`
`WMIBooks in Brief
`
`Mfg“: The MindShare Series,
`I
`.Delphi and more
`
`me”
`
`'
`
`Io order!
`are 0wa h’
`IICIIecIII3
`n/bid'fldh
`
`Volume "I. Numbers
`
`
`
`
`
`
`
`
`
`IIIIIIIIII'nonIM'I? o
`
`
`
`
`
`
`.
`
`_ .esma‘flmwnWEmm;
`
`Toshiba_Apricorn 1012-0001
`Toshiba_Apricorn 1012-0001
`IPR2018-01067
`|PR2018—01067
`
`
`
`i
`
`
`
`Wll‘ldOWS’
`D DEVELOPERS JounNAL
`The Magazine for Windows Programmers
`
`Features
`
`
`
`.
`.
`.
`.
`. . . .
`A Palette Spy Utility ..... .
`Using an identity patette is essentiat for test graphics, but how can you be sure yon got
`need
`it right? This toot uses some undocumented techniques to give you the information you
`Chris Branch
`
`AMoreAccurateTimingTool14 i
`
`Lear Zolman
`
`Mike Dawdy
`
`. . . . .27
`.
`. . .
`. . .
`. . . .
`.
`Compiler Benchmark: C++ lnlining ... .
`How much overhead do you pay for using C++ instead effust C? We start looking for
`some answers to that question by benchmarking how efficientw five 32—bit Windows
`compiiers can handte a simpie intine iunction.
`Ron Burk
`
`’
`
`
`
`spawn and waitprobiem,
`
`I
`
`u—
`
`CMI' Wage by tha Watson Bogaard.
`
`.
`
`ASTER.
`45nd
`
`aims: thnflgas In Windows Drwiapershim-nut. PI). am: 565M. Boulder.('030312.55“ 115k S“h5‘-fip1'm"s: “ma; 21“,,“
`'.
`Id at San Framsco. CA and
`.t-I m was-22m. l’enndica!
`'
`. 5M
`. 545 Canada In} M
`.
`elswhuc. Paynacnll mm] be made In US dollars. Make checks payahlr to Mariam Mtnpw'noamai
`“
`""1“
`651' [M]: "39065819
`at 1995
`A
`Page 2 —Windows Developer‘sJournal
`
`
`.__.,_.__....,__._..-—.___..
`
`ugu
`
`Toshiba_Apricorn 1012-0002
`Toshiba_Apricorn 1012-0002
`IPR2018-01067
`|PR2018-01067
`
`
`
`
`
`Rm b'urk
`Ann Brother
`Paula Tomtinson
`'r'ictor R. Wribnan
`Lear Zain'tan
`Mark Nelson
`lr'.’ Nomehundron
`Send render mail. to: wdlouoremfmom.
`PU BUSH E R
`Rem- Hutchinson
`Pubiishing Dirccwr
`Manila Mat-inter:
`Associate Publisher
`ADVERTISING AND MARKETING
`Director ofSaJes and
`Marketing
`Acct, Manager. East
`
`Acct. Manager. Midwest
`
`Brit miter
`Ed Day
`[Slut 833-?54?‘
`eduy®mfi.corn
`Chritrin: Wmdtey
`f9i3J 338-7540
`cwoott‘ie-CemfiIoi-n
`Julie Thornton
`WU} 333-75“
`jrhomto @rnfi.ct.tm
`breakout! marketing
`Dmeirbeker Wag 4
`24i05 Kiel
`Germany
`+49 43i-3OU'40
`+49431-801‘W?
`JUGJJZJ F04
`@t‘w‘l’lpusen‘ht‘am
`Joni Hemiy
`Sales Support Manager
`Circulation Manager
`Cheri'l'yn Olmsted
`P R0 D U CTION
`Graphic Anist
`Tug-ta Watson Bogaard
`Production Editors
`Amy Petite
`Lori White
`Ad Materials Lari ‘rlr'i'tirti
`
`Acct. Managen West
`
`Emopean
`Advertising
`Representative
`
`FAX:
`Email:
`
`
`
`
`
`.
`.
`BookstnBrtef-......................................51
`Paula Tomiinson renews the System Architecture series at books by MindShare. Also.
`The Revolutionary Guide to MFC 4 Programming with Visual C++, by Mitre Bieszczek;
`Teach Yourself Delphi 2 in 21 Days. by Dan Osier, Steve Grobman. and Steve Batson
`(reviewed by George Tyiutkt‘).
`Ron Burk
`
`Bug++ottheMonth..................................67
`lfyou use the deiete operator. the compiier has to generate code to caii the destructor
`for that object. But what it the compiler doesn't yet know whether or not you defined a
`destructor? isn't it a bug it it doesn’t warn you that it may be generating incorrect code?
`Yes and no. as this month '5 non-bug shows.
`Mark Nelson
`
` SDK Annotationsf'i -..-. -'_
`
`
`
`Annotation #123—GetDialogElaseUnits 58
`Annotation #129—GetShortPathName 60
`Annotation #130-—CCheckListBox::Create 62
`Annotationtt131—TBBUTTON 68
`Annotation#132—EM_POSFROMCHAR 69
` Departments --
`_
`_
`_
`FromtheEditor...................................."'..........4
`Advertiserlndex
`48
`CalliorPapers..............................................51
`NewProducts
`70
`Headers‘Forum.............................................74
`Developer’slilarketplace 75
`
`
`Né‘xtManm
`Thread Scheduiing in Win95 and NT.
`
`Drop in on our Wet: siteiYou’tI find us at:
`l
`http:iiwww.wd].corn
`You‘ll find information and excerpts from the Current
`including cur SDK Annotations.
`Check it out — and let us know what you think.
`
`issue, along with links to WDJ code.
`
`l
`
`_|
`
`I Online Source Code
`
`
`Except where copyright is expticithr asserted. at! code publishedin WindoweDeuoloper‘s
`Journal may be treaty used and distributed in personal and commercial applications.
`You can obtain source code for Windows Deteiopers Journei. including unpublished code and the
`latest compilation 01 our SDK Annotations. trom:
`CompuServe — GO SDFOFLUM. Library ?.
`GEnie -— in the Windows Ftoundtahle at page 1335 {Kaywordeindowsl-
`l-‘l'P site: flp.m1'i.r;om in qulndev
`BESS:
`Phoenix Chapter ACM Library —(602)821-1162:
`The Courts of Chaos — (501) 935-0059}
`EmmaSoil Shareware Board — (60?) 533—?0?2:
`cfieos {The Netherlands), whim-493020361 or +31-(o)493ozore2.
`‘
`Code Disk:
`Code disks are available per issue ($51. Contact Miller Freeman. Inc.. Customer Flteiallons.
`16004444881: (91:!) 633-7500;tax (913) 841-2624: or. via email. wdsubflrnfmom.
`
`Angust 1996
`
`.
`.
`'
`
`U)-
`
`n..-..
`
`”'1!"
`
`"I""“Y....
`
`
`
`"V'".
`
`i i
`
`'
`|———’__|
`August 1996
`Volume 7, Number 8 WM— 3
`I1 gemstones Jourtnm.
`,
`i
`
`The
`agazine or Windows Programmers
`:
`EDITORIAL
`Senior Edilor
`Managing Editor
`Conuibuting Editors
`
`
`
`
`
`
`
`
`
`Vera.
`
`Subscriptions: mutual
`turntable subson'otirms
`to
`Mnduws wriolpff'i Joanna-f are 554.99 US. $45 Camel: and
`Merton. $64 elsewhere. Payment: must be made in US do:-
`lats. Make checks payable In Window: Drvdqwr‘r Jun-moi.
`Entire oonlents Cum“ 0 H96 Miller Freeman. Inn.
`“up! when: otherw'ne noted. No portion of this publication
`may be rcprmiuocd. stored. or uantmum! in any form.
`including computer mtricvn]. widtout wnlten Pflfllitsrfln
`[torn the publisher. Ail Rights Res-enter]. Quanltty reprints of
`selected Intclu may be ordered. Bit-lined armies carpi-no the
`Wmion at dx author and If! no: mtmly the opinion of
`the publisher. Printed in the United States urn-uteri“.
`Advertising: For m: cards or outi- information on
`placing advertising in Madam: Dewiwlfl‘s Joann-i. contort
`tile advertising department at
`[913) 1H t- loll. or write
`Wind-aw: Dal-taper! lounmt. IEIOI W. 23rd St.. Suite 200.
`lawtence. K5 «mo-2700 l'SA.
`Customer Service: For subscription Order; and
`address chum. contact Window: Derrinprr's Jot-mart. I’D.
`Box 56565. Bonitirrt CO 30322-6565 USA. Tetcphoruo l-
`Sui-3654425 mtJO3loTSrD‘WLIutX13}fi6l-lha5:email
`\t-idwbémfinam.
`For inimitm Will back iwtu and mid: rcpt-inns.
`call 'I-SmdM-Lwfil M913-8Mvifi3l.
`
`MILLER FREEMAN INC.
`.M'oan'l‘ W. Frzrwrn
`ChairmaniCEO .
`Presidenti'COO.
`..
`.....TitommLKrmp
`. F0
`Miran “Andy" attract-tire
`Senior Vice Pres
`
`Senior Vice President
`..... Dam” Denny
`
`Senior V'Icc President
`David Nurshrtum
`Senior Vice Presldcnl.
`mid it. fluent
`
`.. Wini D. Raga:
`SeniorVice President
`
`
`Vin: Presidentib‘oflwaro.
`gum: Starr Rid'l'qv
`
`\fice Presidtntm-odnclion.
`Andre-r it. Mich-s
`Vice PmrdonhtCinrutat'tun .
`”Jerry (Huh!
`
`A United News a Media publication
`m Miller Freeman
`
`
`Windows Devoioper's Journal — Page 3
`
`Toshiba_Apricorn 1012-0003
`Toshiba_Apricorn 1012-0003
`IPR2018-01067
`|PR2018-01067
`
`
`
`Lher
`$3”
`tual
`Ids,
`lays
`5m:
`Ian-
`and
`m.
`
`one
`t its
`iver
`
`itch
`was,
`we
`rith
`out
`
`my
`
`Books in Brief
`
`First Impressions of Recent Titles
`
`
`
`
`Ron Burk
`
`ISA System Architecture, 3rd Ed.
`Torn Shanley and Don Anderson
`51? pages
`MindShare, Inc. and Addison—Wesley, 1995
`$34.95
`ISBN 0-201-4G9%8
`
`80486 System Architecture, 3rd Ed.
`Torn Shanley
`188 pages
`Mindshare, Inc. and Addison-Wesiey, 1995
`$19.95
`[SEN film—409944
`
`PC! System Architecture, 3rd Ed.
`Torn Shanley and Don Anderson
`55? pages
`MindShare, inc, and Addison-Wesley, 1995
`$34.95
`ISBN til-2014109936
`
`EISA System Architecture, 2nd Ed.
`Torn Shanley and Don Anderson
`20? pages
`Mmdshare, inc. and Addison—Wesley, 1995
`$24.95
`SSBN 0—201-40995-X
`
`CARDBUS
`SYSTEM
`ARCHITECIURE
`
`
`
`
`
`PCMCIA System Architecture, 2nd Ed.
`Don Anderson
`440 pages
`MindShare, Inc. and Addison—Wesley, 1995
`$29.95
`ISBN 0—20‘1—409’9‘1—3I'
`
`PowerPC System Architecture
`Tom Stanley
`609 pages
`MindShare, Inc. and Addison—Wesley, 1995
`$34.95
`ISBN 0~2014D§90-9
`
`Plug and Ptay System Architecture
`Tom Shantcy
`32? pages
`MindShare, Inc. and Addison-Wesley, 1995
`$29.95
`ISBN 0201410133
`
`CardBus System Architecture
`Dan Anderson and Tom Shane-1y
`40? pages
`MindShare, an. and Addison—Wesley, I996
`$29.95
`ISBN {1201-4109916
`
`
`
`
`
`
`Pentium Processor System Architecture, 2nd Ed.
`Tom Shanley and Don Anderson
`433 pages
`MindShare, Inc. and Addison-Wesley, 1995
`$29.95
`ISBN 0-201410992—5
`
`Protected Mode Software Architecture
`Tom Shanley
`310 pages
`MindSharu, Inc. and Addison-Wesley, 1996
`$29.95
`ISBN 0401409963
`
`
`
`tt‘S
`
`ith
`
`Got an opinion about these or Other programming books? Send them to 70302.2566@compuserue.com. You can Order any of the books
`that appear in Books in Brfgffi‘onf Mitter Freeman,
`inc. by calling (913) 841-1631, faxing (913) 841-2624, or sending emait to
`rdorders®rdpubcom if usingfor or email, sendT the book title, author, and publisher atong with your MasterCard or Visa number, expi~
`ration date, and phone number.
`
`To submit booksfor review, send them to: Ron Burk, 13846 NE 60th Way, #120, Redmond, WA 98052-4542. Ptease do not send press reteases to
`this address.
`
`August 1996
`
`Windows Developer‘s Journal — Page 61
`
`Toshiba_Apricorn 1012-0004
`Toshiba_Apricorn 1012-0004
`IPR2018-01067
`|PR2018—01067
`
`
`
`5......“
`
`
`
`_—_fl
`
`ware design and are not adequate references for device dri-
`ver writers. This is especially true of bus architectures; fol-
`example,
`it is extremely difficult to find good technical
`information about the PCI or PCMCIA buses. When I do
`manage to find an occasional hardware reference on the
`bookshelf, I almost hesitate to pick it. up for fear of seeing
`the inevitable $89+ price tag. As a welcome relief,
`the
`MindShare series titles range from $19.95 to $34.95. At this
`price,
`I don't feel bad spending the money on a bookl
`might use only as an occasional
`reference.
`Ironically,
`though, my office copy of EISA System Architecture current.
`1y holds the title of ”most likely to be borrowed by a
`coworker."
`
`The format of these books is quite different than that of
`the average computer book. Each book is based on a semi-
`nar taught by the author and that heritage is evident in the
`book’s structure — it flows more like modules than chap-
`ters. Like most hardware books, they get right to the point;
`there are none of the self-indulgent authorial digressions
`that you see in some software development books. But,
`unlike most hardware books, these are actually readable.
`Most hardware references read like encyclopedias ——- even
`the publishers don’t expect anyone to actually read the
`
`[Editor’s note: this review was provided by Paula Tomlinsonl
`I first discovered the System Architecture series a couple
`years ago at the bookstand that Computer Literacy always
`runs during the Software Development conferences. At that
`time, these books were published directly by MindShare
`and had very generic and nondescript black—and—white
`covers, so I almost Overlooked them. I spotted the ISA and
`EISA books first. After leafing through them that night, I
`ran back to the bookstand the following day to buy any
`other books in the series, not dissuaded in the least by the
`prospect of hauling them back home with me. CardBus
`System Architecture is just the latest in this PC Architecture
`Series that currently totals 10 books. Addison—Wesiey is
`now publishing these books with MindShare, so the more
`colorful cover art and wider distribution should ensure that
`you will be able to find them at any bookstore with a rea-
`sonable stock of computer titles.
`I admit that there are so few good hardware books avail-
`able that I tend to get enthusiastic about even mediocre
`attempts. But this series of books is truly an important part
`of my library. The series is generally based around proces-
`sor architectures and bus architectures (with a few miscella-
`neous topics such as Plug—and—Play). 1 find that most books
`that call themselves processor architecture books are really
`references for the assembly language instruction set of that
`particular processor. While those books fill a need, they
`don't give readers an understanding of the overall hard-
`
`WlNGHAF 2.0
`[for MS Windows)
`
`INGRAF 7.0
`(for DOSfDOS Exlenders)
`
`. A
`
`SDK Annotation #130
`
`TYPE: MFG
`TOPIC: CCheckListBox::Create
`KEYWORD: CCheckListBox::Create
`
`The documentation mentions that the deter
`parameter could be any of the specified
`iistbox styles. However, the detyle
`parameter should NOT be
`LBS_MULTICOLUMN or
`
`LBS_USETABSTOPS. Morevar, you need to
`specify LBS_OWNERDHAWFIXED and
`LEIS_HASSTFtINGS. You can specify
`LBS_OWNEFtDFlAWVAFtIABLE instead of
`LBS_0WNEFIDF1AWFIXED, but then you
`need to override CCheckListBox::Drawltem.
`othanvise the debug version will ASSEFIT.
`
`Submitted by Sudhir Menon.
`
`Get the entire set of annotations from modicum or
`CompuSene (lite sdkannzip in section 7 "Han Puoticanbns’
`at tarum SDFORJM). Contribute your own annotations Via
`email? to messsocnmpusememm (indicate which we
`in which help fits you are annotating).
`
`wwm r1. -.
`
`.... ... ....- a. .fit-w'maflg. In; “13;...“
`
`uguSl 1995
`
`Toshiba_Apricorn 1012-0005
`Toshiba_Apricorn 1012-0005
`IPR2018-01067
`|PR2018—01067
`
`WfNGHAF & INGRAF are Graphics libraries for Scientific.
`Engineering and Business applications. Each library contains over
`
`
`150 routines. C, FORTRAN, BASIC and PASCAL versions.
`
`FULL SOURCE CODE
`NO ROYALTIES
` "SD
`HORNER PLOT
`
`
`
` {ear
`
`me
`“In
`can
`
`
`
`PRESSURE(pail
`
`
`
`
`
`
`
`|||||ll I
`llllllll
`I
`ltlllllll
`
`
`
`
`
`
`
`Ililllil
`I
`llllllll
`I
`
`
`
`to:
`to
`
`
`iT-‘dtl 1dr.
`
`
`
`IMDLIC‘IU'E Rent-.mck
`
`
`
`”PAC I1 [PE nmmc:
`
`
`'Sutrasott
`RO. Box I733
`Sugar Land. TX TTTS7—iT33
`
`
`Tel: [713) 491-2088
`
`Fax: (713) 24-0—6833
`
`76 I611 164®compuservecom
`
`: Floquesl Reader Semice H14? 1.:
`Page 52 —— Windows Developer's Journal
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`ISBN 1%?441692—3
`
`
`
`The leutionmy Guide to MFC 4
`Programming with Visual C++
`Mike Blaszczak
`
`8?1 pages
`WROX Press, 1996
`$49.95
`
`entire book. For developers who do not already have a
`strong hardware background, this lack of truly readable
`information makes learning about the hardware a particu-
`larly daunting task. As long as readers bear in mind that
`some of the books are prerequisites for others, then these
`books should be aCcessible to developers with very little
`previous hardware background. In the front of each book is
`a chart that describes which books build on others. Some of
`them, such as PowerPC System Archicture. stand alone. But,
`for example,
`it’s recommended that you first read 15A
`System Architecture before reading ElSA System Architecture.
`Although these books are not the most comprehensive
`references available on each topic, they are consistently
`accurate (several of them are already in their third editions)
`and very accessible to hardware novices. I would recom—
`mend them to anyone doing hardWare design or support,
`as well as to any developers who write low—level system
`code (such as device drivers}. 1 find the bus architecture
`books especially useful references.
`Addison—Wesley informs me that books on the Pentium
`Pro processor and the Universal Serial Bus are due out later
`this year. If Tom Shanley and Don Anderson (as well as
`Addison-Wesley) are listening,
`1 will cast my vote for
`adding the following books to the future lineup: 1394, SCSI,
`DEC Alpha Processor, and the MIPS R44xx/ RIOUOO proces-
`set.
`
`SENTBY
`spELLmG _
`onscreen ,3“
`ENG'NE
`
`> Checks text strings and edit controls
`> Jncludcsl [lump—word American and
`British dictionaries
`) Use our built-in dialogs or write your
`
`This is the second edition of this book, and in the PC pro-
`gramming book market. books rarely improve with time (in
`fact. they usually disappear after the first printing}. The
`Windows 3.1 update of Petzold's book was a disappoint-
`ment. the second edition of Marshall Brain’s Win32 System
`Services is mostly a name change that attempts to attract
`Win95 programmers, and there are other examples. This
`book is an exception because this edition is better than the
`first — much better.
`I reviewed the first edition of Hits book in December 1995
`
`column, and though it had some redeeming qualities, I just
`couldn’t recommend it. The Writing was in dire need of edit-
`ing, the choice of topics didn’t always make sense, and its
`900 pages consisted of as much white space as useful infor—
`mation «— the sort of general mediocrity you find in most
`programming books at your lecal bookstore. At Software
`Development ‘96. 1 stopped by the WROX booth and heard
`
`Broil-[Mm
`
`Full-Text Indexing and Retrieval
`Development Toolkit!
`
`(801)121-5901 Flu (Ml) III-5903
`
`Powerful—-~---—-_-__-_— Portable --~-
`Unlimited dmummmd quantity
`DDS, i‘tindocsll]. flfiLhd'
`Full control otdutumenl parsing
`03/2. hidiinlosll. HeiiL__Llniitw
`“9?“de 309'“- ‘ll'dmld
`UC+ +. vi. neiphi and other?
`l’l‘litlse. homily..."
`Pumphrnse, Delimited Search
`Unicode,
`lioion. and European
`Milli-level nested emissions
`thunder support
`'3"
`
`p
`
`iill'iiiiiiii'liéiliiiipi’r't‘
`Unequolod indexing lulled
`ill'l'oilis'iiiit‘li MWAlfiiirl Internet
`Fast tomnld'iénl’dies
`Z.Sinwlsirals_,ili.dslisiinfi_stiiairuL __ Flotilla. 9W Winn via midi
`Ellitienl index base liming
`"Panes ipi' tolioli ipplirpiipnsi
`
`
`
`
`
`
`
`) Dutch. Finnish. French. Italian. German. Spanish. and
`Swedish dictionaries available
`> integrates easily with circa, vs. and Delphi apps
`> Royalty Free
`) Portable C source code available
`> 16- and 32-bit SDKs inst $169.00 each
`
`AV
`. THESU
`*5. THESAURES
`”nus
`“K
`
`)' Synonyms and antonyms for over
`40.000 key words
`" Words classified by parts oi speech:
`Adjectives. adverbs. nouns. and verbs
`it Integrates easily with Glen, its, and Delphi apps
`) Add your own synonyms to a user thesaurus
`> Royalty Free
`J‘ Portable C source code available
`
`> 15- and 32-bit SDKs just $399.00 each
`
`[FREEDemosropwnipadssctrirptrHEsoBzirfromCompuServe‘s
`
`WINSDK forum. Public Utilities library. Or call for your free copy.
`‘L‘QREINFQIVESEI our Web page at httplitptthstnw-wsi or can.
`Sales: 1 -800-340-8803
`Phone: 613-825—6271
`Winterir‘ee
`FAX: 613-825-5521
`Email: wsi@i‘ox.nstn.ca
`S
`0 F
`l w in
`R
`t
`
`August 1996
`
`a Request Reader Service #148 0
`
`: Request Reader Sewioe #149 :1
`Windows Developer's Journal — Page 53
`
`Toshiba_Apricorn 1012-0006
`Toshiba_Apricorn 1012-0006
`IPR2018-01067
`|PR2018-01067
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`about their extensive efforts to revise this book and make it
`
`better. I listened politely, but with a lot of skepticism. If a
`publisher makes little money on the first editi0n, the book is
`usually abandoned; If it makes decent money, pouring that
`money back into improving the book is often not a priority,
`and make no mistake about it — quality technical writing
`costs money. This book seemed to be selling well for WROX.
`which led me to expect only inexpensive cosmetic improve-
`ments in the second edition. 50 it was wifl'i at least a little
`
`dread that I opened the box containing the new version of
`the book. Boy, was I surprised!
`As soon as I opened the book, I knew something was very
`different. I love books, down to the way they feel and smell (I
`hope this is not due to some kind of addictive glue used in the
`binding), and something felt very different from the previous
`edition. They were the same shape and weight, so 1 got Out
`the old version to compare. The difference was immediately
`obvious — the new edition has much more information
`packed into approximately the same number of pages. How
`can that be? Simple: most programming books are padded
`with white space, code, screen shots, etc., to achieve the spe—
`cific bulk (900 pages in this case) desired. In this new edition,
`the margins shrank, the font shrank, and the amount of infor-
`mation grew. Okay, they replaced the padding with content,
`but was the quality any better? I chose a topic I knew some-
`thing about and that I was fairly sure the book would not
`cover well: listview controls.
`
`
`Tired of Wrestling with OCX/DLL5??
`
`You need SEC+ +uand Objective Grid «HI-two new MFC
`
`extensions that are I00% MFC compatible!
`
`
`Dbiective Grid '
`unmanned” J.\._'I
`
`summation-Ilia!” .
`1 FW— u' I
`
`
`ridi'ia
` CView. Claim and even as 3 Donna. Tile grid can be bound to any external data source
`with one virtual override. Objective Grid also tealures oornpiele ODBCI'DAD swoon. print
`preview, iinol'rebdaoe. undoiredo. UNIODDEJDBCS and an amenable oonltol architecture.
`
`SEC“ l5 9 gram: of Over 40 MFC ”tensions iicludirig: docking views.MDl.e|1emalhres.
`zoom and pannrnq CVrews. image classes for DiniFiJF'GIPCKI'I'G-NWIF F, masked
` edit,
`
`nndar. mller well. menu button. excel-Eire tabbed windows. a tilesystem class.
`encrypting and omnnressing CFile derivalives and rnudi me.
`
`Both ereducls are VC++ 1.5:. 4.x compatible and come with Iul souroe code and
`
`royalties. Prices: Objective Grid: $395 SEC“: 5495. Subscriptions ave-labia.
`www.siingsofi.com
`Buy now and save a bundle...
`Stingray Software, Inc.
`
`leiled time oflen SECHlDbjeotive Grid
`Te; ram: 9244223 r [91919me
`bundle for only 5195'. Full souroe
`
`Fax: {919193343592
`code. no loyalties. Order Today!
`
`
`All major mail cards ammo.
`Email; saleefistlngsofloom
`
`
`
`u Requssl Reader Service #150 o
`Page 64 — Windows Developer's Journal
`
`
`
`
`
`nu
`
`
`
`I may not know MFC, but I know a little about listview
`controls. They have one of the goofiest designs of any con-
`trol Microsoft has ever made. When the listview control
`needs the text to draw a particular item, it sends you a noti-
`fication, and you are supposed to return a pointer to the
`string containing the text. Think about that. Your window
`procedure gets called asynchronously and asked to return a
`pointer to text. Obviously, your text had better not reside in
`a stack variable, or the listview control will most likely
`have a little problem on its hands! Just how long are you
`supposed to ensure that that silly pointer is valid? in fact, a
`Knowledge Base note says you need to keep it valid until at
`least two more messages arrive. I am not making this up.
`Even more incredibly, none of the books I‘ve seen that dig-
`cuss the listview control (see, for example, the clear but
`superficial Programming the Windows .95 User Interface, by
`Nancy Winnick Cluts) describe this fundamental problem
`in its design. Much to my surprise,
`the author clearly
`describes this problem in the section on how to use MFC
`with listview controls. To my delight, where I have been
`unable to devise a reasonable workaround for this ugly
`listview interface, the author provides a workaround that is
`simple, effectiVe, and no more distasteful than the problem
`it has to solve. I definitely did not expect to find a very
`handy piece of generic Windows programming information
`in an MFC book!
`
`Now I was hooked —I then compared the two editionsin
`detail to see what had been changed or added. Start with the
`book title: this is a book about M FC, and now the title reflects
`that. The chapter on application architecture hierarchy is
`mostly unchanged, though there are a few new (and wel-
`come) pages on startup issues (registry usage, command—line
`parsing, etc). The text on the crucial subject of the docu-
`ment/ view architecture shows only minor changes, but the
`two figures that describe SDI and MDI class relationships are
`significantly improved. That may sound trivial, but I found
`these new figures useful enough to copy and display wherel
`can see them. The OLE coverage is beefed up. The important
`topic of the Windows 95 common controls is larger and more
`detailed now; listview controls got 3 pages in the first edition,
`but get 13 pages of much denser text in the second edition»
`The chapter on using the new common controls with MFC is
`by itSElf more useful than some entire MFC books I’ve seen.
`
`The parts of the book that remain largely similar to the first
`edition often have minor impmvements scattered here and
`there.
`
`Is there still room for improvement? There always is, butI
`believe that the most significant point about this book is that
`WROX made a substantial investment in quality. These fOIkS
`spent time and money to improve the quality of a book that
`“’35 P1"obitbly already making a profit. Not broaden the
`SCOPE; 1'10t make it appear fatter, but improve the quality-
`And they succeeded! This may not be die only bODk You!”
`ever need on MFC, but it's the best one I’ve seen and the only
`one I'm willing to recommend so far. I hope that readers Will
`reward WROX's effort by buying this book, instead of if“!
`many inferior MFC titles on H19 market. Maybe we as COW
`somers can send the message that quality really is worth
`investing in.
`
`August 1996
`
`Toshiba_Apricorn 1012-0007
`Toshiba_Apricorn 1012-0007
`IPR2018-01067
`|PR2018—01067
`
`
`
`
`
`
`Teach Yourself Delphi 2 in 21 Days
`Dan Osier, Steve Gmbman, and Steve Balson
`982 pages
`Sams Publishing, 1996
`535.00
`ISBN 0672-3086341
`
`File3, EditZ, etc), which makes even simple code difficult to
`understand. Although they discuss exceptions, they employ
`almost no error trapping/handling. The front cover says
`"Learn what you need to get the Wind0w5 95 logo on your
`programs,” but the authors acknowledge that they cover only
`a few of the requirements.
`In general,
`the explanations are unclear. Chapter 7
`("Object—Oriented Programming") contains two pages of con-
`crete information and thirteen pages of an abstract discussion
`of "software engineering" (Grady Bood'i is "God of all that is
`Object Oriented"). The authors define modal only as "a win-
`dow that pops up to provide or request information" and
`assert that it "is not . . . your application's primary window."
`Chapter 7 addresses the issues of conserving resources and
`space, but "space" is defined as disk space (not memory), and
`"resources" are defined as CPU cycles (not Windows
`resources or memory). No indication is given about how to
`conserve either.
`
`When writing for novices, precision and consistency in
`word choice are crucial. But the authors call a procedure a
`function (in the section in which they attempt to distinguish
`between the two) and refer to the Textllutl) method as a
`property; they call a check mark before a menu item a check—
`box (six pages later they discuss the checkbox control); they
`refer to visual and nonvisual components as "visible" and
`"invisible.” They claim that the Wait“? and Tfluerv compo-
`nents are "ancestors of a dataset class” (they’re descendants).
`The authors are also forgetful: in Chapter 14, they promise to
`
`
`
`
`
`this review ms provided by George Tylm‘kil
`[Editor’s note:
`From the dedication (in which one author thanks 24 people
`and their families and another thanks his wife and dog in the
`same sentence) to the appendices (a five-page ASCII chart and
`a five-page ANSI chart), this is a bad book.
`The authors say that no "prior knowledge of writing code
`is assumed," and they do attempt to define things such as
`"subroutine" and "variable." In Chapter 8, they even employ
`”Mr. DOS," "Mr. Windows," and “Mr. Win32" to explain the
`"operating systems that Microsoft has released." However,
`so many items are not explained, and so much material is
`inaccurate, that a true novice will learn little. Of course, there
`are descriptions and illustrations of every menu item, tool—
`bar button, and option. But there is no logical development
`in the "course" material; pointers (which can be avoided for
`the most part with Object Pascal} are discussed on the fourth
`day (before the Project Manager) and the Visual Component
`Library isn‘t discussed until 250 pages into the book.
`Chapters 3 and 4 are a "Readers Digest version of the refer-
`ence manual."
`
`Each chapter ends with questions and exercises that are
`pedagogically unsound. Often, the reader cannot poSsibly
`answer the questions based on the information in the chap-
`ter. One "exercise" is to run Borland‘s tutorial. Another
`
`requires the student to "create a database application that
`uses all me data-aware controls." And "to demonstrate drag-
`and-drop to yourself .
`. . open Explorer and drag a worthless
`tend file onto the Recycle Bin (make sure to retrieve it if it was
`an important file}.”
`The quality of the authors“ code is poor. The errors are
`numerous and are typical of novices and former BASIC pro-
`grammers; they include (but are not limited to) using double
`instead of single quotation marks, using variables before they
`have been initialized, and omitting semicolons. In Chapter 4,
`there are 29 chunks of code (complete listings or fragments in
`the text), eight of these won’t compile and three of which
`don’t do what the authors claim. For example, the line
`
`llhile it (> 'q'l or {I 0 '0'
`
`)9!)
`
`makes a simple get-a-key program run forever. All of the code
`is simple and most is inefficient. It’s available from an Internet
`site (no disk or CD is included}. The book’s cover claims that it
`is "Endorsed by Borland International Inc." and "Approved
`for Technical Accuracy" by two Borland employees. Clearly,
`l3-Cll'lancl‘s imprimahir is no assurance of quality.
`In Chapter 5, the authors devote three pages to the impor-
`tance of using meaningful variable names, but fail to heed
`their own advice: they use Delphi's default names (Buttonl,
`
`OBJECT REPORTS
`STOPwaiting 10 minutes lor a 2 page report!
`STOP coding your report logic in some slow.
`unfamiliar, interpreted macro language!
`STOP exporting your object-oriented databaseto a.
`relational database just to produce reports!
`STOPwasling your time filling in gaps with DDE!
`STOP querying. filtering, and extracting temporary
`tables just to make your report writer happy!
`STOP creating simple reporting applications that
`require 5MB of diskspace and 8MB of RAM!
`STOP explaining to your users why your report writer
`can't generate the reports they want!
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`STARTusing OBJECT REPORTS!
`Object Reports is not another report writer. Object
`Reports is a C++ class library that positions your data on
`the page. Create your reports layer by layer in C++.
`
`
`Code your entire report in C++. Preview the output.
`
`
`Works with any GU! library. Static- or dynamic-link.
`SMALL! FAST! EFFtciENT! FLEXIBLE! EmnslaLEl ReusAHLEl
`
`
`source code included!!!
`
`
`. Borland. Microsoft. Symantec
`
`
`16- and 32-bit Windows
`
`
`Rollins Software Inc
`http:!fwww.rollinssoft.com
`
`August 1996
`
`Windows Developer‘s Journal — Page 65
`
`Toshiba_Apricorn 1012-0008
`Toshiba_Apricorn 1012-0008
`IPR2018-01067
`|PR2018—O1067
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`discuss triggers in the next chapter, but don’t; at the end of
`Chapter 16 they claim to have covered "how to add graphs to
`your reports,” but they haven't.
`In the Acknowledgments, the authors admit that the edi—
`tors made them feel "like we were in English class again, but it
`was worth it!" In Chapter 18, they say that the “Microsoft
`Developer’s Network CD .
`.
`. is the single largest wealth of
`information we have ever seen in one place" (what about a
`library?) Simply put, their writing skills are very weak. In
`addition to hundreds of punctuation, grammar, spelling and
`usage errors {89 fragments and run—on sentences alone), the
`writing is vague. repetitious, and cliche.
`If it cost $2.95, I would recommend this book; it’s replete
`with bowlers: "code that bring tears of joy to my eye"; ”In my
`mind, there are two things that really stick out"; "I want to
`give you the big picture in an easily digestible format"; "there
`always comes a time where you must print‘; ”use properties.
`. only if it is logical to do so. Methods .
`.can be used any
`time"; "Use the with statement auspiciously." Norm Crosby
`couldn’t have said it any better.
`in Chapter 13, which the authors refer to as "merely a teas-
`er," they address the important topic of how to pronounce
`“OLE 2” and conclude that “it’s better to look and sound like
`
`you know What you’re doing than actually doing anything."
`As with the book as a whole, 1 think I know what they‘re say-
`ing here, but I’m not sure.
`
` THE flTEXTSUITE
`
`
`H WA + HLPDK/PA + Interactive Help + OSHTools +
`Hyper-Image = The ultimate on-llne authoring tool
`for Windows, WlndostE, 05/2 and WWW HTML l
`
`
`
`
`- Import existing help files {hip} and HTML files [.htmlj for editing!
`
`0 A lull lealure true WYSIWYG Visual editor with a power topic tree and an image editor.
` ' Automalic lntemel World Wide Web HTML and 034‘? IPF generalion !
`
`.-
`.__m.n.-.p.-.mr
`' Interactive lorms, dialogs. dynamic topics embedded video dips.
`
`
`
`control WrnHelp events.
`n-L-o-.hu-M