在VC中建立WIN32 APPLICATION 后该在哪里写程序??
能否给个简单(比如用API函数画线)但详细的例子?

解决方案 »

  1.   

    vc创建win32 application的时候,可以指定给出一个简单的hello world的例子啊
      

  2.   

    你这些线的绘制应该放在WM_PAINT消息后面
      

  3.   

    SINEWAVE.C -- Sine Wave Using Polyline
            
               (c) Charles Petzold, 1998
            
    ---------------------------------------------------------------------*/
            
    #include <windows.h>
            
    #include <math.h>
            
    #define NUM 1000
            
    #define TWOPI      (2 * 3.14159)
            
    LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
            int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
            
                       PSTR szCmdLine, int iCmdShow)
            
    {
            
        static TCHAR szAppName[] = TEXT ("SineWave") ;
            
        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 ("Program requires Windows NT!"),
            
                       szAppName, MB_ICONERROR) ;
            
                       return 0 ;
            
        }
            
       
            
        hwnd = CreateWindow ( szAppName, TEXT ("Sine Wave Using Polyline"),
            
                              WS_OVERLAPPEDWINDOW,
            
                               CW_USEDEFAULT, CW_USEDEFAULT,
            
                               CW_USEDEFAULT, CW_USEDEFAULT,
            
                               NULL, NULL, hInstance, NULL) ;
            
        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)
            
    {
            
        static int  cxClient, cyClient ;
            
        HDC         hdc ;
            
        int         i ;
            
        PAINTSTRUCT ps ;
            
        POINT       apt [NUM] ;
            
       
            
        switch (message)
            
        {
            
        case   WM_SIZE:
            
                cxClient = LOWORD (lParam) ;
            
               cyClient = HIWORD (lParam) ;
            
                return 0 ;
            
            
            
        case   WM_PAINT:
            
                hdc = BeginPaint (hwnd, &ps) ;
            
            
            
                MoveToEx (hdc, 0,             cyClient / 2, NULL) ;
            
                LineTo   (hdc, cxClient, cyClient / 2) ;
            
            
            
                for (i = 0 ; i < NUM ; i++)
            
             {
            
                       apt[i].x = i * cxClient / NUM ;
            
                       apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;
            
             }
            
            
            
                Polyline (hdc, apt, NUM) ;
            
                return 0 ;
            
            
            
        case   WM_DESTROY:
            
                PostQuitMessage (0) ;
            
                return 0 ;
            
        }
            
        return DefWindowProc (hwnd, message, wParam, lParam) ;
            
    }