TweetFollow Us on Twitter

January 92 - Postcard from Windows Land - Is Windows object-oriented?

Postcard from Windows Land - Is Windows object-oriented?

James Plamondon

When the Microsoft gang started writing Windows back in the mid-eighties, they were all excited about object programming. They, like Apple, toured Xerox PARC and saw what Xerox was doing with bit-mapped displays, windows, mice, and so on. Microsoft, like Apple, thought this stuff was going to be the wave of the future-so they went home and started working on a cool object-oriented operating system.

Then reality hit. Their target platform, the standard IBM PC of their day, was totally unable to handle the strain of a truly object-oriented system. So, like Apple, Microsoft compromised, and wrote a procedural operating system with an object-oriented flavor.

For whatever reason, however, Windows was unsuccessful throughout its development-until around the time Microsoft's OS/2 deal with IBM fell through-whereas the Mac OS was the star at Apple from soon after its inception. So the Windows operating system is only now beginning to flower, as the Mac OS did about four years ago.

What's amazing to me is how fast Windows is moving. Whereas Apple took ages to bring out System 7, Microsoft is bringing out Windows 3.1 just 18 months (roughly) after 3.0 hit the shelves. And Windows 3.1 should really be called Windows 4; it is a really big improvement over Windows 3.0 (which has sold over five million copies in the last year, so it's no slouch, either).

But is Windows object-oriented? Absolutely not-if, by "object-oriented," you mean written in an object programming language. Given Windows' origins and history, it couldn't be. Smalltalk and Simula were the only decent object programming languages available at the product's inception, and neither would give adequate performance on their target system. So Microsoft did the best it could under the restraints it was under at the time. And in at least one way, Microsoft did a better job than Apple.

Windows, true to its name, has a real windowing system; the Mac does not. This should come as no surprise to MacApp programmers; one of the most important benefits MacApp provides to Mac programmers is-you guessed it-a windowing system, in the form of MacApp views. [A Windows "window" is equivalent to a MacApp "view;" a MacApp "window" is equivalent to a Windows "frame window."] It is considerably easier to write an application framework for Windows than for the Mac, because a Windows framework could use the native windowing system. Zillions of lines of code could be saved.

On the Mac, when you create a window, you get a pointer to a data structure. This data structure is completely dumb. There's no way to call its methods or send it messages. In Windows, on the other hand, one can define a window class, and associate with this class a number of attributes and-importantly-a window procedure (WinProc). When you create a window, you must specify the class of the window. The window reference you get back is a unique window identifier, but it's completely "blind." You can't use it as a pointer to get at its data directly. Instead, you have to "send the window a message" to act on it.

"Sending the window a message" works just like "sending a message" to a Mac CDEF, WDEF, or other code resource. You call a procedure with an integer argument that indicates which message you're sending, and a couple of other arguments that can hold additional data. (Before you snort in disdain at the notion of using integral message discriminators, think about MacApp's use of command numbers in TEvtHandler.DoMenuCommand().)

So, Windows does a better job of data abstraction and encapsulation, at least with regard to window data structures. But is this abstraction and encapsulation enough to make it object-oriented?

Well, maybe not-but there's more. Having defined a window class, one can "subclass" the window class. Now, before you get all excited, let me admit that it's not "real" subclassing, using the definition used by object programming languages. But it's not a bad simulation.

Let's say you want to write a variation of the standard Windows "edit" control-to validate its entries as dates, perhaps. You would need to get a copy of the "edit" class' class info (by calling GetClassInfo()), and modify the resulting copy to use your new class name ("edit_date"). Also, you would save off the class info's pointer to the "edit" class' WinProc, and store the "edit_date" class' WinProc pointer in its place (in the copy). Then, you would call RegisterClass() to tell Windows that the window class existed.

Having done this, you can then create a window of class "edit_date" by telling Windows to do so. It will respond by handing you back a unique window identifier. From then on, both Windows and your application will interact with the window by sending it messages. Messages are sent to the window by calling the Windows function SendMessage() with the window ID as the first argument, or by calling other Windows functions that eventually call SendMessage().

SendMessage()'s prototype is roughly as follows:

long SendMessage(HWND hWnd, short wMsg, short wParam, long lParam);

[This prototype has been simplified for ease of understanding by the MacApp audience. The correct prototype is "LONG FAR PASCAL MyWinProc(HWND hWnd, WORD wMsg, WORD wParam, LONG lParam)."]

"hWnd" is the unique window ID. When SendMessage() is called on a given window, the window's WinProc is called. The WinProc's prototype is almost the same as that of SendMessage(); calling SendMessage() can be viewed as a polymorphic call to a window's message procedure.

