Home  >  Article  >  Backend Development  >  "Hello world" is not simple

"Hello world" is not simple

伊谢尔伦
伊谢尔伦Original
2016-11-26 09:20:30914browse

 The first C program example at the beginning of the classic tutorial "The C Programming Language" co-authored by Kernighan and Ritchie is to print a simple "hello world". Since then, "hello world" has become synonymous with describing the first program a person writes - regardless of language technology, even if the program does not actually output the words "hello world" in the text.

For beginners, this "hello world" program is scary. He will think, "I must be very stupid. Even this introductory hello world program is difficult for me. If this continues, I will not like programming."

In fact, the reason for this problem is that we combine "the first" and "The simplest one" is confused. The "hello world" program can be any program, with no difficulty restrictions. When you first program, you don't know which compiler to use, where your code files should go, what format they should be in, etc. You need to learn. A lot of knowledge needs to be learned and learned slowly before you can really program.

When I first started learning programming, I always wanted to get past the stage of writing "hello world" programs as quickly as possible, hoping to start writing truly useful programs right away. But in reality, I found myself spending most of my life writing "hello world" programs with no end in sight.

Whenever the "hello world" program is discussed, it is almost inevitable to talk about the most terrifying "hello world" program in the world: the first Windows described by Charles Petzold in his book "Programming Windows" program. I can only find the Windows 98 version of this book. I don’t know how different it is from the original version, but I have the impression that the code in the original version would be scarier than this one.

/*------------------------------------------------------------
   HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
                 (c) Charles Petzold, 1998
  ------------------------------------------------------------*/
  
#include
  
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
  
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("HelloWin") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
  
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
  
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
       
     hwnd = CreateWindow (szAppName,                  // window class name
                          TEXT ("The Hello Program"), // window caption
                          WS_OVERLAPPEDWINDOW,        // window style
                          CW_USEDEFAULT,              // initial x position
                          CW_USEDEFAULT,              // initial y position
                          CW_USEDEFAULT,              // initial x size
                          CW_USEDEFAULT,              // initial y size
                          NULL,                       // parent window handle
                          NULL,                       // window menu handle
                          hInstance,                  // program instance handle
                          NULL) ;                     // creation parameters
       
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
       
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}
  
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;
       
     switch (message)
     {
     case WM_CREATE:
          PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
          return 0 ;
            
     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;
            
          GetClientRect (hwnd, &rect) ;
            
          DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
                    DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
            
          EndPaint (hwnd, &ps) ;
          return 0 ;
            
     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn