Errata

No book is perfect, and here are the known mistakes in the first printing. Nothing TOO serious, but I am a perfectionist!

In the book

Pages xvii, xviii

Acknowledgements name typos...

Pierre Bonutquin
Nadine Koano
Michel Suignoard
Minho VUrabe
Edward TYe



Page 21

queestão should actually be que estão.



Chapter 3 (Pages 51-81)

Although the book's layout was done mostly with Word 2000, there were 
a few cases where some other products (whose names I will not list here!) 
were used, and they caused some problems. The layout of Chapter 3 was 
slightly affected by one of these programs, causing a few specific characters 
to be replaced by other characters. Sorry about that!



Pages 52-53

Figures 3.1 and 3.4 have the wrong captions, these two should be reversed.



Page 188

A small word misusage that does change the meaning of the sentence!
"I have to admit it was almost impossible to resist the changechallenge..."



Page 195

See the error in the Uniscribe control sample, below; the same error 
exists on this page.



Page 430-431

A few incorrectly specified ISO language/country pairs:

Indonesian			ind
Romanian--Moldava		ro-mod
Russian--Moldava		ru-mod
Yiddish				jyi

(These are actually some bugs in Microsoft documentation that I propogated. Oops!)


On the CDROM

Owner draw menu sample

The WindowProc in basMenu has the following (one line) issue:

    If (dis.itemState And ODS_SELECTED) = ODS_SELECTED Then

Without these parentheses, all of the items will appear selected, instead 
of just one of them, when you make a selection.



Uniscribe control sample

The Keyboard handling code will not work on Win9x at all, and it will not 
handle "Unicode only" languages on Windows 2000. To fix, change the following 
code in the basKeyboard module's ToCharacterEx function:

    If Not UnicodeSystem Then

The same error exists in Page 195 of the book.



LoadString Wrapper

Small copy/paste bug in the LoadString wrapper for Win9x. To fix, change the following
line in the LoadString function in basResource:

    If FOnWindowsNT() Then
        cch = LoadStringW(hInstance, wID, StrPtr(lpBuffer), Len(lpBuffer))
    Else
        cch = LoadStringW(hInstance, wID, StrPtr(lpBuffer), Len(lpBuffer))
        cch = LoadStringA(hInstance, wID, lpBuffer, LenB(StrConv(lpBuffer, vbFromUnicode)))
    End If

Also, a small bug in the returned string of the function, to fix, change the following line
in the same function:

    If cch > 0 Then
        LoadString = Left$(lpBuffer, cch - 1)
        LoadString = Left$(lpBuffer, cch)