WinApi Lesson One

From Wikiversity

Jump to: navigation, search

Contents

[edit] Lesson One

One of the most important things to learn about using the WINAPI to write windows applications is that to do so you have to fill a Windows class structure. The following code will show you how.

[edit] //Window Procedure

#include<windows.h> 

TCHAR* Simple = TEXT("A Simple Window...");

LRESULT CALLBACK WinProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam)
{
  switch(Msg)
  {
    case WM_CLOSE:
      DestroyWindow(hwnd);
      break;
    case WM_DESTROY:
      PostQuitMessage(0);
      break;
    default:
      return DefWindowProc(hwnd, Msg, wParam, lParam);
  }
return 0;
}

[edit] //WinMain Function

int WINAPI WinMain (HINSTANCE hInst, HINSTANCE hPrev,  LPSTR lpCmd, int nShow)
{ WNDCLASS wc; HWND hwnd; MSG Msg; //The WNDCLASS struct wc is filled here by assigning all members of the struct wc.lpfnWndProc = WinProc; wc.hInstance = hInst; wc.style = CS_BYTEALIGNCLIENT; wc.lpszMenuName = NULL; wc.lpszClassName = Simple; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wc.cbWndExtra = 0; wc.cbClsExtra = 0;

//end of struct assignments

//Register our newly defined window class

   RegisterClass(&wc); 

//Create a window from wc class

  hwnd = CreateWindow(Simple, Simple, WS_OVERLAPPEDWINDOW | WS_VISIBLE, 
   CW_USEDEFAULT, CW_USEDEFAULT, 300, 210, HWND_DESKTOP, NULL, hInst, NULL); 

//Updating the window

  UpdateWindow(hwnd); 

//The message loop or the place where messages are routed

  while(GetMessage(&Msg, NULL, 0, 0) > 0)
  {
    TranslateMessage(&Msg);
    DispatchMessage(&Msg);
  }
return (int)Msg.wParam;
}

[edit] Questions

Leave all your questions here.

Bodene 04:29, 17 January 2007 (UTC)

Could you explain what a windows class structure is, what its for etc? Anonymous 07.38, 3 July 2007

WinApi Home

Personal tools
community