The WinProc typically contains a huge switch statement (in Pascal, case statement) that forwards the message to the appropriate message handler (much like TApplication.DispatchEvent()). And, since you carefully saved off the standard Windows "edit" window class' WinProc pointer before calling RegisterClass(), you can call it from within your "edit_date" window class' WinProc-much like calling the inherited implementation of a method in an OOP language. It ain't pretty, but it works.

So, maybe Windows is object-oriented, and maybe it's not. Maybe, as a friend of mine said recently, object-orientation is not a binary, yes-or-no quality, but rather a continuum. If so, then Windows is certainly "more object-oriented" than the Mac OS, while being "less object-oriented" than MacApp.

The answer to the question may be irrelevant. It is relevant, though, that your MacApp experience will put you way ahead of the game in Windows programming. MacApp software development tools are on the cutting edge, while those for Windows are still blunt instruments, suitable only for beating code into submission.

But the bottom line remains the same: Windows is selling at an incredible rate, and will be a significant force in the microcomputer industry for years to come. By learning to program in Windows, you will be assuring your financial security for at least the next decade.

As the old saying goes, in the land of the blind, the one-eyed man is King; and with Windows selling at an incredible rate, the Land of the Blind is expanding rapidly. We MacAppers know how to wring the most out of an even vaguely-object-oriented system; you can see the opportunity this presents to us, even with one eye shut.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

MacFamilyTree 7.3.4 - Create and explore...
MacFamilyTree gives genealogy a facelift: it's modern, interactive, incredibly fast, and easy to use. We're convinced that generations of chroniclers would have loved to trade in their genealogy... Read more
Yummy FTP 1.10.2 - FTP/SFTP/FTPS client...
Yummy FTP is an FTP + SFTP + FTPS file transfer client which focuses on speed, reliability and productivity. Whether you need to transfer a few files or a few thousand, schedule automatic backups, or... Read more
VueScan 9.5.08 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
Iridient Developer 3.0.1 - Powerful imag...
Iridient Developer (was RAW Developer) is a powerful image conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
Air Video Server HD 2.1.0 - Stream video...
Air Video Server HD streams videos instantly from your computer on your iPhone, iPad, iPod touch or Apple TV. No need to worry about converting or transferring files. We took everything that was... Read more
Duplicate Annihilator 5.7.5 - Find and d...
Duplicate Annihilator takes on the time-consuming task of comparing the images in your iPhoto library using effective algorithms to make sure that no duplicate escapes. Duplicate Annihilator... Read more
BusyContacts 1.0.2 - Fast, efficient con...
BusyContacts is a contact manager for OS X that makes creating, finding, and managing contacts faster and more efficient. It brings to contact management the same power, flexibility, and sharing... Read more
Capture One Pro 8.2.0.82 - RAW workflow...
Capture One Pro 8 is a professional RAW converter offering you ultimate image quality with accurate colors and incredible detail from more than 300 high-end cameras -- straight out of the box. It... Read more
Backblaze 4.0.0.872 - Online backup serv...
Backblaze is an online backup service designed from the ground-up for the Mac.With unlimited storage available for $5 per month, as well as a free 15-day trial, peace of mind is within reach with... Read more
Little Snitch 3.5.2 - Alerts you about o...
Little Snitch gives you control over your private outgoing data. Track background activity As soon as your computer connects to the Internet, applications often have permission to send any... Read more

