#include<windows.h>
#include<tchar.h> 
#include<string>
#include<cmath>
using namespace std;const double  Pi=3.1415926;
long   WINAPI   WndProc(HWND   hWnd,UINT   uMsg,WPARAM   wParam,  LPARAM  lParam);
BOOL   InitWindowsClass(HINSTANCE   hInstance);
BOOL   InitWindows(HINSTANCE   hInstance,int nCmdShow);
int    WINAPI   WinMain(HINSTANCE   hInstance, HINSTANCE   hPrevInstance, LPSTR   lpCmdLine, int nCmdShow)
{
      if(!InitWindowsClass(hInstance))         return  FALSE;
      if(!InitWindows(hInstance,nCmdShow))     return  FALSE;
      MSG   Msg;
      while(GetMessage(&Msg,NULL,0,0))//必须为空,代表主线程
           {
                TranslateMessage(&Msg);   DispatchMessage(&Msg);
           }
      return   Msg.wParam;
}long   WINAPI   WndProc(HWND   hWnd,UINT   uMsg,WPARAM   wParam, LPARAM  lParam)
{
       HDC   hDc;   HBRUSH   hBrush;  HPEN  hPen;   PAINTSTRUCT   pt_Struct;
       double      _radious=100.0,  radious;        POINT  pt[5],_pt[5],Tri[3];   
       radious=_radious*sin(0.1*Pi)/sin(126.0/180*Pi);
       for(int i=0;i<5;++i)
            {
                 pt[i].y=pt[i].x=(long)(_radious*cos(i*72.0/180*Pi));
                _pt[i].y=_pt[i].x=(long)(_radious*cos(i*72.0/180*Pi+36.0/180*Pi));
            }
       switch(uMsg)
           {
             case   WM_PAINT:
                       hDc=BeginPaint(hWnd,&pt_Struct);
                       SetMapMode(hDc,MM_ANISOTROPIC);     //设置映射模式!
                       SetWindowOrgEx(hDc,-100,-100,NULL);  //设置坐标原点!
                       hPen=CreatePen(PS_SOLID,1,RGB(0,255,0));
                       SelectObject(hDc,hPen);
                       Polygon(hDc,pt,5);
                       for(int i=0;i<5;++i)
                       {
                            Tri[0]=pt[i%5];   Tri[1]=_pt[i%5];  Tri[2]=pt[(i+1)%5];
                            hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));
                            SelectObject(hDc,hBrush);
                            Polygon(hDc,Tri,3);
                            Tri[2]=_pt[(1+4)%5];
                            hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));
                            SelectObject(hDc,hBrush);
                            Polygon(hDc,Tri,3);                            
                       }
                        hBrush=CreateSolidBrush(RGB(255,255,255));
                        SelectObject(hDc,hBrush);
                        Polygon(hDc,_pt,5);  
                        MoveToEx(hDc,pt[0].x,pt[0].y,NULL);
                        for(int i=0;i<5;++i)
                        {
                               hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
                               SelectObject(hDc,hPen);
                               LineTo(hDc,pt[(i+2)%5].x,pt[(i+2)%5].y);
                        }
                        hPen=(HPEN)(GetStockObject(PS_SOLID));
                        DeleteObject(hPen);DeleteObject(hBrush);
                        EndPaint(hWnd,&pt_Struct);
                         return 0;       
                         break;
             case   WM_DESTROY: PostQuitMessage(WM_QUIT);   break;
                default:    return   DefWindowProc(hWnd,uMsg,wParam,lParam);
           }
}BOOL   InitWindows(HINSTANCE   hInstance,int nCmdShow)
{
    HWND   hWnd;
    hWnd=CreateWindow( _T("Polygon"), _T("五边形"),WS_OVERLAPPEDWINDOW,
                        CW_USEDEFAULT,0,CW_USEDEFAULT,0  NULL,NULL,hInstance,NULL);      
    if(!hWnd)    return FALSE;    
    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);
                 return   TRUE;
}
BOOL   InitWindowsClass(HINSTANCE   hInstance) 
{
      WNDCLASS  wc;
      wc.cbClsExtra=0;   
      wc.cbWndExtra=0;
      wc.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);
      wc.hCursor=LoadCursor(NULL,IDC_ARROW);
      wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
      wc.hInstance=hInstance;
      wc.lpfnWndProc=WndProc;
      wc.lpszClassName= _T("Polygen");//“const char [8]”转换为“LPCWSTR”
      wc.lpszMenuName=NULL;
      wc.style=CS_HREDRAW|CS_VREDRAW; 
      return   RegisterClassW(&ws);
}error C2664: “RegisterClassW”: 不能将参数 1 从“overloaded-function”转换为“const WNDCLASSW *”望大家帮忙!
                 
      
     

解决方案 »

  1.   

     WNDCLASS  wc;   //  这里是WC
          wc.cbClsExtra=0;  
          wc.cbWndExtra=0; 
          wc.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH); 
          wc.hCursor=LoadCursor(NULL,IDC_ARROW); 
          wc.hIcon=LoadIcon(NULL,IDI_APPLICATION); 
          wc.hInstance=hInstance; 
          wc.lpfnWndProc=WndProc; 
          wc.lpszClassName= _T("Polygen");//“const char [8]”转换为“LPCWSTR” 
          wc.lpszMenuName=NULL; 
          wc.style=CS_HREDRAW ¦CS_VREDRAW; 
          return  RegisterClassW(&ws);  //这里WS