[comp.windows.ms.programmer] Frequently Asked Questions: DIFF, comp.windows.ms.programmer edition

tom@mims-iris.waterloo.edu (Tom Haapanen) (05/18/91)

8c8
< Summary: version 1.16 [last change: th/91-04-29 --- more changes than ever...]
---
> Summary: version 1.16 [last change: th/91-05-14 --- tools, instances]
12d11
< (* changed items)
18c17
<     2.  Windows development tools *
---
>     2.  Windows development tools
21c20
<     5.  Windows RTF word processors  *
---
>     5.  Windows RTF word processors 
36a36
>    18.  Program instance communication
68a69
> 	    - Topspeed C			#
73a75
> 	    - Topspeed C++			#
82c84
< 	    - Topspeed Modula-2			2.01+
---
> 	    - Topspeed Pascal			#
84a87
> 	    - Topspeed Modula-2			2.01+

[ \tom haapanen --- university of waterloo --- tom@mims-iris.waterloo.edu ]
[ "i don't even know what street canada is on"               -- al capone ]

tom@mims-iris.waterloo.edu (Tom Haapanen) (06/05/91)

37a38,39
>    19.  Windows programmer's bibliography
> 
61c63
< 	designed for Microsoft C 5.1/6.0 and Microsoft Macro Assembler 5.1,
---
> 	designed for Microsoft C 5.1/6.0 and Microsoft Macro Assembler 5.1/6.0,
77a80,81
> 	    - Microsoft Visual Basic		1.0
> 
83c87
< 	    - Stonybrook Modula-2		2.0+
---
> 	    - Microsoft Pascal			5.0
84a89
> 	    - Turbo Pascal for Windows		1.0
86c91
< 	    - Microsoft Pascal			5.0
---
> 	    - Stonybrook Modula-2		2.0+
88,94c93,98
< 	    - Turbo Pascal for Windows		1.0
< 	Of these, Borland C++ and Turbo Pascal for Windows include their
< 	own Windows libraries, and do not require you to purchase a Windows
< 	SDK (although you will need to buy the SDK documentation, which is
< 	available separately).  Applications written using Borland C++  will
< 	not run in Windows 3.0 Real Mode, nor do they permit the use of
< 	huge pointers.
---
> 	Of these, Borland C++, Visual Basic and Turbo Pascal for Windows
> 	include their own Windows libraries, and do not require you to
> 	purchase a Windows SDK (although you will need to buy the SDK
> 	documentation, which is available separately).  Applications written
> 	using Borland C++ will not run in Windows 3.0 Real Mode, nor do they
> 	permit the use of huge pointers.
172,174c176,180
< 	CVW, which is similar to the DOS version of Codeview, requires a
< 	secondary monitor; a serial terminal can not be used.  CVW is
< 	included with the Windows SDK; MultiScope is a separate product.
---
> 	The CVW, which is similar to the DOS version of Codeview, included
> 	with the SDK requires a secondary monitor; a serial terminal can 
> 	not be used (a single-monitor version, CVW 3.05, is included with
> 	Microsoft C 6.0ax, and is also available separately from Microsoft).
> 	CVW is included with the Windows SDK; MultiScope is a separate product.
199a206
> 	txt2rtf					[shareware conversion tool]
210c217
<     can also be found on cica).
---
>     and txt2rtf can also be found on cica).
374a382,401
> 
> 
> 18. What books are there that I should be using for Windows programming?
> 
> >>  First of all, if you don't have an SDK, you'll want the SDK docs:
> 	SDK Reference -- Volume 1
> 		Microsoft Press, 1990, part no. 06856
> 	SDK Reference -- Volume 2
> 		Microsoft Press, 1990, part no. 06857
> 	SDK Guide to Programming
> 		Microsoft Press, 1990, part no. 06854
> 	SDK Tools
> 		Microsoft Press, 1990, part no. 06854
> 	SAA CUA Advanced Interface Design Guide
> 		IBM, 1989, part no. SC26-4582-0
>     Then you can get into the "aftermarket" books:
> 	Charles Petzold: Programming Windows, 2e
> 		Microsoft Press, 1990, ISBN 1-55615-264-7
> 	Jeffrey M. Richter: Windows 3: A Developer's Guide
> 		M&T Books, 1991, ISBN 1-55851-164-4

[ \tom haapanen --- university of waterloo --- tom@mims-iris.waterloo.edu ]
[ "i don't even know what street canada is on"               -- al capone ]

tom@mims-iris.waterloo.edu (Tom Haapanen) (06/17/91)

