33947553
小水手

UID 29654
精华
0
积分 2
帖子 2
阅读权限 10
注册 2007-2-2
状态 离线
|
程序调试通过,但不能运行,郁闷中!!
没有用到MFC,只是建了一个项目,然后加了一个C++文件
编译通过了,但是不能执行,
请高手指点!!
以下为 源代码。
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define PI 3.1415926
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT WParam,LONG lParam);
BOOL InitWindowsClass(HINSTANCE hInstance);
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow);
HWND hWndMain;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
MSG Message;
if (!InitWindowsClass(hInstance))
{
return false;
}
if (!InitWindows(hInstance,nShowCmd))
{
return false;
}
while (GetMessage(&Message,0,0,0))
{
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)
{
HDC hDC;
HBRUSH hBrush;
HPEN hPen;
PAINTSTRUCT ptStr;
double dfRadious0=100.0,dfRadious1;
POINT lpOuterPoints[5],lpInnerPoints[5];
POINT lpTriangle[3];
dfRadious1=dfRadious0*sin(0.1*PI)/sin(126.0/180*PI);
for (int i=0;i<5;i++)
{
lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*PI));
lpOuterPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*PI));
lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*PI+36.0/180*PI));
lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*PI+36.0/180*PI));
}
switch(iMessage) {
case WM_PAINT:
hDC=BeginPaint(hWnd,&ptStr);
SetMapMode(hDC,MM_ANISOTROPIC);
SetWindowOrgEx(hDC,-100,-100,NULL);
hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));
SelectObject(hDC,hPen);
Polygon(hDC,lpOuterPoints,5);
for ( i = 0;i<5;i++)
{
lpTriangle[0] = lpOuterPoints[i%5];
lpTriangle[1] = lpInnerPoints[i%5];
lpTriangle[2] = lpOuterPoints[(i+1)%5];
hBrush = CreateSolidBrush(RGB(i*10,i*20,i*30));
SelectObject(hDC,hBrush);
Polygon(hDC,lpTriangle,3);
lpTriangle[2]= lpInnerPoints[(i+4)%5];
hBrush = CreateSolidBrush(RGB(i*40,i*30,i*20));
SelectObject(hDC,hBrush);
Polygon(hDC,lpTriangle,3);
}
hBrush = CreateSolidBrush(RGB(255,255,255));
SelectObject(hDC,hBrush);
Polygon(hDC,lpInnerPoints,5);
MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL);
for ( i=1;i<5;i++)
{
hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
SelectObject(hDC,hPen);
LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);
}
hPen=(HPEN)(GetStockObject(PS_NULL));
DeleteObject(hPen);
DeleteObject(hBrush);
EndPaint(hWnd,&ptStr);
return 0;
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
}
BOOL InitWindows(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd = CreateWindow("Polygon","五边形",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,
CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if (!hWnd)
{
return FALSE;
}
hWndMain = hWnd;
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
BOOL InitWindowsClass(HINSTANCE hInstance)
{
WNDCLASS WndClass;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=WndProc;
WndClass.lpszClassName="Ploygon";
WndClass.lpszMenuName=NULL;
WndClass.style=0;
return RegisterClass(&WndClass);
}
|
|