/**************************************************************************** PROGRAM: Mhello.c PURPOSE: "Pienin Windows-ohjelma". Tulostaa näyttöön tekstin Hello World Editor: Vesa Lappalainen typistänyt malliohjelmista. ****************************************************************************/ #include /* Tarvitaan kaikissa Windows C-ohjelmissa */ #include #include LONG CALLBACK _export MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { char *osoite[]={"Vesa","Palokka",NULL}; int i; PAINTSTRUCT ps; switch (message) { case WM_PAINT: /* Viesti: Piirrä ikkuna uudelleen */ if ( BeginPaint(hWnd,&ps) ) { int dy = HIWORD(GetTextExtent(ps.hdc,"X",1)) + 1; y = 10; for (i=0; osoite[i]; i++) { TextOut(ps.hdc, 10, y, osoite[i],strlen(osoite[i])); y += dy; } } EndPaint(hWnd,&ps); return (NULL); case WM_MOUSEMOVE: { HDC hdc = GetDC(hWnd); int x = LOWORD(lParam); int y = HIWORD(lParam); char s[50]; if ( !hdc ) return NULL; sprintf(s,"(%d,%d)",x,y); TextOut(hdc, x, y, s, strlen(s)); ReleaseDC(hWnd,hdc); } return NULL; case WM_DESTROY: /* Viesti: ikkuna hävitetään */ PostQuitMessage(0); return (NULL); default: /* Antaa Windowsin käsitellä muut */ break; } return (DefWindowProc(hWnd, message, wParam, lParam)); } int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASS wc; /* Ikkunaluokka */ HWND hWnd; /* Pääikkunan kahva */ MSG msg; /* Viesti */ if (lpCmdLine); /* Hämäystä, jottei valitusta param. käytt. */ if (hPrevInstance == NULL) { /* Onko muita esiintymiä käynnisssä? */ wc.style = NULL; wc.lpfnWndProc = MainWndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(NULL, IDI_APPLICATION); wc.hCursor = LoadCursor(NULL, IDC_CROSS); wc.hbrBackground = GetStockObject(GRAY_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "WHelloWClass"; if (!RegisterClass(&wc)) return (FALSE); } hWnd = CreateWindow("WHelloWClass","Windows Hello", WS_OVERLAPPEDWINDOW, // WS_THICKFRAME | WS_SYSMENU, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,NULL,hInstance,NULL); if (!hWnd) return (FALSE); ShowWindow(hWnd, nCmdShow); /* Näytetään ikkuna */ UpdateWindow(hWnd); /* Lähetetään WM_PAINT viesti */ #if 0 { HDC hdc = GetDC(hWnd); TextOut(hdc, 10, 10, "Hello World!",12); ReleaseDC(hWnd,hdc); } #endif while (GetMessage(&msg,NULL,NULL,NULL)) { // TranslateMessage(&msg); /* Tulkitaan virtuaaliset näp. koodit */ DispatchMessage(&msg); /* Lähetetään viesti ikkunalle */ } return (msg.wParam); /* Palautetaan PostQuitMessage-funktion arvo */ }