/**************************************************************************** PROGRAM: MorfClnt.C (pohjana TestDDL.C) PURPOSE: Asiakasohjelma DDEmorfon testaamiseen. Morfo on Kielikone Oy:n ohjelmisto, joka tarkistaa suomenkielen sanojen oikeinkirjoitusta. Editor: Vesa Lappalainen 9.11.1992 Kari Heikkilä 18.11.1992 ( Morfo-DDE osat, merkitty M ) Projektiin tarvitaan: MorfClnt.C MorfClnt.DEF ALI\Morfo.c ALI\STRLIB.C ALI\STRLIB.RC ****************************************************************************/ #include /* Tarvitaan kaikissa Windows C-ohjelmissa */ #include #include #include "strlib.h" #include "morfo.h" /* M */ #define WCLASSNAME "MorfClntWClass" /***************************************************************************/ LONG FAR PASCAL MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; static char messu[]= "Tarkistettava jono:"; static char jono[20]= ""; static char MorfoTeksti[]= "Morfon vastaus:"; static char MorfonTulos[20]= ""; static char DDEteksti[]= "DDE:n tila:"; static char DDEstat[80]= ""; switch (message) { case WM_CREATE: switch ( alusta_Morfo(GetWindowInstance(hWnd)) ) { /* M */ case 0: strcpy(DDEstat,"DDE-yhteys muodostettu."); break; case -1: strcpy(DDEstat,"DDE:n alustus epäonnistui"); break; case -2: strcpy(DDEstat,"DDE-yhteys MORFOon epäonnistui"); break; default: strcpy(DDEstat,"Tuntematon virhe"); break; } break; case WM_PAINT: /* Viesti: Piirrä ikkuna uudelleen */ if ( BeginPaint(hWnd,&ps) ) { TextOut(ps.hdc, 10, 10, messu, strlen(messu)); TextOut(ps.hdc, 200, 10, jono, strlen(jono)); TextOut(ps.hdc, 10, 30, MorfoTeksti, strlen(MorfoTeksti) ); TextOut(ps.hdc, 200, 30, MorfonTulos, strlen(MorfonTulos) ); TextOut(ps.hdc, 10, 50, DDEteksti, strlen(DDEteksti)); TextOut(ps.hdc, 200, 50, DDEstat, strlen(DDEstat)); EndPaint(hWnd,&ps); } return NULL; case WM_CHAR: jono[0]= '\0'; KysyJono("Tarkistettava sana:",jono,jono,sizeof(jono)); switch ( tarkista_sana(jono) ) { /* M */ case 0: strcpy(MorfonTulos,"OIKEIN!"); break; case 1: strcpy(MorfonTulos,"VÄÄRIN!"); break; case -1: strcpy(DDEstat ,"DDE yhteys ei päällä!"); break; default: strcpy(MorfonTulos,"EI TOIMI"); } InvalidateRect(hWnd,NULL,TRUE); break; case WM_DESTROY: /* Viesti: ikkuna hävitetään */ lopeta_Morfo(); /* M */ PostQuitMessage(0); break; 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 */ MSG msg; /* Viesti */ HWND hWnd; (void)lpCmdLine; /* Hämäystä, jottei valitusta param. käytt. */ if (!hPrevInstance) { /* 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_ARROW); wc.hbrBackground = GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = WCLASSNAME; if (!RegisterClass(&wc)) return (FALSE); } hWnd = CreateWindow(WCLASSNAME,"Morfoasiakas-testi",WS_OVERLAPPEDWINDOW, 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 */ 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 */ }