下面一段代码: long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,long lParam) 

int test=0; 
HDC hDC; 
HBRUSH hBrush; 
HPEN hPen; 
PAINTSTRUCT PtStr; 
POINT P[3]={(50,50),(50,100),(100,50)}; 
switch(iMessage) 

case WM_PAINT: 
hDC=BeginPaint(hWnd,&PtStr); 
SetMapMode(hDC,MM_TEXT); 
hPen=(HPEN)GetStockObject(BLACK_PEN); 
SelectObject(hDC,hPen); 
hBrush=CreateHatchBrush(HS_FDIAGONAL,RGB(255,0,0)); 
SelectObject(hDC,hBrush); MoveToEx(hDC,50,50,0); 
Polyline(hDC,P,3); 
return 0; 
case WM_DESTROY: 
PostQuitMessage(0); 
return 0; 
default: 
return(DefWindowProc(hWnd,iMessage,wParam,lParam)); 


我的想法是,画一个以 (50,50),(50,100),(100,50)为顶点的三角形,但是执行polyline之后总得不到想要的形状 
求指导

解决方案 »

  1.   

    如果只是画个三角形,那自己写个小函数,已知点坐标,直接MoveTo LineTo也是可以的,虽然笨点
      

  2.   

    POINT P[4]={(50,50),(50,100),(100,50),(50,50)};要四个点,起点和终点一致 
      

  3.   

    主要有两个问题,一个是POINT P[3]={(50,50),(50,100),(100,50)};这样初始化是不对的,照这样写,座标是错的,将里面的括号去掉,另我,要画封闭图形的话,起始点与结束点要相同,最后Polyline这个函数并不要用MoveTo来移动画笔,它是直接从P[0]开始画的.
    将上面的座标数组改成下面样子就行了:
    POINT P[4]={50,50,50,100,100,50,50,50};  
    最后将Polyline(hDC,P,3);改成Polyline(hDC,P,4);