Programmer's Reference

Smalltalk code that uses the primitive above

The Smalltalk code that uses the primitive above is as follows:

The primitive declaration

installWindowProc: receiver selector: selector
   "Private - Answer the address of the standard window proc.
    Install the receiver and selector as the message that is
    sent for every operating system message."
   <primitive: installWindowProc>
   ^self primitiveFailed

Sample use of the primitive

initializeWindowClass
   "Private - Get the standard IBM Smalltalk window procedure and
    register the window class in the operating system."
   | address |
   "Get the address of the window proc and install the receiver and
    selector. This message is sent from the window proc for every
    operating system message."
   address := self
      installWindowProc: self makeFixed
      selector: #windowProc:msg:with:with: makeFixed.
   "Register the Smalltalk window procedure."
   WindowClass := 'WINDOWPROC'.
   Hab
      winRegisterClass: WindowClass
      pfnWndProc: address
      flStyle: CsSizeredraw
      cbWindowData: 4.

The Smalltalk code places the receiver and selector in fixed memory so that they cannot move during garbage collection.

This code is based on the IBM Smalltalk code for the window procedure. Some changes were made for clarity, so the code above might not match exactly the code in IBM Smalltalk.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]