Presentation is loading. Please wait.

Presentation is loading. Please wait.

GAM666 – Introduction To Game Programming You must use special libraries (aka APIs – application programming interfaces) to make something other than a.

Similar presentations


Presentation on theme: "GAM666 – Introduction To Game Programming You must use special libraries (aka APIs – application programming interfaces) to make something other than a."— Presentation transcript:

1 GAM666 – Introduction To Game Programming You must use special libraries (aka APIs – application programming interfaces) to make something other than a text-based program. The C++ choices are: ● The original Windows SDK (Software Development Kit), a C library ● MFC (Microsoft Foundation Classes), a sophisticated wrapper around the Windows SDK ● ATL (Active Template Library), a light- duty wrapper around the Windows SDK ●.NET, Microsoft's new technology Windows Programming in C++

2 GAM666 – Introduction To Game Programming ● Games generally take over the whole screen ● Windows SDK is the simplest route to getting to the point where the screen has been taken over ●.NET not univerally installed yet ● We cover MFC/ATL/.NET in other courses Why Use the Windows SDK?

3 GAM666 – Introduction To Game Programming Basic Windows SDK Concepts ● Write a WinMain(), not a classical main() ● #include and probably ● Often #define WIN32_LEAN_AND_MEAN before those #includes to cut down on further #includes of rarely used header files ● Use many #define- and typedef-created data types from those header files (e.g. BOOL, HWND) ● Use MS-specific declaration modifiers (e.g. WINAPI, CALLBACK) for functions

4 GAM666 – Introduction To Game Programming Basic Windows SDK Concepts Some Data Types are: ● BOOL - a boolean value (TRUE or FALSE) ● HWND - “handle” to a window ● UINT - unsigned integer (32 bit) ● WPARAM - “word” parameter (32 bit, originally 16, for passing an integer value, for example) ● LPARAM - “long” parameter (32 bit, for passing an address, for example) ● LRESULT - 32 bit return code from a function ● HINSTANCE - “handle” to a running instance of a program

5 GAM666 – Introduction To Game Programming Messages ● MS Windows uses Messages to communicate with the windows in a program ● Every window in a windows program (which includes Controls, which are preprogrammed sub-windows like buttons and list boxes) has a Window Procedure, which is the code to handle any message that may be sent to the window ● A window is customized by writing a custom window procedure for it, and supplying that procedure's address to Windows, which will call the procedure when needed.

6 GAM666 – Introduction To Game Programming Messages A window procedure is passed four things: ● An HWND, identifying the window for whom the message is intended ● A UINT, identifying which message it is ● A WPARAM, containing a piece of data ● An LPARAM, containing another piece of data (typically a pointer to more data, but not necessarily) The WPARAM and LPARAM meaning and usage varies between different messages

7 GAM666 – Introduction To Game Programming Messages Messages can come from: ● Windows, based on user interaction or some other operating system activity ● Another window (in the same program or another) ● The program code itself, using either SendMessage() (waits until message is handled) or PostMessage() (puts the message on a queue but doesn't wait for it to be handled)

8 GAM666 – Introduction To Game Programming Messages ● Controls (like buttons) have a window procedure that you don't see ● Controls will send a WM_COMMAND message to the parent window when the user interacts with them, its WPARAM identifies the control and the operation ● Macros LOWORD() and HIWORD() can extract the low- and high-order 16 bits of a WPARAM or LPARAM (or you can do the bit manipulation operations yourself)

9 GAM666 – Introduction To Game Programming Dialogs ● A Dialog is a pop-up window that typically contains a bunch of controls ● A dialog can be laid out using a resource file (extension.rc) to describe the controls, rather than creating the controls from within the C++ code ● A header file is typically used to interlink the C++ code with the resource code by using symbolic names for IDs, since both languages understand the #define and #include syntax

10 GAM666 – Introduction To Game Programming Dialogs ● A dialog is supplied the address of a Dialog Procedure, which is a window procedure specifically designed to handle a dialog (return value is BOOL rather than LRESULT) ● Can get the HWND of a control on a dialog using GetDlgItem() ● Can send a message to a control on a dialog using SendDlgItemMessage() or PostDlgItemMessage() [alternative to calling GetDlgItem() then Send/PostMessage()]

11 GAM666 – Introduction To Game Programming Dialogs ● WM_INITDIALOG is the ID of the message sent to a dialog just after it is first created, giving you a chance to initialize its controls and do other one-time setup ● WM_COMMAND is the ID of the message sent to a window when (among other things) one of its controls (ID in low order 16 bits of WPARAM) has something to pass along ● IDCANCEL is a predefined control ID that corresponds to a user request to close the window

12 GAM666 – Introduction To Game Programming Dialogs ● Each kind of control has different messages that can be sent to it ● E.g. CB_GETCURSEL is the ID of the message you send to a ComboBox to get the index of the item in the combobox that is currently selected ● E.g. LB_ADDSTRING is the ID of the message you send to a ListBox to add another string (passed in the LPARAM) to the listbox

13 GAM666 – Introduction To Game Programming Dialogs ● Dialogs can be modal (application waits until dialog has been completed) or not (dialog and other application windows can be used at the same time) ● Modal dialogs can be created by calling DialogBox() ● Modal dialogs should be terminated by calling EndDialog()


Download ppt "GAM666 – Introduction To Game Programming You must use special libraries (aka APIs – application programming interfaces) to make something other than a."

Similar presentations


Ads by Google