8d7
< Summary: version 1.16 [last change: th/91-05-14 --- tools, instances]
21a21
>     7.  Windows C++ class libraries
23,24c23,24
<     7.  Windows extended memory handling
<     8.  Windows screen prints
---
>     8.  Windows extended memory handling
>     9.  Windows screen prints
26c26
<     9.  Device driver development 
---
>    10.  Device driver development 
28,36c28,40
<    10.  Hiding dialog box controls
<    11.  Adding controls to a non-dialog box window
<    12.  Using floating-point in Windows
<    13.  Changing button colors 
<    14.  Programming using large model 
<    15.  Linking .FON files
<    16.  Window background colors
<    17.	Subclassing control windows
<    18.  Program instance communication
---
>    11.  Hiding dialog box controls
>    12.  Adding controls to a non-dialog box window
>    13.  Using floating-point in Windows
>    14.  Changing button colors 
>    15.  Programming using large model 
>    16.  Linking .FON files
>    17.  Window background colors
>    18.	Subclassing control windows
>    19.  Changing the color palette in 16-color mode
>    20.  Allocating global memory in a DLL
>    21.  Determining the amount of physical memory
>    22.  Aligning columns in a listbox
>    23.  Keeping an application iconized or in a fixed-size window
92a97,100
> 
> 	    - Microsoft COBOL			4.0
> 	    - MicroFocus COBOL			2.4+
> 
96,98c104,109
< 	documentation, which is available separately).  Applications written
< 	using Borland C++ will not run in Windows 3.0 Real Mode, nor do they
< 	permit the use of huge pointers.
---
> 	documentation, which is available separately).  The Windows SDK
> 	is also available in a bundle with Microsoft C 6.0ax, at a reduced
> 	price.
> 	
> 	Applications written using Borland C++ will not run in Windows 
> 	3.0 Real Mode, nor do they permit the use of huge pointers.
139c150
< 	g.  Spinnaker Plus.  ? list, ? runtime.
---
> 	g.  Spinnaker PLUS.  ? list, ? runtime.
142,147c153,154
<     3.	Use W:CASE or WindowsMAKER, both of which generate C code for 
< 	Windows.  This will still require the use of the SDK.  There is
< 	also available a shareware code generator UCB/WordPlan (available
< 	on cica.cica.indiana.edu), but it's considerably more limited in
< 	functionality than the commercial products.  No runtime license
< 	fees.
---
> 	h.  Windowcraft.  ? list, ? runtime.
> 	    [Does anyone have any details about this?]
148a156,162
>     3.	Use W:CASE, WindowsMAKER, VZ Programmer, Winpro/3 or ProtoGen, all
> 	of which generate C code for Windows.  This will still require the
> 	use of the SDK (or, in some cases, the use of BC++).  There is also
> 	available a shareware code generator UCB/WordPlan ,available on 
> 	cica.cica.indiana.edu, but it's considerably more limited in functio-
> 	nality than the commercial products.  No runtime license fees.
> 
156,159c170,174
< >>  You can use link4, included on the Microsoft C 5.1/6.0 compiler disks,
<     and available separately with the Supplemental Compiler Utilities
<     diskette (free) from Microsoft.  Other linkers that work for Windows
<     development are Optilink/Windows, Borland's tlink and Watcom's wlink.
---
> >>  You can use link 5.10 (or greater), included on the Microsoft C 5.1/6.0
>     compiler disks, and available separately with the Supplemental Compiler
>     Utilities diskette (free) from Microsoft.  Other linkers that work for
>     Windows development are Optilink/Windows, Borland's tlink and Watcom's
>     wlink.
189c204
< 	with the SDK, will work wither with a secondary monitor or a serial
---
> 	with the SDK, will work either with a secondary monitor or a serial
235a251,261
> 8.  What C++ class libraries are available for Windows programming?
> 
> >>  The following products provide C++ class libraries:
> 	Commonview	Glockenspiel Ltd.
> 	C++/Views	CNS, Inc.
> 	XVT++		XVT Inc.	[not released, beta test available]
> 	Tier++		?
> 	JTW		?
> 	Blaise		Blaise Computing
> 
> 
239c265
< 7.  What does Windows do with my extended memory?  After I run Windows,
---
> 8.  What does Windows do with my extended memory?  After I run Windows,
251c277
< 8.  How can I take a snapshot of my Windows screen?
---
> 9.  How can I take a snapshot of my Windows screen?
261c287
< 9.  What do I need to develop device drivers for Windows?
---
> 10. What do I need to develop device drivers for Windows?
270c296
< 10. How can I hide dialog box controls?
---
> 11. How can I hide dialog box controls?
277c303
< 11. How can I add pushbuttons and edit controls to a "normal" window which
---
> 12. How can I add pushbuttons and edit controls to a "normal" window which
285c311
< 12. Why does compiling a Windows application with emulator floating-point
---
> 13. Why does compiling a Windows application with emulator floating-point
293c319,320
<     thing terrible must have happened to the code.
---
>     thing terrible must have happened to the code.  [This problem affects
>     only Real mode, and Windows 2.x.]
308c335
< 13. How do I change the button colors?
---
> 14. How do I change the button colors?
331c358
< 14. Why should I not use large model in my Windows application?  Can I do
---
> 15. Why should I not use large model in my Windows application?  Can I do
352c379
< 15. I get errors linking fonts into a .FON file?  What's the problem?
---
> 16. I get errors linking fonts into a .FON file?  What's the problem?
366c393
< 16. Should I use GetStockObject( GCW_WHITEBRUSH ) for my window background?
---
> 17. Should I use GetStockObject( GCW_WHITEBRUSH ) for my window background?
373c400
< 17. The SDK Guide to Programming says that I shouldn't subclass standard
---
> 18. The SDK Guide to Programming says that I shouldn't subclass standard
384c411,506
< 18. What books are there that I should be using for Windows programming?
---
> 19. Is it possible to change the palette entries for a VGA running in
>     16 color mode?
> 
> >>  If you are using a standard driver, you will need to bypass Windows
>     to do it.  Microsoft will tell you to buy the DDK, but there is
>     another way.  Now, the Windows system palette maps onto the VGA
>     16-color palette as follows:
> 
>      VGAPAL    SYSPAL          VGAPAL     SYSPAL
>        00        00              08        07
>        01        01              09        13
>        02        02              10        14
>        03        03              11        15
>        04        04              12        16
>        05        05              13        17
>        06        06              14        18
>        07        12              15        19
> 
>      #define syspal(n) (n<7 ? n : (n>8 ? n+4 : (n=7 ? 12 : 7)))
>      #define vgapal(n) (n<7 ? n : (n>12 ? n-4 : (n=7 ? 8 : 7)))
>          
>     When you get a WM_SETFOCUS event, save the current state of the
>     hardware colormap and installs the one you want.  When you get a 
>     WM_KILLFOCUS event, restore the original palette. Don't use the 
>     pallette registers directly, though, just modify the color registers
>     that they point to.
> 
> 
> 20. How can I allocate global memory that's owned by a DLL?
> 
> >>  Basically, if you use GlobalAlloc in a DLL, the application that
>     called the DLL will own the object.  There is a way around this,
>     though: allocate the memory using the GMEM_DDESHARE flag; this
>     will make the allocating code segment (rather than the current task)
>     own the memory.
> 
> 
> 21. How do I determine how much physical memory is installed, in order
>     not to cause swapping in 386 Enhanced mode?
> 
>     You need to make a DPMI call to obtain that piece of information.  DPMI
>     call 0500h with ES:DI pointing to a 30h byte buffer returns the `Free
>     Memory Information':
> 
>     Offset      Description
>      00h        Largest available free block in bytes
>      04h        Maximum unlocked page allocation
>      08h        Maximum locked page allocation
>      0Ch        Linear address space size in pages
>      10h        Total number of unlocked pages
>      14h        Number of free pages
>      18h        Total number of physical pages
>      1Ch        Free linear address space in pages
>      20h        Size of paging file/partition in pages
>      24h-2Fh    Reserved
> 
>     The size of one page in bytes can be determined by function 0604h, which
>     returns the page size in bytes in BX:CX.  To call a DPMI function, invoke
>     the interrupt 31h. Carry bit will be clear if call was successful.
> 
>     The complete DPMI 0.9 specification is available free(!) at Intel Lite-
>     rature JP26, Santa Clara.  It's also available on cica.cica.indiana.edu.
> 
> 
> 22. How do I aling columns in a listbox?  The proportional font causes the
>     columns to be badly misaligned.
> 
> >>  In the resource file make sure the list box has the LBS_USETABSTOPS style.
>     When you add the items to the listbox, separate the fields with tabs.  
>     You can either use the default tab stops, or set your own by sending the
>     listboxI always used the LB_SETTABSTOPS message.  For more information,
>     see SDK Reference vol.1, page 6-44, and SDK Reference vol.2, page 8-43.
> 
> 
> 23. How can I force a window to stay iconic?  or to make it non-resizable?
> 
> >>  In order to make your app stay as an icon, you must process the
>     WM_QUERYOPEN message.  If you always return 0 for this message, you
>     indicate that the icon can not be opened into a ordinary window.
> 
>     To retain a fixed size, you must process the WM_GETMINMAXINFO message.
>     When you get it, modify the info pointed to by lParam:
> 	 LPPOINT lpSize = (LPPOINT)lParam;
> 	 lpSize[3].x = lpSize[4].x = theRightWidth;
> 	 lpSize[3].y = lpSize[4].y = theRightHeight;
>     If you don't want the window to be maximized or iconized, create it
>     with the ~WS_MAXIMIZEBOX and/or ~WS_MINIMIZEBOX styles, and disable
>     those items from the system menu, if there is one.  Also, you can
>     alternately disable resizing by creating the windows with ~WS_THICKFRAME,
>     and disabling the Size... item on the system menu.
> 
> 
>     --------------------
> 
> 
> 24. What books are there that I should be using for Windows programming?

[ \tom haapanen --- university of waterloo --- tom@mims-iris.waterloo.edu ]
[ "i don't even know what street canada is on"               -- al capone ]