1 #include<Windows.h>
2
3 LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam);
4
5 int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdSHow)
6 {
7 WNDCLASSEX WindowClass;
8 static LPCTSTR szAppName=L"OFWin";
9 HWND hWnd;
10 MSG msg;
11
12 WindowClass.cbSize=sizeof(WNDCLASSEX);
13 WindowClass.style=CS_HREDRAW|CS_VREDRAW;
14 WindowClass.lpfnWndProc=WindowProc;
15
16 WindowClass.cbClsExtra=0;
17 WindowClass.cbWndExtra=0;
18
19 WindowClass.hInstance=hInstance;
20
21 WindowClass.hIcon=LoadIcon(0,IDI_APPLICATION);
22 WindowClass.hCursor=LoadCursor(0,IDC_ARROW);
23
24 WindowClass.hbrBackground=static_cast<HBRUSH>(GetStockObject(GRAY_BRUSH));
25
26 WindowClass.lpszMenuName=0;
27 WindowClass.lpszClassName=szAppName;
28 WindowClass.hIconSm=0;
29
30
31 RegisterClassEx(&WindowClass);
32
33 hWnd=CreateWindow(szAppName,L"A Basic Window the Hard Way",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,
34 CW_USEDEFAULT,CW_USEDEFAULT,0,0,hInstance,0);
35 ShowWindow(hWnd,nCmdSHow);
36 UpdateWindow(hWnd);
37
38 while (GetMessage(&msg,0,0,0)==TRUE)
39 {
40 TranslateMessage(&msg);
41 DispatchMessage(&msg);
42 }
43
44 return static_cast<int>(msg.wParam);
45
46 }
47
48 LRESULT CALLBACK WindowProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
49 {
50 HDC hDC;
51 PAINTSTRUCT PaintSt;
52 RECT aRect;
53
54 switch(message)
55 {
56 case WM_PAINT:
57 hDC=BeginPaint(hWnd,&PaintSt);
58 GetClientRect(hWnd,&aRect);
59 SetBkMode(hDC,TRANSPARENT);
60
61 DrawText(hDC,L"But,soft!What light through yonder window breaks?",-1,&aRect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
62
63 EndPaint(hWnd,&PaintSt);
64 return 0;
65 case WM_DESTROY:
66 PostQuitMessage(0);
67 return 0;
68
69 default:
70 return DefWindowProc(hWnd,message,wParam,lParam);
71 }
72 }