MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
A simple windows programm in C
04.04.2011
22:20
Текстовые метки: C, MinGW, TextOut, linker error
Раздел: MinGW

The following programm is a minimal windows program. It opens a window and writes a text into the window.

If you compile it with MinGW, be sure to add the -mwindowsflag in order to prevent the ... undefined reference to 'TextOutA@20' and ... undefined reference to 'GetStockObject@4 linker error.

#include <windows.h>

LRESULT CALLBACK WndProc(
    HWND   hWnd,
    UINT   msg,
    WPARAM wParam,
    LPARAM lParam ) {

  switch( msg ) {
    case WM_PAINT: {
      PAINTSTRUCT ps;
      HDC hDC = BeginPaint( hWnd, &ps );
      TextOut(hDC, 10, 10, "ADP GmbH", 8 );
      EndPaint( hWnd, &ps );
    }
    break;

    case WM_DESTROY:
      PostQuitMessage(0);
    break;

    default:
      return DefWindowProc( hWnd, msg, wParam, lParam);
  } 
  return 0;
}


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                   LPSTR lpCmdLine, int nCmdShow) {

  WNDCLASSEX wce;

  wce.cbSize        = sizeof(wce);
  wce.style         = CS_VREDRAW | CS_HREDRAW; 
  wce.lpfnWndProc   = (WNDPROC) WndProc; 
  wce.cbClsExtra    = 0; 
  wce.cbWndExtra    = 0; 
  wce.hInstance     = hInstance; 
  wce.hIcon         = LoadIcon((HINSTANCE) NULL, IDI_APPLICATION); 
  wce.hCursor       = LoadCursor((HINSTANCE) NULL, IDC_ARROW); 
  wce.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); 
  wce.lpszMenuName  = 0;
  wce.lpszClassName = "ADPWinClass",
  wce.hIconSm       = 0;
 
  if (!RegisterClassEx(&wce)) return 0; 
  
  HWND hWnd = CreateWindowEx(
    0,          // Ex Styles
    "ADPWinClass",
    "ADP GmbH",
     WS_OVERLAPPEDWINDOW,
     CW_USEDEFAULT,  // x
     CW_USEDEFAULT,  // y
     CW_USEDEFAULT,  // Height
     CW_USEDEFAULT,  // Width
     NULL,           // Parent Window
     NULL,           // Menu, or windows id if child
     hInstance,      // 
     NULL            // Pointer to window specific data
  );

  ShowWindow( hWnd, nCmdShow );

  MSG msg;
  int r;
  while ((r = GetMessage(&msg, NULL, 0, 0 )) != 0) { 
    if (r == -1) {
      ;  // Error!
    }
    else {
      TranslateMessage(&msg); 
      DispatchMessage(&msg); 
    }
  } 

  // The application's return value
  return msg.wParam;
};
← Содержание ...
 
MyTetra Share v.0.35
Яндекс индекс цитирования