View Code
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 }