UGN Security Forums
My ProfileMember DirectoryLogin
Search our ForumsView our FAQView our Site Rules
View our CalendarView our Active TopicsGo to our Main Page

UGN Security Store
 

Network Sites UGN Security, Elite Web Gamers, Back of the Web, EveryDay Helper, VNC Web Design & Development
Our Sponsors

Latest Postings
my old account still exists!
by Gizmo
08/19/08 02:27 PM
Burger King gone Wild!
by Gizmo
08/08/08 11:42 PM
PDX 2600
by rbcp
08/07/08 12:46 AM
The Pirate Bay- shut down?
by ZER0_DECEPTION
08/05/08 09:07 PM
Windows Events for Changing Access rights to a folder or a File
by Gizmo
08/05/08 12:32 PM
question about IE and CSS
by §intå×
08/04/08 08:51 PM
Server
by Gizmo
08/01/08 01:29 AM
Miss mash of urban ledgends told so well
by ZER0_DECEPTION
07/28/08 06:35 AM
Topic Options
#17622 - 09/24/02 10:02 AM Article: How Windows Work
SilentRage Offline
DollarDNS Owner

Registered: 03/04/02
Posts: 1273
Loc: OH, USA
First of all, I wanna make sure we're on the same wavelength and tell you what a 'window' really is. You may think of the browser window you're looking at right now as a window. But that window contains many smaller and specialized windows too. Every button, text box, and even those scrollbars are windows. How do they work? How does a button get disabled? How does a scrollbar scroll? How is the max characters set for a textbox?

Let's start when the window is born. When you create a window (see: CreateWindowEx API) you must supply a name for the window, a class, and various other parameters like width, height, and even settings like visibility and whether it has borders and much much more... The most important is the CLASS you specify. The CLASS determines what kind of animal your window will be. There's 'Button', 'Edit' (textbox), 'Combobox', and many other different window classes. You can even create your own classes. Most of the windows you recognize as windows are application defined classes.

Now what do classes mean to windows? Well, each class has their own seperate function. This function is called to change the behavior of some window whose apart of that class. The classes that are apart of windows such as buttons and such are based on functions that are also apart of windows. When you create a class, then you must also specify which function in your application is associated with it. Then you can create as many windows that is a member of that class as you want.

Ok, now to make all this real to you. Let's say you made a simple program with a button on a form. When the user clicks the button, the code will disable it. So what happened behind the scenes? When you clicked the button, the program sent a WM_ENABLE message to the button class function and set it to false. It looks something like this:

SendMessage Button1.hWnd, WM_ENABLE, 0, 0

That's how you'd call it if you wanted to do it directly. SendMessage is an API function which accepts 4 arguments. The first one is the handle to the button window. The second is the type of message you're sending, in this case WM_ENABLE. The last 2 arguments are meant for whatever the message needs. In the case of WM_ENABLE, the 3rd argument is set to 0 for false, or 1 for true. The 4th argument is unused. To make the button enabled again, you do this:

SendMessage Button1.hWnd, WM_ENABLE, 1, 0

When you send that message to the button, the button class function gets called in windows, and it will disable the button for you.

That's it. Almost everything is done via messages. Take a ListView window for example (Class=SysListView32 created by comctl32.dll) which all folders use to display those files. Those columns and those items in the list are all added via messages. The application calls the SendMessage function (or some equivilent. See: CallWindowProc & DefWindowProc) messages such as LVM_INSERTCOLUMN and LVM_INSERTITEM.

Another example as hinted at at the start of this topic.

SendMessage Text1.hWnd, EM_SETLIMITTEXT, 20, 0

This will cause the textbox to only allow 20 characters to be entered into the textbox.

---

How to look up the different messages and learn what they do. Download API-Viewer from http://www.allapi.net and look up the following to get a list of messages for a given window.

Edit (TextBox)
Type EM_ (Edit Messages)

SysListView32 (ListView)
Type LVM_ (List View Messages)

See the pattern? Well, go to msdn.microsoft.com and look up any message you wanna learn about.

---

Feel free to ask any questions since I went over a lot of information relatively briefly.
_________________________
Domain Registration, Hosting, Management
http://www.dollardns.net

Top
Our Sponsors
Sponsor Our Sponsors

Top  
#17623 - 09/26/02 11:05 AM Re: Article: How Windows Work
psychogen Offline
Member

Registered: 03/02/02
Posts: 257
Loc: UK
sweet now I understand how people write trainers besides asm!
_________________________
The use of "hacker" to mean "security breaker" is a confusion on the part of the mass media. We hackers refuse to recognize that meaning, and continue using the word to mean, "Someone who loves to program and enjoys being clever about it."
--------------------
"Its not a bug, its a feature" (Epic Games)

Top



Forum Stats
6910 Members
44 Forums
10411 Topics
45148 Posts

Max Online: 677 @ 06/30/07 10:06 PM
Top Posters
Gizmo 6927
UGN Security 3389
§intå× 3250
IceMyst 1449
SilentRage 1273
Ice 1146
pergesu 1134
Infinite 1039
jonconley 954
Girlie 903
Newest Members
byopc, cybermox, NiPah, mcscrwdy25, mobi
6910 Registered Users
Who's Online
1 Registered (Gizmo), 13 Guests and 6 Spiders online.
Key: Admin, Global Mod, Mod
Latest News
Update Humpday - Aug 20, 2008
by Gizmo
Today at 01:48 AM
Update Humpday - Aug 14, 2008
by Gizmo
08/14/08 08:33 AM
Update Humpday - Aug 06, 2008
by Gizmo
08/06/08 08:05 AM
Update Humpday - Jul 30th, 2008
by Gizmo
07/31/08 11:17 AM
Photo Gallery Update
by Gizmo
07/25/08 05:14 AM


Donate

Get the Google FireFox Toolbar
Get Firefox!
Get FireFox!