/* A minimal Windows 98 skeleton. */ /* From the book _Windows 98 Programming from the Ground Up */ /* typed in and untested, so there may be typos -- KIF */ #include LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM); char szWinname[] = "MyWin"; /* name of window class */ int WINAPI WinMain(HINSTNACE hThisInst, HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode) { HWND hwnd; MSG msg; WNDCLASSEX wcl; /* Define a window class. */ wcl. cbSize = sizeof(WNDCLASSES); wcl.hInstance = hThisInst; /* handle to this instance */ wcl.lpszClassName = szWinName; /* window class name */ wcl.lpfnWndPrc = WindowFunc; /* window function */ wcl.style = 0; /* default style */ wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION); /* standard icon */ wcl.hIconSm = LoadIcon(NULL, IDI_WINLOGO); /* small icon */ wcl.hCursor = LoadCursor(NULL, IDC_ARROW); /* cursor style */ /* Make the window background white. */ wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); /* Register the window class. */ If(!RegisterClassEx(&wcl)) return 0; /* Now that a window class has been registered, a window can be created */ hwnd = CreateWindow( szWinName, /* name of window class */ "Windows 98 Skeleton", /* title */ WS_OVERLAPPEDWINDOW, /* window style - normal */ CW_USEDEFAULT, /* X coordinate - let Windows decide */ CW_USEDEFAULT, /* Y coordinate - let Windows decide */ CW_USEDEFAULT, /* width - let Windows decide */ CW_USEDEFAULT, /* height - let Windows decide */ HWND_DESKTOP, /* no parent window */ NULL, /* no menu */ hThisInst, /* handle of this instance of the program */ NULL /* no additional arguments */ ); /* Display the window. */ ShowWindow(hwnd, nWinMode); UpdateWindow(hwnd); /* Create the message loop. */ while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); /* translate keyboard messages */ DispatchMessage(&msg); /* return control to Windows 98 */ } return msg.wParam; } /* This function is called by Windows 98 and is passed messages from the message queue. */ LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case EM_DESTROY: /* terminate the program */ PostQuitMessage(0); break; default: /* Let Windows 98 process any messages not specified in the preceding message statement. */ return DefWindowProc(hwnd,message,wParam,lParam); } return 0; }