Pie In The Sky: A Pizza Odyssey (Games)
Pie In The Sky: A Pizza Odyssey 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: A game about delivering pizza. In space. | Read more »
Chosen Gives Hopeful Singers, Songwriter...
If YouTube videos and reality TV shows like The Voice have taught us one thing, it’s that there are a lot of people out there who are anxious to show the world their talents. And if they’ve taught us a second thing, it’s that there’s an almost... | Read more »
Android's Popular OfficeSuite Now A...
Once only available for Android devices, OfficeSuite has finally landed on the app store. The Mobile Systems app lets you view, edit, create, and share Word, Excel, and PowerPoint documents as well as convert them to/from PDFs. It's touted as being... | Read more »
Warhammer: Arcane Magic is Coming Soon,...
Turbo Tape Games has announced that they're joining forces with Games Workshop to bring the turn-based strategy board game, Warhammer: Arcane Magic, to life on the iOS. | Read more »
Fast & Furious: Legacy's Creati...
| Read more »
N-Fusion and 505's Ember is Totally...
| Read more »
These are All the Apple Watch Apps and G...
The Apple Watch is less than a month from hitting store shelves, and once you get your hands on it you're probably going to want some apps and games to install. Fear not! We've compiled a list of all the Apple Watch apps and games we've been able to... | Read more »
Appy to Have Known You - Lee Hamlet Look...
Being at 148Apps these past 2 years has been an awesome experience that has taught me a great deal, and working with such a great team has been a privilege. Thank you to Rob Rich, and to both Rob LeFebvre and Jeff Scott before him, for helping me... | Read more »
Hands-On With Allstar Heroes - A Promisi...
Let’s get this out of the way quickly. Allstar Heroes looks a lot like a certain other recent action RPG release, but it turns out that while it’s not yet available here, Allstar Heroes has been around for much longer than that other title. Now that... | Read more »
Macho Man and Steve Austin Join the Rank...
WWE Immortals, by Warner Bros. Interactive Entertainment and WWE, has gotten a superstar update. You'll now have access to Macho Man Randy Savage and Steve Austin. Both characters have two different versions: Macho Man Randy Savage Renegade or Macho... | Read more »

Price Scanner via MacPrices.net

Apple offering refurbished 27-inch 5K iMacs f...
The Apple Store is offering Apple Certified Refurbished 27″ 3.5GHz 5K iMacs for $2119 including free shipping. Their price is $380 off the price of new models, and it’s the lowest price available for... Read more
16GB iPad mini on sale for $199, save $50
Walmart has 16GB iPad minis (1st generation) available for $199.99 on their online store, including free shipping. Their price is $50 off MSRP. Online orders only. Read more
New 128GB MacBook Airs on sale for $50 off MS...
 B&H Photo has 128GB 11″ and 13″ 2015 MacBook Airs on sale today for $50 off MSRP including free shipping plus NY sales tax only: - 11″ 1.6GHz/128GB MacBook Air (Model #MJVM2LL/A): $849 $50 off... Read more
13-inch 2.6GHz Retina MacBook Pro (refurbishe...
The Apple Store has Apple Certified Refurbished 13″ 2.6GHz/128GB Retina MacBook Pros available for $979 including free shipping. Original MSRP for this model was $1299. Read more
Save up to $600 with Apple refurbished Mac Pr...
The Apple Store is offering Apple Certified Refurbished Mac Pros for up to $600 off the cost of new models. An Apple one-year warranty is included with each Mac Pro, and shipping is free. The... Read more
Samsung Galaxy S 6 and Galaxy S 6 edge U.S. P...
Samsung Electronics America, Inc. has announced the Galaxy S 6 and Galaxy S 6 edge will be available in the U.S. beginning April 10, with pre-orders being accepted now. “We have completely reimagined... Read more
13-inch 2.5GHz MacBook Pro (refurbished) avai...
The Apple Store has Apple Certified Refurbished 13″ 2.5GHz MacBook Pros available for $829, or $270 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 13″ 2.... Read more
Save up to $80 on iPad Air 2s, NY tax only, f...
 B&H Photo has iPad Air 2s on sale for $80 off MSRP including free shipping plus NY sales tax only: - 16GB iPad Air 2 WiFi: $469.99 $30 off - 64GB iPad Air 2 WiFi: $549.99 $50 off - 128GB iPad... Read more
iMacs on sale for up to $205 off MSRP
B&H Photo has 21″ and 27″ iMacs on sale for up to $205 off MSRP including free shipping plus NY sales tax only: - 21″ 1.4GHz iMac: $1019 $80 off - 21″ 2.7GHz iMac: $1189 $110 off - 21″ 2.9GHz... Read more
Färbe Technik Offers iPhone Battery Charge LI...
Färbe Technik, which manufactures and markets of mobile accessories for Apple, Blackberry and Samsung mobile devices, is offering tips on how to keep your iPhone charged while in the field: •... Read more

Jobs Board

DevOps Software Engineer - *Apple* Pay, iOS...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Sr. Technical Services Consultant, *Apple*...
**Job Summary** Apple Professional Services (APS) has an opening for a senior technical position that contributes to Apple 's efforts for strategic and transactional Read more
Lead *Apple* Solutions Consultant - Retail...
**Job Summary** Job Summary The Lead ASC is an Apple employee who serves as the Apple business manager and influencer in a hyper-business critical Reseller's store Read more
*Apple* Pay - Site Reliability Engineer - Ap...
**Job Summary** Imagine what you could do here. At Apple , great ideas have a way of becoming great products, services, and customer experiences very quickly. Bring Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.